1、npm install art-template
2、引入模板引擎const template = require("art-template")
3、告诉模板引擎要拼接的数据和模板在哪const html = template("模板路径",数据)
这是js文件
const template = require("art-template");
const path = require("path");
// 参数1:模板的路径,使用绝对路径
// 参数2:要在模板中显示的数据,对象类型
// 返回值是拼接好的字符串
const html = template(path.join(__dirname,"./views/index"),{
data:{
name:"张三"
}
})
console.log(html); // 打印出的是html页面的字符串
art模板文件(格式与html文件完全相同,就是后缀使用art)
<div>{{data.name}}</div>
将某项数据输出到模板中,标准语法和原始语法如下:
<!--标准语法-->
<div>{{data.name}}</div>
<!--原始语法-->
<h1><%= data.name %></h1>
如果数据中携带html标签,默认模板引擎是不会解析标签,会将其转义后输出。
如果需要解析的话,如下:
{{ @数据 }}
<%- 数据 %>
const template = require("art-template");
const path = require("path");
// 参数1:模板的路径,使用绝对路径
// 参数2:要在模板中显示的数据,对象类型
// 返回值是拼接好的字符串
const html = template(path.join(__dirname,"./views/index"),{
data:{
name:"张三",
content:`<h1>kk</h1>`
}
})
console.log(html); // 打印出的是html页面的字符串
art文件中
<!--标准语法-->
<div>{{@ data.content}}</div>
<!--原始语法-->
<div><%- data.content%></div>
{{ if 条件 }} ...... {{ /if }}
{{ if v1 }} ...... {{ else if v2 }} ...... {{ /if }}
<% if (value) { %> ... <% } %>
<% if (v1) { %> ... <% } else if (v2) { %> ... <% } %>
{{ if data.age < 20 }}
<div>我21</div>
{{ /if }}
{{each target}}
{{$index}} {{$value}}
{{/each}}
<% for(var i = 0; i < target.length; i++){ %>
<%= i %> <%= target[i] %>
<% } %>
1、target
支持Array
和Object
的迭代,默认值为$data
;
2、$value
和$index
可以自定义:{{ each target val key }}
{{ include "模板路径" }}
<%include("模板路径")%>
跟Vue的插槽有些像
{{extend './layout.art'}}
{{block 'head'}} ... {{/block}}
<% extend('./layout.art') %>
<% block('head', function(){ %> ... <% }) %>