成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用JS模板引擎、面向?qū)ο笠约笆纠a

移動(dòng)開發(fā)
頁(yè)面邏輯一旦復(fù)雜,比如需要有if判斷或者多層循環(huán)時(shí),這種連接字符串的方式就相形見絀了,而這也就催生出了JS模板引擎。通過上面這些工具的組合,我們有了模塊的概念,有了模板引擎,有數(shù)據(jù)的加載。最終還是要通過javascript將這一切組織在一起并加入應(yīng)用所需要的邏輯。為了能最大限度的復(fù)用代碼,用面向?qū)ο蟮姆绞饺ソM織內(nèi)容是比較好的選擇。

數(shù)據(jù)載入后,最終都會(huì)以某種形式顯示在頁(yè)面上。簡(jiǎn)單情況,我們可能會(huì)這樣做:

  1. $('body').append('<div>' + data.name + '</div>'); 

如果頁(yè)面邏輯一旦復(fù)雜,比如需要有if判斷或者多層循環(huán)時(shí),這種連接字符串的方式就相形見絀了,而這也就催生出了JS模板引擎。

主流的JS模板引擎有underscore.jsJadeEJS等等,可以橫向?qū)Ρ纫幌逻@些JS模板引擎的優(yōu)缺點(diǎn)

對(duì)于相對(duì)簡(jiǎn)單的頁(yè)面邏輯(只需要支持if和for/each)來說,我更傾向選用輕巧的underscore.js或者JavaScript Templates

在當(dāng)前例子中,使用underscore.js生成列表就非常簡(jiǎn)單了,頁(yè)面模板為:

  1. <ul data-role="listview" data-inset="true"> 
  2. <script id="tmpl-restaurants" type="text/template"> 
  3.     <% _.each(data, function(restaurant) { %> 
  4.         <li> 
  5.             <a href="#" data-rel="back" data-value="<%- restaurant.name%>"><%- restaurant.name%></a> 
  6.         </li> 
  7.     <% }); %> 
  8. </script> 
  9. </ul> 

調(diào)用引擎:

  1. $("#tmpl-restaurants").replaceWith( 
  2.     _.template($("#tmpl-restaurants").html(), { 
  3.         data : restaurants 
  4.     }) 
  5. ); 

面向?qū)ο笈c模塊化

通過上面這些工具的組合,我們有了模塊的概念,有了模板引擎,有數(shù)據(jù)的加載。最終還是要通過javascript將這一切組織在一起并加入應(yīng)用所需要的邏輯。為了能***限度的復(fù)用代碼,用面向?qū)ο蟮姆绞饺ソM織內(nèi)容是比較好的選擇。

JavaScript雖然原生并不支持面向?qū)ο螅且廊豢梢酝ㄟ^很多方式模擬出面向?qū)ο蟮奶匦浴@又胁捎昧宋覀€(gè)人比較喜歡的一種方式是:

  1. var foodOrder = function(ui, options){ 
  2.     //構(gòu)造函數(shù) 
  3.     this.init(ui, options); 
  4. foodOrder.prototype = { 
  5.    defaultUI :  { 
  6.        form : '#form-order' 
  7.    } 
  8.    , defaultOptions : { 
  9.        debug : false 
  10.    } 
  11.    , init : function(ui, options){ 
  12.        this.ui = $.extend({}, this.defaultUI, ui); 
  13.        this.options = $.extend({}, this.defaultOptions, options); 
  14.    } 
  15. var order = new foodOrder({ 
  16.     form : '#real-form' 
  17. }, { 
  18.     debug : true 
  19. }); 

將頁(yè)面的UI元素以及配置項(xiàng)目抽象出來,在實(shí)際構(gòu)造對(duì)象時(shí)則可以通過入口參數(shù)復(fù)寫,可以分離整個(gè)項(xiàng)目的邏輯與UI,使處理的方式更加靈活。

Web App***實(shí)踐示例代碼

依據(jù)此Web App開發(fā)***實(shí)踐所開發(fā)的App,基于HTML5 Boilerplate、requireJS、jQuery Mobile、Underscore.js,后端邏輯用jStorage模擬實(shí)現(xiàn)。完成后的成品在此。所有代碼可以在github查看。希望大家也能夠按照本系列教程開發(fā)出好用的Web App。

責(zé)任編輯:徐川 來源: avnpc.com
相關(guān)推薦

2014-04-30 12:04:43

Velocity.js模板引擎

2017-01-04 15:22:57

TrimPath模板引擎

2019-11-18 17:05:02

JavaScript面向?qū)ο蟪绦蚓幊?/a>Java

2016-10-11 15:42:08

2023-01-10 09:38:09

面向對(duì)象系統(tǒng)

2021-11-08 07:48:48

Go語言對(duì)象

2023-11-10 09:16:45

SpringBootThymeleaf

2010-03-18 13:43:40

python面向?qū)ο?/a>

2009-06-15 14:59:31

Java代碼Java

2021-02-03 09:36:36

Python

2009-01-04 09:08:30

面向?qū)ο?/a>繼承接口

2013-03-11 09:23:22

Go語言面向?qū)ο?/a>

2016-11-01 20:26:47

前端模板underscoreWeb

2009-10-09 10:52:43

ASP.NET模板引擎

2024-02-29 08:02:00

2022-07-30 23:41:53

面向過程面向?qū)ο?/a>面向協(xié)議編程

2009-11-13 14:22:11

ADO.NET Dat

2022-08-16 07:57:30

架構(gòu)

2017-03-10 18:29:17

Androidfreemarker應(yīng)用

2010-07-20 09:33:14

Perl方法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美日韩精选 | 福利电影在线 | 亚洲精品久久久久久宅男 | 九色在线观看 | 一二区成人影院电影网 | 可以免费观看的av片 | 99精品一区二区三区 | 特级a欧美做爰片毛片 | 欧美专区日韩专区 | 日日射夜夜骑 | 国产精品视频免费观看 | 国产精品国产精品 | 亚洲精品v | 盗摄精品av一区二区三区 | 欧美激情免费在线 | av一区二区三区四区 | 国产午夜精品一区二区 | 欧美视频在线免费 | 情侣酒店偷拍一区二区在线播放 | 久久久精 | 国产精品五区 | 亚洲国产区 | 一区亚洲 | 欧美日韩在线高清 | 一区二区三区亚洲 | 欧美 日韩 亚洲91麻豆精品 | 欧美国产精品久久久 | 91一区二区| 巨大荫蒂视频欧美另类大 | 久久成人免费 | www日本在线观看 | 在线观看第一页 | 天天综合久久 | 北条麻妃国产九九九精品小说 | 综合色久 | 777zyz色资源站在线观看 | 日韩高清国产一区在线 | 精品久久不卡 | 日韩三级精品 | 天天射网站 | 国产欧美精品 |