核心提示:JavaScript庫開發(fā)者們的規(guī)則1. 保持無侵入性 我的HTML標(biāo)記不想知道你的JavaScript代碼。 2. 嚴(yán)禁修改和擴(kuò)展Object.prototype! 這條很重要,因此需要一條完全針對(duì)它的規(guī)則。對(duì)象是JavaScript功能的基本構(gòu)建模塊,不要搞亂它們。 3. 不要過分?jǐn)U展 對(duì)JavaScript內(nèi)建對(duì)象的擴(kuò)展越少越好。別誤解我的意思。JavaScript的原生對(duì)象中有用的方法是有點(diǎn)少,有時(shí)不得不添加一兩個(gè)自己的方法。但是,對(duì)于富有創(chuàng)造力的(庫)程序員來說,添加這“一兩個(gè)”方法是不夠的。然而,請(qǐng)停下來!添加需要的就好。你對(duì)JavaScript內(nèi)建對(duì)象的擴(kuò)展越少,你的代碼與其它框架產(chǎn)生的沖突的概率就越少。
4. 跟隨標(biāo)準(zhǔn) 作為一個(gè)庫的開發(fā)者,你定義JavaScript代碼的模式。設(shè)計(jì)模式是編程語言能力弱的體現(xiàn)。 記住,JavaScript和DOM還在不斷地被規(guī)格化。如果你想“修正”某些東西,最好先看看是否已經(jīng)被修正,考慮已有的解決方案。 如果你跟隨標(biāo)準(zhǔn),就緊緊的跟著標(biāo)準(zhǔn)走(比如:別遺漏了forEach 方法的某個(gè)參數(shù))。
5. 或著跟隨主導(dǎo) Mozilla引領(lǐng)著JavaScript. JavaScript語言的創(chuàng)建者Brendan Eich, 還在持續(xù)開發(fā)。和其它瀏覽器相比,在Mozilla瀏覽器中這些新的語言特性最先可用。 如果你想給JavaScript添加新的語言特性,可以先瞧瞧Mozilla標(biāo)準(zhǔn)。例如,你想給Array對(duì)象擴(kuò)展一個(gè)枚舉方法時(shí),最好把這個(gè)方法取名為forEach而不是each. 如果你的確想提供尚不存在的語言特性,那么請(qǐng)緊緊跟隨著現(xiàn)有的標(biāo)準(zhǔn)走(參考上面的例子)。
6. 保持靈活 如果我想修改行為而不改變你的源碼,這容易不?如果不夠容易,讓它更容易些。
7. 管理內(nèi)存 大家擔(dān)心內(nèi)存泄漏,你要盡力而為。
8. 淘汰瀏覽器嗅探 貌似瀏覽器廠商們將永遠(yuǎn)通過添加新特性來競(jìng)爭(zhēng);-) 作為庫的開發(fā)者,你要跟得上最新的潮流。偶爾瀏覽一次Ajaxian是不夠的,你必須奴隸般地閱讀每一篇博客文章以找到下一個(gè)hack. 瀏覽器嗅探會(huì)上癮的。
9. 小巧更佳 各種JavaScript庫已經(jīng)成熟。某些庫已經(jīng)應(yīng)用在主流網(wǎng)站上。但并不是所有人都裝了2MBit的DSL帶寬,因此請(qǐng)保持庫的小巧。更好的做法是,提供一個(gè)打包頁面,允許按照我的需求有效地構(gòu)建自己的庫。
10. 第十條規(guī)則 Good ol’ tenth rule(好像是一個(gè)口語用法,不知道怎么翻譯好). 你可以始終依賴第十條規(guī)則。這就是: 保持可預(yù)測(cè)。 我應(yīng)該可以猜到你的方法是用來干嘛的。如果我不知道某個(gè)方法的名字,也應(yīng)該能讓我猜出來。
11. 附加規(guī)則
文檔,惱人但絕對(duì)是需要去做的。
你用的命名空間越多,我就越難記住,就如你的電話號(hào)碼一樣。
記住:可能有數(shù)百萬人將執(zhí)行你的代碼。