国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

javascript模板引擎artTemplate

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 20:25:19
文檔

javascript模板引擎artTemplate

javascript模板引擎artTemplate:artTemplate新一代 javascript 模板引擎=================artTemplate 是新一代 javascript 模板引擎,它在 v8 中的渲染效率可接近 javascript 性能極限,在 chrome 下渲染效率測試中分別是知名引擎 Mustache 與 micro tmpl 的 25
推薦度:
導讀javascript模板引擎artTemplate:artTemplate新一代 javascript 模板引擎=================artTemplate 是新一代 javascript 模板引擎,它在 v8 中的渲染效率可接近 javascript 性能極限,在 chrome 下渲染效率測試中分別是知名引擎 Mustache 與 micro tmpl 的 25

artTemplate

新一代 javascript 模板引擎

=================

artTemplate 是新一代 javascript 模板引擎,它在 v8 中的渲染效率可接近 javascript 性能極限,在 chrome 下渲染效率測試中分別是知名引擎 Mustache 與 micro tmpl 的 25 、 32 倍(性能測試)。

引擎支持調試。若渲染中遇到錯誤,調試器可精確定位到產(chǎn)生異常的模板語句,解決前端模板難以調試的問題(詳情)。

另外,artTemplate 的模板還支持使用自動化工具預編譯,這一切都在 2KB(Gzip) 中實現(xiàn)!

快速上手

編寫模板

使用一個type="text/html"的script標簽存放模板:

<script id="test" type="text/html">
 <h1><%=title%></h1>
 <ul> <%for(i = 0; i < list.length; i ++) {%>
 <li>條目內容 <%=i + 1%> :<%=list[i]%></li>
 <%}%>
 </ul></script>

模板邏輯語法開始與結束的界定符號為<% 與%>,若<%后面緊跟=號則輸出變量內容。

渲染模板

template.render(id, data)

var data = {
 title: '標簽', list: ['文藝', '博客', '攝影', '電影', '民謠', '旅行', '吉他']
};var html = template.render('test', data);
document.getElementById('content').innerHTML = html;

演示

嵌入子模板

<%include(id, [data])%>語句可以嵌入子模板,其中第二個參數(shù)是可選的,它默認傳入當前的數(shù)據(jù)。

<script id="test" type="text/html">
 <h1><%=title%></h1>
 <%include('list')%></script>
 <script id="list" type="text/html">
 <ul> <%for(i = 0; i < list.length; i ++) {%>
 <li>條目內容 <%=i + 1%> :<%=list[i]%></li>
 <%}%>
 </ul></script>

演示

不轉義HTML

模板引擎默認數(shù)據(jù)包含的 HTML 字符進行轉義以避免 XSS 漏洞,若不需要轉義的地方可使用==。

<script id="test" type="text/html">
 <%==value%></script>

若需要關閉默認轉義,可以設置template.isEscape = false。
演示

在js中存放模板

template.compile([id], source)將返回一個渲染函數(shù)。其中 id 參數(shù)是可選的,如果使用了 id 參數(shù),可以使用template.render(id, data)渲染模板。

var source = '<ul>'
 + '<% for (var i = 0; i < list.length; i ++) { %>'
 + '<li>索引 <%= i + 1 %> :<%= list[i] %></li>'
 + '<% } %>'
 + '</ul>'; 
 var data = { list: ['文藝', '博客', '攝影', '電影', '民謠', '旅行', '吉他']
 }; 
 var render = template.compile(source); var html = render(data);
 document.getElementById('content').innerHTML = html;

演示

添加輔助方法

template.helper(name, callback)輔助方法一般用來進行字符串替換,如 UBB 替換、臟話替換等。

例如擴展一個UBB替換方法:

