详解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读取ASP设定的COOKIE
Nov 24 Javascript
js DOM的学习笔记
Dec 22 Javascript
css+js实现部分区域高亮可编辑遮罩层
Mar 04 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
JavaScript截断字符串的方法
Jul 15 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
详解javascript 变量提升(Hoisting)
Mar 12 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
Vue实现导航栏的显示开关控制
Nov 01 Javascript
基于js实现逐步显示文字输出代码实例
Apr 02 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
Banner程序
2006/10/09 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
提高PHP编程效率的方法
2013/11/07 PHP
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
商场消防管理制度
2014/01/12 职场文书
写给女朋友的检讨书
2014/01/28 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
财务会计专业自荐书
2014/06/30 职场文书
销售人员工作自我评价
2014/09/21 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
MySQL锁机制
2021/04/05 MySQL
golang json数组拼接的实例
2021/04/28 Golang
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Pytorch中的数据集划分&正则化方法
2021/05/27 Python