構建基礎的JavaScript MVC——視圖和模板(二)

來源:互聯網
上載者:User

標籤:

一、動態視圖

  1、現在渲染視圖的方式基本上有2種
  (1)服務端產生好html;
  (2)用戶端渲染模板,服務端提供JSON資料介面。
  2、用戶端渲染視圖也有2種方式:
  (1)使用document.createElement建立Dom元素,然後追加到頁面;
  (2)預先定義HTML靜態視圖,在必要的時候顯示和隱藏HTML片段;

二、模板  

  1、現在,有很多模板可以選擇,比如Mustache、Underscore簡單模板、Handlebars、EJS等等。模板引擎簡單實用的方法,當然可以自己顯示一個小的模板引擎。模板文法也很簡單,例如:
  {{if}}
    ${url}
  {{/if}}
  或者
  <%if%>
    <%=name%>
  <%endif%>
  如果將後端的商務邏輯代碼和視圖渲染放到前端來做,建議使用模板引擎來做,儘管會浪費HTML片段,例如
  <script type="text/my-tpl">
    姓名是:<%=name%>
  </script>
  這段html程式碼片段是不會進行渲染的,只用當模板引擎得到資料和渲染模板時才會展現UI。這樣做的好處是可以將視圖和邏輯的分離,可以保證MVC的合理性以及提高代碼的維護性。

  2、模板放在哪裡
  (1)在js代碼中存在;
  (2)定義在script標籤內,如上例所示;
  (3)通過ajax拉取;
  (4)HTML行記憶體儲
  第(2)種方案還是有一定的優勢,可以保證MVC分離的同時不必像(3)一樣遠程拉取,消耗了連結;當然HTML行記憶體儲不僅可以直接渲染UI,還可以保證原始碼清晰;當然使用(2)方案更加靈活,程式更加容易維護和控制。

三、視圖和模型間的綁定

 1    用過AngularJS的雙向資料繫結一定很爽,簡直就是酸爽。當JS對象改變時能夠引起視圖的重新整理,而不必手動去管 2     理視圖的重新整理渲染。這裡的做法是將模型的更新立即通知視圖進行渲染。 3     例如: 4     var User = function(){ 5         this.name = name; 6     }; 7     //定義綁定 8     User.bind = function(event, callback){ 9         var calls = this._callbacks || (this._callbacks = {});10         (this._callbacks[event] || (this._callbacks[event] = [])).push(callback);11     };12     //事件觸發13     User.trigger = function(event){14         if(!this._callbacks) return this;15         if(!this._callbacks[evnet]) return this;16         var list = this._callbacks[evnet];17         $.each(list, function(){18             this();19         });20     };21     22     User.create = function(name){23         this.records.push(new this(name));24         this.trigger(‘change‘);25     };26     27     //綁定change事件28     $(function($){29         User.bind(‘change‘, function(){30             var tpl = ‘<li>test</li>‘;31             $(‘#list‘).empty();32             $(‘#list).append(tpl);33         });34     });

 

  

 

構建基礎的JavaScript MVC——視圖和模板(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.