亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

放棄用你的InnerHTML來輸出HTML吧 jQuery Tmpl不詳細講解

2019-11-20 22:47:50
字體:
來源:轉載
供稿:網友
在Ajax橫道的今天,我們在頁面交互上有了更高的要求,動態生成HTML毫無疑問是其中的一種。動態生成HTML的方式多種多樣,其核心不外乎在前段(JS)或者后端(C#/PHP…)將數據組裝成我們想要的模版,最終通過一定的方法輸出給用戶(innerHTML、documentWrite等方式)。

缺點

1)拼接字符串的過程容易出錯,常常忘了'/”>等匹配的符號。
2)修改前臺模版的同時容易遺忘同步更改動態生成的模版。
3)拼接字符串不直觀和美觀,不利于查找錯誤,例如:數據中如果存在HTML內容,會導致種種麻煩。
4)不能滿足較高的業務邏輯需求,處理判斷較為麻煩,例如:當A情況生成X模版,B情況生成Y模版。
5)復用性低,較為相似的模版難以公用。

需求

1)簡單,直觀的模版
2)易于維護(方便查找錯誤,有代碼著色等)
3)模版的可復用性
4)處理一定的邏輯判斷

解決方案

基于以上的缺點,jQuery Tmpl這個插件能夠很好的滿足了我們的需求。使用這種新型的模版技術僅僅需要引入jQuery Tmpl這個插件而已。該插件十分小巧(5.97KB),對于性能的影響并不大。而且據聞這個插件是Microsoft開發的,對于ASP.NET MVC的友好度是大大的。 點擊這里進去項目地址

 

image

通過圖片我們能夠很直觀的看到Tmpl的工作原理,我們僅僅需要提供數據和模版。數據我們能夠通過后臺的Json方法直接傳到前臺,而模版則是接下來要講的東西了。

1)模版代碼寫在哪里?

復制代碼 代碼如下:

<script type="text/x-jquery-tmpl" id="testTemplate">
    /*模版代碼*/
</script>

我們可以看到其實模版代碼的容器就是我們的<script>標簽,不過type類型是'text/x-jquery-tmpl'而不是我們平常用的'text/javascript'而已,type類型難記?沒關系,在Visual Studio2012中已經有了這個類型的智能提示了(沒有驗證過2010)。

2)模版的語法

我把jQuery Tmpl的語法分為三大類:

1.顯示類:

{{html }} / {{= }} / ${ },這三個標簽都能夠將數據輸出到模版中,但是{{html}}不會對數據進行編碼,用于輸出數據中的HTML代碼段的,而{{=}}和${}則會對數據進行編碼,防止數據對于模版結構的破壞。

模版代碼:image
數據及JS代碼:image
頁面效果:image

當我們把data里面的name的值換成一段HTML'<a 就可以看到{{html }} / {{= }} / ${ }的區別了。

頁面效果:image

由此我們可以見得使用{{html}}來輸出模版里面的內容是帶有一定的風險的(XSS攻擊),所以在非確定數據的安全性下最好還是使用${}來輸出內容既簡單又簡潔。當然直接輸出內容遠遠不能滿足我們的要求,如果能夠調用函數來處理一下輸出結果就更棒啦!

模版代碼:image
函數代碼:image
頁面效果:image
2.條件判斷及循環:

{{if}} / {{else}} / {{/if}} / {{each}} 請注意是沒有for / while / switch的,相對于來說jQuery Tmpl只支持較為簡單的邏輯判斷,當然如果你感覺這些滿足不了你的需求的話,可以自己寫函數然后再調用。給一個簡單的例子來說明一下:

模版代碼:image
數據及JS代碼:image
頁面輸出:image

在代碼中我們可以注意到{{each}}是有兩種寫法的,如果不在each后面加(i, v)時在{{each}}代碼塊中使用$value特指當前項的值,而你需要項的序號則可以使用{{each(i, v) }}其中i代表當前項的次序、v代表當前項的值。如果你的條件判斷比較復雜則可以使用函數來判斷(完全和JS一樣)

