Module 即子產品,來看下RequireJS怎麼定義 Module :
1. 簡單的名值對
?
|
2. 定義成一個Function
|
3. 如果 Module 需要依賴别的子產品,可以寫成這樣:
|
4. 隐式依賴Function
|
上面這四種比較常用,RequireJS 中的 Module 還有其他的形式,具體可參閱官方文檔。
上面四種方式都用到了define(),接下來我們就來看下define的源碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | |
define() 有三個參數,不傳 name 參數表示為匿名子產品,匿名隻是寫法上的匿名,RequireJS 可以通過檔案路徑确定 moduleName,是以最好别傳 name 參數,這樣檔案目錄即使有變動,也不會影響子產品的正常使用。
這裡 callback 參數命名很不好,一般都會叫做factory,取名 callback 完全不知所雲。
所謂的 define 是幹嘛的呢 ?