详解js模板引擎art template数组渲染的方法


Posted in Javascript onOctober 09, 2018

JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注,模板引擎种类也是五花八门,我就说几个安全性高、错误处理调试优,执行速度快的有artTemplate(腾讯 14k)、juicer(国外 12k)这俩个,doT除了错误处理调试差以外其他的都和这两个一样,他有一个优点是小(4k),扯远啦。

art-template 是一个简约、超快的模板引擎。

什么是art-template

art-template 是一个简约、超快的模板引擎。它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。使用art-template也便于维护代码,以前我们渲染数据是以模板字符串的形式在js文件中写入的html内容,如果html内容需要修改,我们需要在js中修改。而用了模板引擎以后,我们只需要html文件中修改html内容。还有使用了模板引擎以后DOM操作的效率也会更高一点。

它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。在线速度测试。

art-template特性

  1. 拥有接近 JavaScript 渲染极限的的性能
  2. 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
  3. 支持 Express、Koa、Webpack
  4. 支持模板继承与子模板
  5. 浏览器版本仅 6KB 大小

我们就讲一下讲简洁语法的渲染方式,template(filename, content)根据模板名渲染模板。前提是你已经对artTemplate有所了解,

今天我们就讲一下数组渲染的方法

数组渲染有数组对象和纯数组两种形式,我们先说数组对象,如后端返回我们接口,收到的就是一个数组。比如:

const res = [
{"name":"小明", "age":16, "marry":"单身"},
{"name":"小花","age":15, "marry":"有男朋友"},
{"name":"小胖","age":15, "marry":"有女朋友"},
{"name":"小丽","age":15, "marry":"单身"}
];

用artTemplate有个好处就是除了你的数据需要重组,其他的完全可以拿来直接用。如下

html

<div id="person"></div>

js

<script>
const res = [
{"name":"小明", "age":16, "marry":"单身"},
{"name":"小花","age":15, "marry":"有男朋友"},
{"name":"小胖","age":15, "marry":"有女朋友"},
{"name":"小丽","age":15, "marry":"单身"}
];
document.getElementById('person').innerHTML = template('personTemp', {data:res}); // 其实这里是把数组转为对象的形式传进的
</scrtip>

template

<script type="text/html" id="personTemp">
//写法一
{{each data}}
<li>{{$index}}索引 我叫{{$value.name}},今年{{$value.age}}岁,{{$value.marry}}</li>
{{/each}}
 
//写法二
{{each data item index}}
<li>{{index}}索引 我叫{{item.name}},今年{{item.age}}岁,{{item.marry}}</li>
{{/each}}
</script>

下面在看数组渲染,这是一个数组

const res = ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'];

html

<div id="interest"></div>

js

<script>
const res = ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'];
document.getElementById('interest').innerHTML = template('interestTemp', {data:res}); // 其实这里是把数组转为对象的形式传进的
</scrtip>

template

<script type="text/html" id="interestTemp">
//写法一
{{each data}}
<li>{{$index}}索引 我喜欢{{$value.name}}</li>
{{/each}}
 
//写法二
{{each data item index}}
<li>{{index}}索引 我喜欢{{item}}</li>
{{/each}}
</script>

就说这么多吧,其实这种模板用着挺简单的很顺手。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript var变量隐式声明方法
Oct 19 Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
laypage.js分页插件使用方法详解
Jul 27 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
Feb 11 Javascript
javascript 数组精简技巧小结
Feb 26 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
Aug 07 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 Javascript
angular4强制刷新视图的方法
Oct 09 #Javascript
Angular4.x Event (DOM事件和自定义事件详解)
Oct 09 #Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 #Javascript
vue router 源码概览案例分析
Oct 09 #Javascript
Angular4 Select选择改变事件的方法
Oct 09 #Javascript
对angular 监控数据模型变化的事件方法$watch详解
Oct 09 #Javascript
JS判断用户用的哪个浏览器实例详解
Oct 09 #Javascript
You might like
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
快速入手Python字符编码
2016/08/03 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
python regex库实例用法总结
2021/01/03 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
中专自我鉴定范文
2013/10/16 职场文书
音乐教学反思
2014/02/02 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
护士2014年终工作总结
2014/11/11 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
vue特效之翻牌动画
2022/04/20 Vue.js