模板引擎 art-template

模板引擎 art-template

模板引擎的作用

1.使用模板引擎提供的模板语法可以使数据和HTML字符串拼接的更加美观,代码易于维护。

2.模板引擎能够使用户界面的数据拼接和JavaScript业务逻辑分离,增加程序的可扩展性。

3.使用模板引擎可以提高开发效率。

语法

模板渲染

1.下载 art-template 模板引擎

2.引入art-template的js文件

<script src="./js/template-web.js"></script>

3.在script里面编写art-template模板

//在script标签里面写html结构,需要制定type类型
<script type="text/html" id="tpl">
 	<div>
		 <span>{{name}}</span>
		 <span>{{age}}</span>
    </div>
</script>

4.将特定模板与数据进行绑定

//template 方法就是告诉模板引擎,哪个数据需要跟哪个模板进行拼接
const html = template('tpl',{
	name: '张三',
    age: 20
 }); 
//html 就是拼接好的字符串

5.就把拼接好的内容扔到页面的某一个元素内就好

container.innerHTML = html;

原文输出

如果数据中携带HTML标签,默认情况下,模板引擎不会解析标签,会将其转义后原文输出

<h2>{{@ value }}</h2>

条件判断

判断条件都是成对出现,有开始就有结束,例如:

{{if 条件}} ... {{/if}}
{{if v1}} ... {{else if v2}} ... {{/if}}

示例demo:当满足条件显示不同的内容

<script type="text/html" id="tpl">
	<div>
		<span>姓名:{{@ name}}</span>
		<span>年龄:{{age}}</span>
	</div>
	{{if age > 18}}
		<div>年龄大于18</div>
	{{else}}
		<div>年龄小于18</div>
	{{/if}}
</script>

循环

{{each target}}
     {{$index}} {{$value}}
 {{/each}}

示例demo:遍历,把数据显示在页面

<script src="js/template-web.js"></script>
    <script type="text/html" id="tpl">
        <ul>
            {{each data}}
            <li>
                <span>姓名:{{$value.name}}</span>
                <span>年龄:{{$value.age}}</span>
            </li>
            {{/each}}
        </ul>
    </script>
<script>
// 这是告诉模板引擎将模板id为tpl的模板和data数据对象进行拼接
var html = template('tpl', {
    data: [{
        name: '张三',
        age: 15
    }, {
        name: '李四',
        age: 20
    }, {
        name: '王五',
        age: 10
    }]
});
document.getElementById('container').innerHTML = html;
</script>

小结:

1.记忆循环的语法 {{each 变量名}}...{{/each}}

2.each 后面跟的是遍历的数据的变量名,需要跟传入进来的值的名一致

3.{{index}} 获取的是索引,{{value}}获取的是数组里面当前的元素

导入模板变量

有的时候需要在模板引擎里面导入其他的一些对象,例如:我们需要在模板里面进行日期的格式化,所以需要进行导入模板变量

语法

//导入
template.defaults.imports.变量名 = 变量值;
//使用
$imports.变量名称  //外部导入的变量以及全局变量

在模板引擎里面进行引入

<div>$imports.dataFormat(time)</div>

在script里面进行导入

function dateFormat(未格式化的原始时间){
    return '已经格式化好的当前时间'
}
template.defaults.imports.dateFormat = dateFormat;

示例demo:

<div id="container"></div>
<script src="js/template-web.js"></script>
<script type="text/html" id="tpl">
	<div>当前时间是:{{$imports.dateFormat(date)}}</div>
</script>
<script>
	window.onload = function () {
		// 将方法导入到模板中,注意:需要在调用方法之前进行导入
		template.defaults.imports.dateFormat = dateFormat;
		// 这是告诉模板引擎将模板id为tpl的模板和data数据对象进行拼接
		var html = template('tpl', {
			date: new Date()
		});
		document.getElementById('container').innerHTML = html;
		function dateFormat(date) {
			return date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日';
		}
	}
</script>
发布了34 篇原创文章 · 获赞 1 · 访问量 1149

猜你喜欢

转载自blog.csdn.net/qq_42802170/article/details/102523491