前言
JavaScript: Best Practice 是 SitePoint 所出版的 the Modern JavaScript Collection 套書中的第三本。該套書共有四本:
- Practical ES6
- Modern JavaScript Tools and Skills
- JavaScript: Best Practice,本文所要介紹的書籍
- 6 JavaScript Projects
JavaScript 已經問世 20 多年了,在這段時間內,JavaScript 和網頁技術產生許多的變化。該系列書籍期望能帶來到西元 2018 年為止的最新實務。在 ES6 之後,JavaScript 變動快速,如何將這些新的特性整合進最佳實務中,就是程式人重要的課題。本書對此進行一些討論,給予讀者一定的啟發。
本書共 121 頁,分為 8 章,算是一本輕量級的書籍。我們接下來會逐一介紹各章節。
Chapter 1: The Anatomy of a Modern JavaScript Application
本章是對現代 JavaScript 程式設計的一個概論,包括以下議題:
- 在 ES6 以後的新語法特性
- Node.js 簡介
- 套件 (package) 管理
- 自動化建置 (build automation)
- 專案架構
- 發佈專案 (depolyment)
由於這系列書籍是套書,故本章放在此處。筆者認為本章應該放在第一本書的第一章才對。
Chapter 2: Clean Code with ES6 Default Parameters & Property Shorthands
本章介紹兩個讓程式碼更乾淨的新語法:
- Default parameters:用更乾淨的語法傳遞物件實字為變數
- Property shorthands:用更簡短的語法寫物件實字
這兩項特性都和物件實字相關,算是一些實用小技巧。
Chapter 3: JavaScript Performance Optimization Tips: An Overview
我們不能假定每個造訪我們網站或網頁程式的使用者都會用 iPhone X 這類高階手機;許多網站訪客僅使用中低階手機,我們應該優化我們的 JavaScript 程式,以接納更多潛在使用者。 註:仍需以團隊本身的市場考量為主。
本章提到一些優化的概念:
- 必要時才進行優化
- JavaScript 是直譯語言
- 我們引入的每個函式庫都可能會占用一定運算資源
- 壓縮程式碼的確可節省容量
這篇的內容偏向基礎,如果想學更多優化技巧仍需閱讀其他資料。
Chapter 4: JavaScript Design Patterns: The Singleton
本章以 ES6 的新語法實作 Singleton 模式,算是偏短的一章。經典的設計模式有 23 種,若再加上其他 JavaScript 特有的模式就有更多模式了。筆者以為,本章的份量稍嫌少了點,或許 SitePoint 日後可考慮對這方面的議題另出專書。
Chapter 5: JavaScript Object Creation: Patterns and Best Practices
本章介紹幾個建置 JavaScript 物件的方式:
- 物件實字
- 建構函式
- 承上,搭配原型鏈 (prototype chain) 以節約記憶體
- ES6 新增的
class
由於 class
的效能較佳,語法也易寫,應優先使用。
Chapter 6: Best Practices for Using Modern JavaScript Syntax
本章提示一些重要的概念:
- 學習基礎知識比追逐工具來得重要
- ES6+ 的新特性不僅是語法糖,有時會有行為上的差異
const
在某些情境下不是常數 (!)class
比傳統的建構函式來得簡單- 適時地用 arrow 函式可簡化程式碼
我們在學習 ES6+ 的特性時,要注意這些特性所要處理的議題及帶來的改變,而非盲目地使用。
Chapter 7: Flow Control in Modern JS: Callbacks to Promises to Async/Await
由於 JavaScript 以單線程運行,大量地使用非同步程式來增進其效能。但早期的非同步程式可能會寫出複雜的回呼程式,這現象戲稱為回呼地獄 (callback hell)。在 ES6 後,程式人可透過 promises 和 async
/await
來改善回呼程式的程式碼。本章介紹這兩種新特性及其應注意的事項。
Chapter 8: JavaScript's New Private Class Fields, and How to Use Them
本章介紹如何在類別中建立屬性,包括:
- 公開屬性
- 靜態屬性
- 私有屬性
在筆者撰文期間,私有屬性仍在提案階段,尚未完全穩定下來,目前筆者傾向先用其他手法來模擬這項特性。想嘗鮮的讀者可看看本章。
結語
最佳實務的書籍會比單純的語法書難寫,對於特性豐富、手法多變的 JavaScript 來說更是如此。讀這類書籍時,不應盲目地遵照其建議,而要去思考這些建議的脈絡,藉此建立自己的經驗。本書雖稱不上經典,仍具有一定的參考價值。
本書承襲 SitePoint 系列書籍輕薄短小的特性,閱讀一次應該不會花太久的時間。但 JavaScript 有許多的議題,僅以 120 多頁的份量是無法完整交待的,所以 the Modern JavaScript Collection 這個系列以四本書的容量來介紹 JavaScript,讀者可視自己的需求單獨購買或成套購買。