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

世界上最好用的純前端模板(沒有之一)

開發(fā) 前端
隨著Ajax技術(shù)的普及,純前端模板的使用頻率越來越高。我們需要一個易學(xué)、易用、高性能的模板系統(tǒng)來處理日益繁雜的需求變化。本文就向你推薦一款世界上最好用的純前端模板(沒有之一)。

隨著Ajax技術(shù)的普及,純前端模板的使用頻率越來越高。我們需要一個易學(xué)、易用、高性能的模板系統(tǒng)來處理日益繁雜的需求變化。

前端模板處理,有90%以上的情況都是在處理html相關(guān)字符串,針對這一特性我們設(shè)計了一種只包含html和js兩種語法的模板系統(tǒng)AceTemplate。

對于前端開發(fā)者,html和js是無需額外的學(xué)習(xí)成本。

特點(diǎn)

  1. 易學(xué)(只需html和js基礎(chǔ)),易用(最少的輸入)
  2. 智能(自動識別語法、標(biāo)識符)
  3. 擴(kuò)展便捷

語法

以行為單位,分為兩種html行和js行,自由穿插

判斷是否為html行的規(guī)則

◆ 特殊字符開頭;

示例:

  1. 漢字、#{value}、<div> 

◆ Html標(biāo)記結(jié)尾;

示例:

  1. >src="1.gif" /> 

◆ 沒有“雙引號、單引號、分號、逗號,大小括號”,不是else等單行語句;

示例:

  1. hello world 

◆ Html屬性;

示例:

  1. a="12"a='ab' b="cd" 

◆ 樣式表達(dá)式。

示例:

  1. div.focus{color: #fff;}、#btnAdd span{} 

html行負(fù)責(zé)輸出內(nèi)容

兩種表達(dá)式輸出;#{表達(dá)式}和!#{表達(dá)式}

#{表達(dá)式} 采用html字符串編碼輸出,默認(rèn)規(guī)避xss漏洞

!#{表達(dá)式} 采用原文字符串編碼輸出

js行負(fù)責(zé)邏輯處理

方法

format

格式化輸出

  1. /**  
  2.  * 格式化輸出  
  3.  * @param {String|Element} id 模板ID或是模板本身(非標(biāo)識符將識別為模板本身)  
  4.  * @param {Object} data 格式化的數(shù)據(jù)  
  5.  * @param {Object} helper 附加數(shù)據(jù)(默認(rèn)為模板對象)  
  6.  */  
  7. AceTemplate.format = function(id, data, helper) 

register

注冊模板

  1. /**  
  2.  * 注冊模板,如果沒有參數(shù)則是注冊所有script標(biāo)簽?zāi)0? 
  3.  * @param {String} id 模板ID  
  4.  * @param {Element|String} target 模板對象或者是模板字符串,如果沒有則默認(rèn)獲取id對應(yīng)的DOM對象  
  5.  */  
  6. AceTemplate.register = function(id, target) 

unregister

注銷模板

  1. /**  
  2.  * 注銷模板  
  3.  * @param {String} id 模板ID  
  4.  */  
  5. AceTemplate.unregister = function(id) 

例子

輸入輸出用例

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/case.html

調(diào)試:http://jsfiddle.net/zswang/hA7Jd/

◆ 集中測試。

  1. <html> 
  2.         <head> 
  3.                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  4.                 <script src="../../scripts/ace-template.js"></script> 
  5.                 <title>ace template examples</title> 
  6.                   
  7.                 <style type="text/css"> 
  8.                         #log{  
  9.                                 width: 600px;  
  10.                                 height: 400px;  
  11.                         }  
  12.                 </style> 
  13.         </head> 
  14.         <body> 
  15.                 <textarea id="log"></textarea> 
  16.                 <script id="t1" type="text/template"> 
  17.                         if (this["title"])   
  18.                         {  
  19.                                 #{title}  
  20.                         }  
  21.                         else  
  22.                         {  
  23.                                 <b></b> 
  24.                         }  
  25.                 </script> 
  26.                   
  27.                 <script> 
  28.                         (function() {  
  29.                                 var log = document.getElementById("log");  
  30.                                 var list = [  
  31.                                         {  
  32.                                                 input: ["#{this}", "<b>b</b>"],  
  33.                                                 output: "&lt;b&gt;b&lt;/b&gt;"  
  34.                                         },  
  35.                                         {  
  36.                                                 input: ["!#{this}", "<b>b</b>"],  
  37.                                                 output: "<b>b</b>"  
  38.                                         },  
  39.                                         {  
  40.                                                 input: ["#{title}#{size}", {  
  41.                                                         title: "t"  
  42.                                                 }],  
  43.                                                 output: "t"  
  44.                                         },  
  45.                                         {  
  46.                                                 input: ["#{title}#{size + 2}", {  
  47.                                                         title: "t"  
  48.                                                 }],  
  49.                                                 error: true  
  50.                                         },  
  51.                                         {  
  52.                                                 input: ["#{1 + 2 + 3 + 4}"],  
  53.                                                 output: "10"  
  54.                                         },  
  55.                                         {  
  56.                                                 input: ["t1"],  
  57.                                                 output: "\t\t\t\t<b></b>\n"  
  58.                                         }  
  59.                                 ];  
  60.                                   
  61.                                 var message = [];  
  62.                                 for (var i = 0; i < list.length; i++) {  
  63.                                         var item = list[i];  
  64.                                         try {  
  65.                                                 var output = AceTemplate.format(item.input[0], item.input[1]);  
  66.                                                 if (output == item.output) {  
  67.                                                         message.push("√" + i + "輸出結(jié)果符合預(yù)期。");  
  68.                                                 } else {  
  69.                                                         message.push("×" + i + "輸出結(jié)果不符合預(yù)期。-- " + output);  
  70.                                                 }  
  71.                                         } catch(ex) {  
  72.                                                 if (item.error) {  
  73.                                                         message.push("√" + i + "異常符合預(yù)期。");  
  74.                                                 } else {  
  75.                                                         message.push("×" + i + "異常不符合預(yù)期。-- " + ex.message);  
  76.                                                 }  
  77.                                         }  
  78.                                 }  
  79.                                 log.value = message.join("\n");  
  80.                         })();  
  81.                 </script> 
  82.         </body> 
  83. </html> 

