標籤:函數 定義 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