例如:imageimage效果是和上面的完全一樣。

3.復用類

{{temp}}  當分支模版過長(寫在一個模版中較為混亂)或者使用已經寫好的通用模版,{{temp}}的作用就是調用指定ID模版來顯示數據。

模版代碼:image

這個模版的最終效果和之前的完全一樣,不過分別區分獨立開來。提高了代碼的可閱讀性和復用性。在這里只是一次性調用其他模版,如果想循環調用呢?例如在例子當中輸出興趣愛好那樣。讓我們來看看代碼應該如何寫。

模版代碼:image

其中在eachTemplate模版中用$data來特指傳進來的遍歷項的值。怎么樣感覺還是相當方便的吧^_^。

{{wrap}}使用于指定模版來包含當前模版,類似于指定母版頁當前模版則屬于子頁面。

模版代碼:image
頁面效果:image

我們可以看出'wrapTemplate'的功效就是作為公共部分,在模版中用{{html $item.html}}來輸出子頁面的HTML內容。
其中$item.html還具備一定的篩選功能。

模版代碼:image
頁面效果:image

可以看到在這里只輸出了第二個P。$item.html方法還有一個選項$item.html( filter, textOnly ),textOnly為bool值如果為true則只會輸出元素的文字而忽略它原有的元素標簽。

模版代碼:image
頁面效果:image

可以看到strong元素沒有了加粗效果只有文字。

總結

其實在使用過程當中并不會經常運用到模版的一些高級功能,本文章也僅僅是介紹了一些關于jQuery Tmpl的基礎性的東西。使用這個插件能夠給我們帶來的好處實在不少,之前我在動態輸出HTML代碼段的時候(在JS文件中拼接字符串)經常修改了前臺頁面而忘記修改JS中的拼接字符串,導致經常出些莫名其妙的錯誤,而且在多個分支判斷下拼接字符串的劣處體現的更加明顯,現在的話我會把Tmpl模版的代碼就放在前臺頁面要生成代碼的地方,這樣就大大減少了錯誤的發生啦!

