最近讀完《編寫可維護(hù)的JavaScript》,讓我受益匪淺轧飞,它指明了編碼過程中,需要注意的方方面面撒踪,在團(tuán)隊(duì)協(xié)作中特別有用过咬,可維護(hù)性是一個(gè)非常大的話題,這本書是一個(gè)不錯(cuò)的起點(diǎn)制妄。
本書雖短援奢,卻五臟俱全,主要涵蓋:編程風(fēng)格(基本格式化忍捡、注釋、語句和表達(dá)式切黔、變量)砸脊,編程實(shí)踐(UI層松耦合、避免使用全局變量等)纬霞、自動(dòng)化凌埂,3個(gè)部分的內(nèi)容。
本文主要整理歸納了書中編程實(shí)踐
章節(jié)的核心內(nèi)容诗芜,其他兩章編碼風(fēng)格
和自動(dòng)化
部分瞳抓,還需結(jié)合當(dāng)前的流行趨勢重新整理埃疫,稍后再與大家分享。
第5章 UI層的松耦合
- Web開發(fā)三大要素孩哑,HTML(結(jié)構(gòu)栓霜、內(nèi)容),CSS(布局横蜒、樣式)胳蛮,JavaScript(交互、行為)
- 將JavaScript從CSS中抽離
- 將CSS從JavaScript中抽離
- 將JavaScript從HTML中抽離
- 將HTML從JavaScript中抽離
第6章 避免使用全局變量
- 導(dǎo)致問題:命名沖突丛晌、代碼的脆弱性仅炊、難以預(yù)測、意外的全局變量
- 單全局變量:依賴盡量少的全局變量澎蛛,即只創(chuàng)建一個(gè)全局變量
- 命名空間:將功能按命名空間分組抚垄,l例如:var oa30.doc.workflow = {};
- 模塊:將功能按模塊分組,常用異步模塊定義 Asynchronous Module Definition谋逻,簡稱AMD模式
- 零全局變量:簡單的功能呆馁,通過自執(zhí)行函數(shù),可避免創(chuàng)建全局變量(需使用嚴(yán)格模式)
第7章 事件處理
- 規(guī)則1:隔離應(yīng)用邏輯
- 規(guī)則2:不要分發(fā)事件對象
第8章 避免『空比較』
- 檢測原始值斤贰,常用typeof
- 檢測引用值:檢測函數(shù)用typeof智哀、檢測數(shù)組用Object.prototype.toString.call(value)===‘[Object Array]'
- 檢測屬性,最好使用in運(yùn)算符荧恍,只檢測實(shí)例對象的屬性瓷叫,則需配合使用hasOwnProperty()
第9章 將配置數(shù)據(jù)從代碼中分離出來
- 配置數(shù)據(jù)有:URL、重復(fù)的值送巡、需要展現(xiàn)給用戶的字符串摹菠、設(shè)置、可能發(fā)生變更的值
- 抽離配置數(shù)據(jù)骗爆,保存到單獨(dú)的文件中次氨,與邏輯代碼分開
第10章 拋出自定義錯(cuò)誤
- 為了兼容各個(gè)瀏覽器,請確保拋出的錯(cuò)誤是一個(gè)Error對象摘投,例如:throw new Error(‘i am a error.');
- 使用throw還是try-catch煮寡,錯(cuò)誤應(yīng)該在應(yīng)用程序棧中最深的部分拋出,業(yè)務(wù)邏輯代碼應(yīng)該有錯(cuò)誤處理的能力