示例普通循環(huán)用法

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/base1.html

調(diào)試:http://jsfiddle.net/zswang/S3rwL/

◆ 模板中的this代表數(shù)據(jù)本身,即format的data參數(shù);

◆ 邏輯部分用js,輸出部分用html,#{表達(dá)式}為變量替換。

示例和jquery混用

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/base2.html 調(diào)試:http://jsfiddle.net/zswang/dehd6/

◆ 邏輯部分和輸出部分將編譯成一個完整的js函數(shù)塊。

示例默認(rèn)防止XSS漏洞

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/secuity1.html

調(diào)試:http://jsfiddle.net/zswang/aXKQA/

◆ 輸出表達(dá)式默認(rèn)采用html編碼;

◆ 也可以使用!#{表達(dá)式}輸出原文。

示例嵌套模板

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/nesting1.html

調(diào)試:http://jsfiddle.net/zswang/YJWZA/

◆ 模板中helper是一個附加參數(shù),默認(rèn)指AceTemplate本身;

◆ 采用不編碼輸出另一個模板渲染結(jié)果既實現(xiàn)嵌套。

示例遞歸模板

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/recursion1.html

調(diào)試:http://jsfiddle.net/zswang/JcwHg/

模板中可以調(diào)用自身遞歸輸出。

示例關(guān)鍵詞

http://ace-engine.googlecode.com/svn/trunk/examples/ace-template/keyword.html

調(diào)試:http://jsfiddle.net/zswang/fvLX3/

使用html編碼輸出可以這樣:AceTemplate.format("#{this}", text);

通過helper參數(shù),加入keyword方法

作者微博

http://weibo.com/zswang http://weibo.com/zinkey

原文鏈接:http://code.google.com/p/ace-engine/wiki/AceTemplate

【編輯推薦】

  1. 44個驚人的超炫CSS3動畫演示
  2. 97條架構(gòu)師須知
  3. JavaScript誕生記:C語言和Self語言一夜情的產(chǎn)物
  4. HTML 5怎么就成了RIA“殺手”?
  5. 10款Firefox插件幫助Web開發(fā)者事半功倍
責(zé)任編輯:陳貽新 來源: ace-engine
相關(guān)推薦

2021-07-05 06:51:42

Python虛擬環(huán)境

2018-12-04 15:46:53

編程語言Python

2015-08-11 09:18:44

程序員最好

2022-09-19 21:34:04

PHPFacebook語言

2011-05-24 10:25:21

2019-01-21 05:08:15

IGMPTCPIP

2017-11-29 16:00:42

加班行業(yè)無效

2018-11-06 12:22:18

排序算法代碼

2020-11-13 06:35:06

谷歌谷歌相冊移動應(yīng)用

2013-05-08 09:38:28

InteropNetSDN網(wǎng)絡(luò)設(shè)備供應(yīng)商

2018-07-19 19:07:33

語言編程語言程序

2019-11-18 15:07:54

編程語言C#

2023-07-31 08:59:46

軟件FossilSQLite

2013-04-24 09:57:08

Excel微軟

2013-09-16 11:12:51

編程環(huán)境開發(fā)

2023-06-28 11:14:18

2010-09-02 13:21:46

2013-06-09 08:52:50

哈希表

2025-03-27 00:45:00

2014-09-05 09:08:58

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日本91av视频 | 99色综合 | 黄色大片视频 | 日日干干 | 日本三级黄视频 | 成人影院免费视频 | 中国一级大黄大片 | 国产欧美日韩精品一区二区三区 | 亚洲一二三区精品 | 伊人影院99 | 伊人影院99 | 中文字幕亚洲在线 | 精品国产18久久久久久二百 | 国产免费黄网 | 久久99深爱久久99精品 | 成人一级视频在线观看 | 日日天天| 手机在线一区二区三区 | 一级黄色片在线看 | 亚洲激情一区二区 | 欧美一区二区三区小说 | 二区欧美| 99小视频| 国产成人亚洲精品 | 亚洲国产欧美日韩 | 国产电影一区二区 | 久久se精品一区精品二区 | 国产视频精品免费 | 美女国内精品自产拍在线播放 | 欧美成人视屏 | 欧美黑人巨大videos精品 | 精品国产一区二区国模嫣然 | 欧美性生活视频 | 国内精品久久久久久 | 亚洲国产成人一区二区 | 亚洲一区 中文字幕 | 亚洲一区二区三区四区五区午夜 | 久久国产精品-国产精品 | 色久电影| 成人在线一区二区 | 免费一区二区 |