knockoutJS學習筆記03:knockout簡介

  一般來講,前端的維護難度是比較大的,特別是腳本,雖然像jquery這樣的庫能夠幫助咱們減小不少代碼,但在稍微複雜的狀況下,仍是會產生有不少代碼。上一篇介紹了模板引擎jsRender,它能夠幫咱們快速生成html,減小代碼的編寫,加強代碼的可閱讀性和可維護性。但最後也說到,它仍是不夠強大。javascript

1、mvvmhtml

  說到mvvm,就想到之前學過的wpf,雖然學得通常...,對比winform,wpf 裏面有不少很好的設計和想法,標籤控件、數據驅動、依賴屬性... 。更關鍵的是,它是以數據爲核心,經過數據驅動UI。一般,數據在整個程序都佔着核心地位,咱們但願對數據進行操做,而不是對UI。前端

  假設一種最簡單的場景:有5個input text,咱們須要從後臺獲取數據而後爲它們賦值,而且能夠修改這些值從新提交到後臺。賦值:$(".class1").val(data1);$(".class2").val(data2);...。 獲取值:var data1 = $(".class1").val();var data2 = $(".class2").val();...。 能夠看到,若是操做多了,這種過程依舊很是繁瑣。java

  mvvm 是一種建立用戶界面的設計模式,解釋爲:模型-視圖-視圖模型。這三者的職責分別爲:jquery

  模型:表示業務領域的對象和數據操做。設計模式

  視圖:用於展現數據和交互的UI。瀏覽器

      視圖模型:包括與視圖相關的全部數據和可視化業務邏輯。一般咱們的模型不必定與UI一一對應,也就是說模型須要加工和處理後才能用於展現,視圖模型就是這個做用,把模型處理爲適合UI的模型。前端框架

  這裏舉一個例子:頁面有一個顯示人員信息的列表,包括修改和刪除兩個操做。app

  視圖:已經被咱們描繪出來了。框架

  模型:一個person實體對象,和修改、刪除兩個操做。

  視圖-模型:一個person列表,用於視圖綁定,包括修改和刪除兩個操做。

  以ui操做修改成例子,會觸發view-model裏修改操做,而這個操做會調用model裏的修改操做。

2、knockout

  knockout (簡稱ko)就是一個mvvm前端框架。

  引用官網的介紹:ko是一款很優秀的JavaScript庫,它能夠幫助你僅使用一個清晰整潔的底層數據模型(data model)便可建立一個富文本且具備良好的顯示和編輯功能的用戶界面。任什麼時候候你的局部UI內容須要自動更新(好比:依賴於用戶行爲的改變或者外部的數據源發生變化),ko均可以很簡單的幫你實現,而且很是易於維護。

  簡單的說,用了ko以後,ui和咱們的數據就綁定在一塊兒了,並且是雙向綁定。對於上面5個input text的例子,咱們徹底不用去操做dom就能夠實現賦值或獲取值操做。

  瀏覽器兼容性問題。微軟開發的,兼容全部主流瀏覽器,也兼容低版本ie。

  ko與 jquery。這二者自己是不衝突的,徹底能夠配合使用。例如在數據方面用ko,在動畫方面用jquery。

3、簡單例子

  寫了那麼多文字,看看一個簡單的例子。下載ko.js,代碼以下,能夠看到輕鬆完成數據綁定。

  html:

name:<input type="text" data-bind="value:name" />,age:<input type="text" data-bind="value:age" />
name:<span data-bind="text:name"></span>

  js:

    function Person(name,age){
    this.name = ko.observable(name);
    this.age = ko.observable(age);
  }
  var person = new Person("tom",18);
  ko.applyBindings(person);

4、總結

  理解mvvm的概念對於學習ko仍是很是重要的。下一篇將開始學習ko的相關語法。

相關文章
相關標籤/搜索