一步一步帶你分析 requirejs

來源:互聯網
上載者:User

標籤:函數   定義   main   requirejs   目錄   幹什麼   class   UI   pat   

詳細原始碼一共就2000多行,來看我這篇分析的同學應該都下載下來了,好了,話不多說,開始:

 

代碼的開頭就出現3個全域變數: requirejs, require, define

var requirejs, require, define;(function(global, setTimeout){ balababla......})(this, (typeof setTimeout === ‘undefined‘ ? undefined : setTimeout)))

  

require 和 define 大家應該都知道上幹什麼的,說實話,我是不知道的,在分析代碼的時候,我從來也沒用過這個架構,就聽過AMD,就來直接看源碼了。

如果你也不是很清楚,這2個變數是幹什麼的,我就來簡單介紹一下,懂得的同學要是發現我說錯了,希望指點我也一下。

 首頁面 index.html:

  注意src是引入我們的requirejs庫,  data-main:就是我們第一次用requrie的地方:

 

<html><head>    <title></title></head><body>  <script src="require.js" type="text/javascript" data-main="main.js"></script></body></html>

 main.js:

  這裡2個代碼塊都是依賴require的:

(1)require.config:配置

(2)requrie(); 載入需要的函數,注意裡面的 [‘name‘, ‘say‘],其實都是檔案名稱,它們都在./js/ 目錄下,具體看conifg

 

require.config({  baseUrl: ‘‘,  paths: {    ‘nameDep‘: ‘js/nameDep‘,    ‘say‘: ‘js/say‘,    ‘name‘: ‘js/name‘  },  shim: {    ‘name‘: {      deps: [‘nameDep‘]    }  }});require([‘name‘, ‘say‘], function (name, say) {  say(name);});

  

./js/name.js  和 ./js/say.js

//namedefine([‘‘], function () {  return ‘測試‘;});

  

//saydefine([], function () {  return function (name) {    console.log(name);  };});

  

最後注意在config中有個skim,這裡面也是定義js檔案的,只是由於他可能不符合AMD載入的規範

 ./js/nameDep.js

 

console.log("nameDep.js")

  

 

--------------------------------------分割線-------------------------------------------------------------------------

 

一步一步帶你分析 requirejs

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.