W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
使用 Sea.js 書寫模塊代碼時,需要遵循一些簡單規(guī)則。
只是書寫和調(diào)試時的規(guī)范?。。?gòu)建后的代碼完全不需要遵循下面的約定?。。。。?!
模塊 factory 構(gòu)造方法的第一個參數(shù) 必須 命名為 require
。
// 錯誤!define(function(req) { // ...});// 正確!define(function(require) { // ...});
不要重命名 require
函數(shù),或在任何作用域中給 require
重新賦值。
// 錯誤 - 重命名 "require"!var req = require, mod = req("./mod");// 錯誤 - 重定義 "require"!require = function() {};// 錯誤 - 重定義 "require" 為函數(shù)參數(shù)!function F(require) {}// 錯誤 - 在內(nèi)嵌作用域內(nèi)重定義了 "require"!function F() { var require = function() {};
}
require
的參數(shù)值 必須 是字符串直接量。
// 錯誤!require(myModule);// 錯誤!require("my-" + "module");// 錯誤!require("MY-MODULE".toLowerCase());// 正確!require("my-module");
在書寫模塊代碼時,必須遵循這些規(guī)則。其實只要把 require
看做是語法關(guān)鍵字 就好啦。
有時會希望可以使用 require
來進行條件加載:
if (todayIsWeekend) require("play");else
require("work");
但請牢記,從靜態(tài)分析的角度來看,這個模塊同時依賴 play 和 work 兩個模塊,加載器會把這兩個模塊文件都下載下來。 這種情況下,推薦使用 require.async
來進行條件加載。
這些約定初看起來會有些小不爽,其實也的確可以通過每次都編譯的方式來去掉這些限制。但編譯的方式,會給開發(fā)調(diào)試帶來麻煩,代碼的實現(xiàn)復雜度也會增加。Sea.js 的核心設(shè)計原則是保持簡單,遵循 New Jersey Approach:
簡單性:設(shè)計必須簡單,這既是對實現(xiàn)的要求,也是對接口的要求。實現(xiàn)的簡單要比接口的簡單更加重要。簡單是設(shè)計中需要第一重視的因素。
因為簡單,所以可靠!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: