javascript模板引擎——artTemplate
2015-12-04 10:42
656 查看
地址:https://github.com/aui/artTemplate
https://github.com/aui/artTemplate/wiki/%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AF%AD%E6%B3%95%E6%89%A9%E5%B1%95%E8%AF%B4%E6%98%8E
使用一个
模板逻辑语法开始与结束的界定符号为
[html] view
plaincopy
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>include demo</title>
<script src="template.js"></script>
</head>
<body>
<div id="content"></div>
<div id="tagcontent"></div>
<script id="targettemplate" type="text/html">
<h1><%=title%></h1>
<%include('list')%>
<%include('Tvalue')%>
</script>
<script id="list" type="text/html">
<ul>
<%for(var i=0; i<listItems.length; i++){%>
<li>条目内容<%=i+1%> : <%=listItems[i]%></li>
<%}%>
</ul>
</script>
<script id="Tvalue" type="text/html">
<p>不转义:<%==trans%> or <%=#trans%></p>
<p>默认转义: <%=trans%></p>
</script>
<script>
var data = {
title: '嵌入子模板',
listItems: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'],
trans:'<label style="color:#F00; font-weight:bold;">hello world!</label>'
};
var logintsorse='<h3>template.compile([id], source)将返回一个渲染函数。其中 id 参数是可选的,'
+'如果使用了 id 参数,可以使用template.render(id, data)渲染模板。</h3>'
+'使用arttemplate来编写:<%=title%>';
var html = template.render('targettemplate', data);
var render = template.compile(logintsorse);
var compilehtml = render(data);
document.getElementById('content').innerHTML = html+compilehtml;
</script>
<script id="customTag" type="text/html">
<h1><!--[= header]--></h1>
<ul>
<!--[for(var i=0; i<tag.length; i++){]-->
<li>条目内容<!--[=i+1]--> : <!--[=tag[i]]--></li>
<!--[}]-->
</ul>
</script>
<script>
template.openTag = '<!--[';
template.closeTag = ']-->';
var listdata = {
header : 'your study list',
tag : ['算法导论','linq','c#','jquery','django','python']
};
var resulthtml = template.render ('customTag', listdata);
document.getElementById('tagcontent').innerHTML = resulthtml;
//
</script>
</body>
</html>
更多请见官网...
https://github.com/aui/artTemplate/wiki/%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AF%AD%E6%B3%95%E6%89%A9%E5%B1%95%E8%AF%B4%E6%98%8E
编写模板
使用一个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])%>语句可以嵌入子模板,其中第二个参数是可选的,它默认传入当前的数据。
<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] view
plaincopy
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>include demo</title>
<script src="template.js"></script>
</head>
<body>
<div id="content"></div>
<div id="tagcontent"></div>
<script id="targettemplate" type="text/html">
<h1><%=title%></h1>
<%include('list')%>
<%include('Tvalue')%>
</script>
<script id="list" type="text/html">
<ul>
<%for(var i=0; i<listItems.length; i++){%>
<li>条目内容<%=i+1%> : <%=listItems[i]%></li>
<%}%>
</ul>
</script>
<script id="Tvalue" type="text/html">
<p>不转义:<%==trans%> or <%=#trans%></p>
<p>默认转义: <%=trans%></p>
</script>
<script>
var data = {
title: '嵌入子模板',
listItems: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'],
trans:'<label style="color:#F00; font-weight:bold;">hello world!</label>'
};
var logintsorse='<h3>template.compile([id], source)将返回一个渲染函数。其中 id 参数是可选的,'
+'如果使用了 id 参数,可以使用template.render(id, data)渲染模板。</h3>'
+'使用arttemplate来编写:<%=title%>';
var html = template.render('targettemplate', data);
var render = template.compile(logintsorse);
var compilehtml = render(data);
document.getElementById('content').innerHTML = html+compilehtml;
</script>
<script id="customTag" type="text/html">
<h1><!--[= header]--></h1>
<ul>
<!--[for(var i=0; i<tag.length; i++){]-->
<li>条目内容<!--[=i+1]--> : <!--[=tag[i]]--></li>
<!--[}]-->
</ul>
</script>
<script>
template.openTag = '<!--[';
template.closeTag = ']-->';
var listdata = {
header : 'your study list',
tag : ['算法导论','linq','c#','jquery','django','python']
};
var resulthtml = template.render ('customTag', listdata);
document.getElementById('tagcontent').innerHTML = resulthtml;
//
</script>
</body>
</html>
更多请见官网...
相关文章推荐
- 原生js版ajax请求
- ExtJs 告警弹窗
- js设计模式学习一(单例模式)
- JavaScript截取指定长度字符串点击可以展开全部代码
- #学习笔记#(5)表格奇偶行颜色样式JavaScript+CSS+HTML
- JavaScript:有符号整数与无符号整数相互转化
- 在线js调试工具JSbin、jsFiddle
- js:深闭包(范围:上)
- keystone policy.json 的学习总结
- JavaScript实现复制功能各浏览器支持情况实测
- 推荐一款可视化动态javascript库
- 拼接的JSON字符串
- 通过偏移将GPS坐标转换成百度坐标--js实现
- Extjs 常用代码
- 轻松学习JavaScript十:JavaScript的Date对象制作一个简易钟表
- JavaScript的作用域和块级作用域概念理解
- 轻松学习JavaScript九:JavaScript对象和数组
- 轻松学习JavaScript八:JavaScript函数
- Javascript技术难点之apply,call与this之间的衔接
- JavaScript的作用域和块级作用域概念理解