以上的內容并沒有涉及到與ASP.NET的交互,以及更多的一些高級應用技巧,如果大家反映良好就會專門寫一篇結合ASP.NET MVC的應用文章啦~^_^

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美做爰性生交视频| 懂色av一区二区三区| 91久久国产综合久久91精品网站| 国产精品一区二区久久精品| 91精品国产高清久久久久久91| 亚洲欧洲第一视频| 亚洲国产精品悠悠久久琪琪| 欧美成人久久久| 国产精品一区二区三| 日韩精品高清在线| 91高清视频免费观看| 亚洲欧洲在线观看| 91国内免费在线视频| 久久亚洲国产成人| 日韩欧美国产视频| 国产精品揄拍一区二区| 日韩美女主播视频| 久久在线观看视频| 欧美黄色成人网| 色琪琪综合男人的天堂aⅴ视频| 国产精品第七十二页| 亚洲色在线视频| 中文字幕精品一区久久久久| 国产区亚洲区欧美区| 亚洲激情视频在线观看| 亚洲精品色婷婷福利天堂| 亚洲精品理论电影| 欧美一级片久久久久久久| 懂色av中文一区二区三区天美| 久久久久亚洲精品国产| 亚洲国产精品成人av| 亚洲一区二区三区毛片| 久久香蕉精品香蕉| 国产精品国产三级国产aⅴ9色| 91免费在线视频网站| 成人免费在线网址| 亚洲男人的天堂网站| 欧美激情一级欧美精品| 亚洲人成电影网站色| 综合激情国产一区| 欧美日韩国产一区在线| 国产成人精品亚洲精品| 国产婷婷色综合av蜜臀av| 成人字幕网zmw| 欧美色欧美亚洲高清在线视频| 亚洲春色另类小说| 伊人成人开心激情综合网| 亚洲高清色综合| 亚洲第一国产精品| 青青草一区二区| 尤物yw午夜国产精品视频明星| 久久人人爽人人爽人人片av高清| 亚洲激情视频在线观看| 欧美日韩国产成人在线观看| 欧美激情一级二级| 日韩av一卡二卡| 欧美成人国产va精品日本一级| 青青草原一区二区| 久久精品国产欧美激情| 久久亚洲欧美日韩精品专区| 亚洲高清av在线| 久久久999精品| 久久亚洲综合国产精品99麻豆精品福利| 久久久女人电视剧免费播放下载| 国产69精品久久久| 欧美日韩第一视频| 国产精品日韩久久久久| 亚洲成人激情在线| 欧美大成色www永久网站婷| www.美女亚洲精品| 国产又爽又黄的激情精品视频| 成人做爰www免费看视频网站| 激情亚洲一区二区三区四区| 川上优av一区二区线观看| www.欧美免费| 国产乱人伦真实精品视频| 98午夜经典影视| 国产美女扒开尿口久久久| 国内精品久久久久伊人av| 国产精品夜色7777狼人| 精品视频9999| 一区二区成人精品| 色婷婷久久一区二区| 97碰在线观看| 国产午夜精品美女视频明星a级| 国产精品成人在线| 久久国产精品电影| 久久精品99久久香蕉国产色戒| 91精品国产九九九久久久亚洲| 国产精品美女av| 成人精品一区二区三区电影免费| 久久免费视频在线| 91夜夜揉人人捏人人添红杏| 亚洲网址你懂得| 两个人的视频www国产精品| 亚洲精品一区在线观看香蕉| 色偷偷av一区二区三区乱| 97超级碰碰碰| 欧美亚洲国产视频| 欧美激情精品在线| 国产亚洲欧洲高清| 日韩精品黄色网| 日韩有码在线电影| 亚洲第一福利在线观看| 欧美在线亚洲在线| 欧美黑人一级爽快片淫片高清| 中文字幕日韩av电影| 国产精品第三页| 日韩h在线观看| 欧美综合一区第一页| 成人黄色网免费| 91精品国产免费久久久久久| 精品久久久久久久久久久久久久| 欧美性xxxx| 668精品在线视频| 国产69精品99久久久久久宅男| 精品福利在线视频| 91久久精品国产91久久性色| 日本成人黄色片| 精品偷拍一区二区三区在线看| 午夜欧美大片免费观看| 欧美性视频精品| 亚洲精品动漫久久久久| 国产在线观看精品一区二区三区| 久久综合伊人77777尤物| 久久夜精品香蕉| 中文字幕免费精品一区高清| 国产精品h片在线播放| 亚洲小视频在线观看| 91av免费观看91av精品在线| 久久在线精品视频| 亚洲国产精品va| 亚洲欧美色婷婷| 庆余年2免费日韩剧观看大牛| 欧美天天综合色影久久精品| 色青青草原桃花久久综合| www.99久久热国产日韩欧美.com| 国产精品成人va在线观看| 欧洲s码亚洲m码精品一区| 亚洲成在人线av| 成人国产在线视频| 国产97人人超碰caoprom| 日韩乱码在线视频| 美女av一区二区三区| 日本成熟性欧美| 日韩亚洲一区二区| 久久视频免费在线播放| 日日狠狠久久偷偷四色综合免费| 亚洲免费视频网站| 国产91精品久久久| 欧美亚洲视频在线观看| 欧美性极品少妇精品网站| 91精品久久久久久久久久久久久| 日本一区二区在线播放| 国产精品久久久久久久久久久久久久| 成人免费淫片视频软件| 色婷婷久久一区二区| 日韩经典第一页| 日韩成人中文字幕| 视频在线一区二区| 影音先锋日韩有码| 欧美在线视频一二三| 欧美理论电影网| 亚洲天堂一区二区三区|