详解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 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
Jan 24 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
javascript性能优化之分时函数的介绍
Mar 28 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
Dec 06 Javascript
vue中用 async/await 来处理异步操作
Jul 18 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 Javascript
elementui的el-popover修改样式不生效的解决
Jun 30 Javascript
webpack的移动端适配方案小结
Jul 25 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写出自己的BLOG系统 2
2010/04/12 PHP
PHP队列用法实例
2014/11/05 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
Python设计模式之单例模式实例
2014/04/26 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python实现的建造者模式示例
2018/08/06 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
Python中的流程控制详解
2021/02/18 Python
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
大学生新闻专业个人自我评价
2013/11/12 职场文书
电子商务专业求职信
2014/03/08 职场文书
经典商业广告词
2014/03/13 职场文书
《长相思》听课反思
2014/04/10 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript