JavaScript庫(kù) 開(kāi)發(fā)規(guī)則
1. 保持無(wú)侵入性 我的HTML標(biāo)記不想知道你的JavaScript代碼。
2. 嚴(yán)禁修改和擴(kuò)展Object.prototype! 這條很重要,因此需要一條完全針對(duì)它的規(guī)則。對(duì)象是JavaScript功能的基本構(gòu)建模塊,不要搞亂它們。
3. 不要過(guò)分?jǐn)U展 對(duì)JavaScript內(nèi)建對(duì)象的擴(kuò)展越少越好。別誤解我的意思。JavaScript的原生對(duì)象中有用的方法是有點(diǎn)少,有時(shí)不得不添加一兩個(gè)自己的方法。但是,對(duì)于富有創(chuàng)造力的(庫(kù))程序員來(lái)說(shuō),添加這“一兩個(gè)”方法是不夠的。然而,請(qǐng)停下來(lái)!添加需要的就好。你對(duì)JavaScript內(nèi)建對(duì)象的擴(kuò)展越少,你的代碼與其它框架產(chǎn)生的沖突的概率就越少。
4. 跟隨標(biāo)準(zhǔn) 作為一個(gè)庫(kù)的開(kāi)發(fā)者,你定義JavaScript代碼的模式。設(shè)計(jì)模式是編程語(yǔ)言能力弱的體現(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語(yǔ)言的創(chuàng)建者Brendan Eich, 還在持續(xù)開(kāi)發(fā)。和其它瀏覽器相比,在Mozilla瀏覽器中這些新的語(yǔ)言特性最先可用。 如果你想給JavaScript添加新的語(yǔ)言特性,可以先瞧瞧Mozilla標(biāo)準(zhǔn)。例如,你想給Array對(duì)象擴(kuò)展一個(gè)枚舉方法時(shí),最好把這個(gè)方法取名為forEach而不是each. 如果你的確想提供尚不存在的語(yǔ)言特性,那么請(qǐng)緊緊跟隨著現(xiàn)有的標(biāo)準(zhǔn)走(參考上面的例子)。
6. 保持靈活 如果我想修改行為而不改變你的源碼,這容易不?如果不夠容易,讓它更容易些。
7. 管理內(nèi)存 大家擔(dān)心內(nèi)存泄漏,你要盡力而為。
8. 淘汰瀏覽器嗅探 貌似瀏覽器廠商們將永遠(yuǎn)通過(guò)添加新特性來(lái)競(jìng)爭(zhēng);-) 作為庫(kù)的開(kāi)發(fā)者,你要跟得上最新的潮流。偶爾瀏覽一次Ajaxian是不夠的,你必須奴隸般地閱讀每一篇博客文章以找到下一個(gè)hack. 瀏覽器嗅探會(huì)上癮的。
9. 小巧更佳 各種JavaScript庫(kù)已經(jīng)成熟。某些庫(kù)已經(jīng)應(yīng)用在主流網(wǎng)站上。但并不是所有人都裝了2MBit的DSL帶寬,因此請(qǐng)保持庫(kù)的小巧。更好的做法是,提供一個(gè)打包頁(yè)面,允許按照我的需求有效地構(gòu)建自己的庫(kù)。
10. 第十條規(guī)則 Good ol' tenth rule(好像是一個(gè)口語(yǔ)用法,不知道怎么翻譯好). 你可以始終依賴第十條規(guī)則。這就是: 保持可預(yù)測(cè)。 我應(yīng)該可以猜到你的方法是用來(lái)干嘛的。如果我不知道某個(gè)方法的名字,也應(yīng)該能讓我猜出來(lái)。
11. 附加規(guī)則
文檔,惱人但絕對(duì)是需要去做的。
你用的命名空間越多,我就越難記住,就如你的電話號(hào)碼一樣。
記?。嚎赡苡袛?shù)百萬(wàn)人將執(zhí)行你的代碼。
相關(guān)文章
XDomainRequest之IE8和IE9發(fā)送跨域請(qǐng)求拒絕訪問(wèn)解決方法
這篇文章主要介紹了XDomainRequest之IE8和IE9發(fā)送跨域請(qǐng)求拒絕訪問(wèn)解決方法,需要的朋友可以參考下2023-06-06JavaScript求解最長(zhǎng)回文子串的方法分享
這篇文章主要為大家介紹了JavaScript求解最長(zhǎng)回文子串的幾種方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08TypeScript判斷兩個(gè)數(shù)組的內(nèi)容是否相等的實(shí)現(xiàn)
本文主要介紹了TypeScript?判斷兩個(gè)數(shù)組的內(nèi)容是否相等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11微信小程序?qū)崿F(xiàn)簡(jiǎn)單計(jì)算器
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)懞?jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04JavaScript判斷對(duì)象、數(shù)組是否包含某個(gè)屬性、某個(gè)值的方法
這篇文章主要給大家介紹了關(guān)于JavaScript判斷對(duì)象、數(shù)組是否包含某個(gè)屬性、某個(gè)值的相關(guān)資料,我們?cè)趯?shí)際的開(kāi)發(fā)過(guò)程中,經(jīng)常需要判斷對(duì)象/數(shù)組是否包含某個(gè)屬性或者某個(gè)值,需要的朋友可以參考下2023-09-09JS判斷元素是否在數(shù)組內(nèi)的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS判斷元素是否在數(shù)組內(nèi)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-03-03僅IE9/10同時(shí)支持script元素的onload和onreadystatechange事件分析
測(cè)試結(jié)果可以看出,IE9后已經(jīng)開(kāi)始支持script的onload事件了。一直以來(lái)我們判斷js文件是否已經(jīng)加載完成就是用以上的兩個(gè)事件。2011-04-04詳解怎么檢測(cè)和防止JavaScript死循環(huán)
最近工作中遇到了一些死循環(huán)導(dǎo)致的頁(yè)面卡死問(wèn)題,經(jīng)過(guò) trouble shooting 和代碼修復(fù)解決了問(wèn)題,所以下面這篇文章主要給大家介紹了怎么檢測(cè)和防止JavaScript死循環(huán)的相關(guān)資料,需要的朋友可以參考下2021-11-11