11.2 認識 Key-Value Pairs 觀念
Backbone.js 如何解決上一節 Step 4 所提到的問題呢?分述如下:
- 宣告 HTML5 Template:Backbone.js 內建 Underscore,我們可以使用 Underscore 來宣告 Template
- 將 JSON「套用」到 Template:使用 Key-Value Pairs 來做對應
JSON 的資料格式,又稱為是 “Key-Value Pairs” 的格式,例如:
{ "name": "jollen"}
與 Key-Value Pairs 的關係說明如下:
- name 是 “Key”,又可視為「變數」
- jollen 是 “Value”,也就是 name 這個 Key 的值
所以,在製作 Template 時,只要把 “Key” 當做變數的觀念,到時就可以直接「對應」了。例如:
<div>
<p>$name</p>
</div>
並且有一份 JSON 資料如下:
[
{ "name": "Peter"},
{ "name": "Paul"},
{ "name": "John"}
]
此時,Template Engine 就能直接把 Template 和 JSON 對應成以下的結果:
<div>
<p>Peter</p>
<p>Paul</p>
<p>John</p>
</div>
這麼方便的做法,是導入 Backbone.js 的第一個目的。這種將以 JSON 來表示 Key-Value Pairs 資料,並將 Key-Value Pairs 對應到 HTML5 Template 的觀念,就是一個被稱為「 ViewModel」的觀念。ViewModel 能解決的問題不止於此,這只是 View Model 觀念的一部份。
ViewModel 可以強化 MVC 模式中的 C(Controller),因此把它叫做 MVVM 模式。MVVM 模式是由微軟所提出的新概念,MVC & MVVM 也經常被放在一起討論。
從軟體工程的角度,把 MVC 架構模式加入了 Key-Value Pairs 觀念,可以達到以下目的:
- 讓 MVC 模式更為完整
- 用 View Model 來串連 Model 與 View,而不是用 Controller
- 如上,儘可能讓 View 與程式碼無關,又稱為 Code Ignorance
- 如上,讓 UI 設計是 Code Ignorance:讓做 UI 不用寫程式
簡單說,從上述的例子可以發現,UI 設計師只需要把 HTML5 Template 設計好即可,不需要寫程式,就可以將 Server 回傳的資料,顯示在畫面上。