一、为什么用EJS 在web项目中渲染页面我们很多时候我们会用jstl或者直接采用拼接字符串的方式,前者不够灵活,在处理一些复杂问题的时候会显得难以下手,后者足够灵活,但是就像ejs官网说的,字符串拼接方式,会让整个代码很丑陋,还破坏原有的html结构,大量的html拼接会让代码难以阅读,解决问题的方式就是使用模板,ejs算是js模板中最简单的了,对于java程序员来说,学习ejs完全不需要时间,因为他实在是很简单,这也是个人比较喜欢的原因。下面对比拼接字符串方式和ejs模板方式
js拼接字符串的方式:
var html = '<h1>' data.title '</h1>'
html = '<ul>'
for(var i=0; i<data.supplies.length; i ) {
html = '<li><a href='supplies/' data.supplies[i] ''>'
html = data.supplies[i] '</a></li>'
}
html = '</ul>'
ejs模板方式
<h1><%= title %></h1>
<ul>
<% for(var i=0; i<supplies.length; i ) { %>
<li>
<a href='supplies/<%= supplies[i] %>'>
<%= supplies[i] %>
</a>
</li>
<% } %>
</ul>
二、怎么用EJS
三、demo 新建一个index.html,内容如下:其中test.js是测试js
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<body>
<div id='test'>
</div>
</body>
</html>
<script type='text/javascript' src='ejs.js'></script>
<script type='text/javascript' src='test.js'></script>
1.第一种调用模板的方法,通过url请求模板,适用于多个页面共用一个模板 在同级目录下新建一个template.ejs文件,内容如下 <table>
<thead>
<th>姓名</th>
<th>年龄</th>
</thead>
<tbody>
<%for(var i=0;i<list.length;i ){var u=list[i];%>
<tr>
<td><%=u.name%></td>
<td><%=u.age%></td>
</tr>
<%}%>
</tbody>
</table>
var data={'list':[{'name':'张三','age':20},{'name':'李四','age':21}]};
var options={
url:'template.ejs'
}
var html=new EJS(options).render(data);
document.getElementById('test').innerHTML=html;
在index.html中添加以下模板,注意内部模板跟外部模板的区别
<script type='text/html' id='template'>
<table>
<thead>
<th>姓名</th>
<th>年龄</th>
</thead>
<tbody>
[%for(var i=0;i<list.length;i ){var u=list[i];%]
<tr>
<td>[%=u.name%]</td>
<td>[%=u.age%]</td>
</tr>
[%}%]
</tbody>
</table>
</script>
var data={'list':[{'name':'张三','age':20},{'name':'李四','age':21}]};
var options={
element:'template'
}
var html=new EJS(options).render(data);document.getElementById('test').innerHTML=html;
这里的element可以是值为模板id的string,也可以是element即为document.getElementById('template')
3.第三种String串方式在js中声明的模板,不再说了
4.上面只说了render方法,update方法的使用如下
var data={'list':[{'name':'张三','age':20},{'name':'李四','age':21}]};
var options={
element:'template'
}
new EJS(options).update('test',data); 或
var data={'list':[{'name':'张三','age':20},{'name':'李四','age':21}]};
var options={
element:'template'
}
var template=new EJS(options).update('test');
template(data) 也可以直接通过url获取data
var options={
element:'template'
}
new EJS(options).update('test','data.json'); 最终的结果都是一样的,如下
以上基本就是EJS的所有语法了,当然EJS还做了一些扩展
|
|
来自: 潇湘雨plgwyaef > 《待分类》