模板引擎
作用:生成页面
jade - 破坏式,侵入式,强依赖·
const jade = require('jade');
var str = jade.render('html');
var str = jade.renderFile('文件路径',{pretty:true});
console.log(str);//
语法
- 根据缩进规定层级
- 属性放在括号里面,用逗号隔开
script(src='');
a(href='XXX') 链接
- 内容空个格
div aaa
span bbb
- style属性比较特殊,可以用json
div(style="width:200px; height:200px; background:red;")
div(style= {width: '200px', height: '200px', background: 'red'})
- class属性比较特殊,可以用数组
div(class= ['aaa', 'left-warp', 'active'])
|
,.
代表原样输出
body
|abc
//<body>abc</body>
- include 引入外部文件并原样输出
include a.js
- 用变量改变标签属性
const jade=require('jade');
console.log(jade.renderFile('./views/8.jade', {pretty: true,
json: {width: '200px', height: '200px', background: 'red'},
arr: ['aaa', 'left-wrap'] //class属性可以和数组里的自动合并
}));
//./views/8.jade
div(style=json);
div(class=arr class='active');
- 输出变量时
#
===
span #{a}
span=a
- '-'表示代码,不进行输出
-var a=12;
-var b=5;
div 结果是:#{a+b}
/* <html>
<head></head>
<body>
<div>结果是:17</div>
</body>
</html>*/
- 简写
div#id //<div id='id'></div>
div.class //<div class='class></div>
div&attributes({title:'aaa',id:'div1'})
for
循环- 非转义输出html标签(不用转义字符)
div!=content
if
switch case
用法相同但变成case when
-var a=1;
case a
when 0
div aaa
when 1
div bbb
when 2
div ccc
default
|不靠谱
ejs - 温和式,非侵入式,弱依赖
const ejs=require('ejs');
ejs.renderFile('./views/1.ejs', {name: 'blue'}, function (err, data){
if(err)
console.log('编译失败');
else
console.log(data);
});
我的名字叫:<%= name %>
//我的名字叫:blue
- 输出
<%= name %>
<%= json.arr[0].name %>
<%= 12+5 %>
<%= 'asdfasdf' %>
- 所有原生js有的都可以用
- 非转义输出html标签(不用转义字符)
<%
var str = "<div></div>"
%>
<%=str%> //<div></div>
<%-str%> //<div></div>
- include
<% include ../a.txt %>