位元詩人 [書籍回顧] JavaScript: Best Practice 評價

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

JavaScript: Best Practice 是 SitePoint 所出版的 the Modern JavaScript Collection 套書中的第三本。該套書共有四本:

JavaScript 已經問世 20 多年了,在這段時間內,JavaScript 和網頁技術產生許多的變化。該系列書籍期望能帶來到西元 2018 年為止的最新實務。在 ES6 之後,JavaScript 變動快速,如何將這些新的特性整合進最佳實務中,就是程式人重要的課題。本書對此進行一些討論,給予讀者一定的啟發。

本書共 121 頁,分為 8 章,算是一本輕量級的書籍。我們接下來會逐一介紹各章節。

JavaScript: Best Practice

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,讀者可視自己的需求單獨購買或成套購買。

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。