《0 陷阱!0 誤解!8 天重新認識 JavaScript!》讀書心得

應該說是雜到不行的雜感

Greta Ma
馬格蕾特的樹洞
4 min readNov 8, 2019

--

圖片來自天瓏網路書店

我真的花了 8 天看完這本書。

雖然這本書 9 月就出版了,但我一直到最近開始學 Vue 才買來看。說來慚愧,在它出版前,我就已經在查資料的時候拜讀過好幾篇了,在我今年參加鐵人賽的前言中也有提到,Kuro 大這系列的文章幫助我很多,甚至是我認識 IT 邦幫忙的起點,結果居然沒有一出版就買,可見是對 Kuro 大的信仰不夠。(?)

會決定買來看,起因是因為 Vue 這個框架是 MVVM 模式,但我搞不懂 MVVM 跟 MVC 的差別,想說這本書裡面會不會寫到呢?就跑去書局翻一翻,不得了,一翻開書剛好就是「MV* 框架的出現與開發思維的轉變」的小節。就是這麼剛好,我真的沒唬爛,於是我相信這就是老天爺要我買這本書回家的暗示。

總結來說,這本書是寫給已經對 JavaScript 有基礎認識,或者說有一定的資訊科學底子的人看的,因為作者講到一些不是專屬於 JavaScript 這門程式語言的概念時,不太會停下來深入解釋。以我自己來說,我是對 JavaScipt 有粗淺了解但沒有資工底子的人,前四章看得都還算輕鬆,從第五章開始介紹 Callback hell and Promise、物件、原型鍊、Class 語法糖就開始越來越吃力了。

不過我還是獲益良多,很多已經有基本概念的知識經過作者再次演繹,都讓我對 JavaScript 有更深入的了解。而那些比較吃力的部分,我還是有認真瀏覽過一遍,讓腦中對這些知識有一個大略的印象,等到吸收更多知識後再回頭來看,應該就會恍然大悟了,這種經驗我常常有。

以上就是我大致上的閱讀感想,接下來舉幾個我在書裡面新得到的知識好了。

關於 Callback 及 Promise

  • 「同步」的意思是先完成 A 任務才能做 B、C、D 任務,「非同步」的意思是 A、B、C、D 等任務可以同時進行。
  • Callback function 就是其他函式的參數,它需要透過那個函式來呼叫,才會執行。
  • 假設我們有 A、B 兩個函式,由於 JS 是非同步語言,所以 A 跟 B 會同時執行。但如果我們希望 A 函式執行完才執行 B 函式的話,就可以把 B 函式當作 A 函式的參數,此時 B 就是 Callback function。
  • 當我們有大量的函式都想要依照特定順序來執行時,Callback Hell 就出現了。
  • ES6 新增了一個叫做 Promise 的物件,可以解決上述的問題。
  • 在要賦予 Promise 功能的函式中 return 一個用 new 宣告的 Promise 物件,Promise() 小括號中要帶入另一個函式且該函式有 resolve 及 reject 兩個參數。在該函式中寫入要執行的任務,以及操作成功或操作失敗時要回傳的值。操作成功的值要寫在 resolve() 內,操作失敗的值要寫在 reject() 內。
  • 讓多個函式依序執行的方法:讓每個函式都回傳 Promise,最後用 .then() 串連及呼叫。例如,func1.then(func2).then(func3)。

關於 MVC 及 MVVM

  • MVC 模式:MVC 是一種很經典的網頁開發模式(未分離前後端),M 是指 Model,用來取得資料;V 是 View,也就是網頁畫面;C 是指 Controller(控制器),用來轉接資料。
  • MVC 的運作流程:當使用者想看特定的資料,就會發送請求訊息給控制器,控制器處理完邏輯後會將這個請求轉達給 Model 索取資料,Model 收到請求後就會從資料庫取出符合條件的資料,連同畫面應該呈現的樣式,一併回傳到 View。
  • 前端 MVC 與後端 MVC 有著一個很大的差異:前端的 MVC 著重在事件流程,而後端的重點在於資料流。後端 MVC 的 View 就相當於是前端的全部。
  • MVVM 模式:M 是指 Model,為開發者操控的資料,V 是指 View,為呈現在網頁上的外觀,VM 是指 ViewModel,用來執行資料及外觀自動綁定(中文叫資料繫結器)。
  • 當前後端分離後,後端幾乎不需要去處理 View 的部分。後端的 V 變成前端的 M,那些原本放在後端處理畫面、邏輯的部分,其實很大程度地往前端移動。於是前端框架慢慢發展成 MVVM 模式。

書中還有很多精彩的重點,我就不一一列舉了。總之我很推薦想更深入了解 JavaScript 的人買書來看,尤其作者把版稅全數捐給動保組織,可以學到技術又能做公益,是不是很一舉兩得呢~

--

--

Greta Ma
馬格蕾特的樹洞

正一類,大學一畢業就去當公務員,中間因緣際會轉職為前端工程師,之後又再任公職。這就是終點了嗎?我不那麼覺得。