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