template.helper('$ubb2html', function (content) { return content
 .replace(/[b]([^[]?)[/b]/igm, '<b>$1</b>')
 .replace(/[i]([^[]?)[/i]/igm, '<i>$1</i>')
 .replace(/[u]([^[]?)[/u]/igm, '<u>$1</u>')
 .replace(/[url=([^]])]([^[]?)[/url]/igm, '<a href="$1">$2</a>')
 .replace(/[img]([^[]?)[/img]/igm, '<img src="$1" />');
 });

在模板中的使用方式:

<%=$ubb2html(content) %>

注意:引擎不會對輔助方法輸出的 HTML 字符進行轉義。
演示

設置界定符

若前端模板語法與后端語法產(chǎn)生沖突,可以修改模板引擎界定符,例如:

template.openTag = "<!--[";
template.closeTag = "]-->";

演示

自定義語法

artTemplate 提供一個語法擴展用來簡化模板邏輯語法。語法示例:

{{if admin}} <h3>{{title}}</h3>
 <ul>
 {{each list}} <li>{{$index + 1}}: {{$value}}</li>
 {{/each}} </ul>{{/if}}

安裝:把 extensions/template-syntax.js 合并到 template.js 底部。
更多語法說明

自動化工具

預編譯工具

使用它可以讓前端模版不再受瀏覽器的限制,支持如后端模版一樣按文件放置、include 語句等特性,可以像后端一樣書寫前端模板!

編譯后的模板不再依賴前端模板引擎與后端,模板可以通過 SeaJS 或 RequireJS 等加載器進行異步加載,亦能利用它們成熟的打包合并工具進行上線前的優(yōu)化,如合并與壓縮。

項目主頁:<https://github.com/aui/tmodjs>

抽取工具

./tools/combine.html

可以把 HTML 中的模板提取出來以便把模板嵌入到 js 文件中。

與編譯工具不同的是,抽取后的模板仍然依賴引擎運行。

模板編碼規(guī)范

1、不能使用 javascript 關鍵字作為模板變量(包括 ECMA5 嚴格模式下新增的關鍵字):

> break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, 
function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with, 
abstract, boolean, byte, char, class, const, double, enum, export, extends, final, float, goto, implements, import, int, 
interface, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile, arguments, let, yield

2、模板運行在沙箱中,內部無法訪問外部變量,除非給模板定義輔助方法。例如:

 template.helper('Math', Math)

> 模板中若任意引用外部對象,復雜的依賴管理將會讓項目難以維護,這種方式將利于后續(xù)模板遷移(包括通過工具預編譯)。

所有演示例子 | 引擎原理

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

javascript模板引擎artTemplate

javascript模板引擎artTemplate:artTemplate新一代 javascript 模板引擎=================artTemplate 是新一代 javascript 模板引擎,它在 v8 中的渲染效率可接近 javascript 性能極限,在 chrome 下渲染效率測試中分別是知名引擎 Mustache 與 micro tmpl 的 25
推薦度:
標簽: js art 引擎
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品久久毛片蜜月 | 亚洲欧美日韩高清中文在线 | 欧美日韩一二 | 中文字幕久久久久一区 | 在线观看免费国产 | 亚洲图片国产日韩欧美 | 欧美日韩片 | 国产精品99久久久久久www | 欧美在线日韩在线 | 国内精品视频在线观看 | 国产在线视频专区 | 日韩欧美精品在线观看 | 99精品欧美一区二区三区综合在线 | 国产中文在线 | 国产一级高清视频免费看 | 成人精品久久 | 国产一区二区精品久久凹凸 | 国产精品久久久久久久久99热 | 国产在线成人一区二区三区 | 亚洲第二页 | 国产精品久久一区一区 | 欧美国产日韩一区二区三区 | 国产成人高清亚洲一区久久 | 国产欧美精品一区二区三区四区 | 欧美 日韩 国产 色 欧美 日韩 亚洲另类专区 | 免费在线观看的视频 | 夜夜骑首页 | 全免费a级毛片免费毛视频 热re91久久精品国产91热 | 精品一区二区三区四区五区六区 | 日韩国产欧美一区二区三区在线 | 亚洲欧美日韩国产 | 久国产精品视频 | 91精品国产色综合久久 | 国产精品毛片久久久久久久 | 国产精品一区二区av | 欧美日韩综合网 | 在线观看日韩精品 | 国产精品成人久久久久久久 | 熟年交尾五十路视频在线播放 | 看全色黄大色大片免费久久久 | 亚洲欧洲中文字幕 |