特性
快速编译与绘制输出
简洁的模板标签:<% %>
自定义分割符(例如:用 <? ?> 替换 <% %>)
引入模板片段
同时支持服务器端和浏览器 JS 环境
JavaScript 中间结果静态缓存
模板静态缓存
兼容 Express 视图系统
ejs标签含义
<% 脚本语法 %>
<%= 输入到模板 不会编译html标签 %>
<%- 非数据模板 编译 html标签 %>
<%# 注释标签,不执行、不输出内容 %>
get req.query
post req.body
安装
$ npm install ejs
选项
-
cache 编译过的函数会被缓存,需要filename
-
filename 被cache用做缓存的键,用于包含
-
context 函数执行的上下文
-
compileDebug 如果为false,不会编译调试用的工具
-
client 返回独立的编译后的函数
-
delimiter 开启或者闭合尖括号所用的字符
-
debug 输出生成的函数体
-
_with 是否使用 with() {} 结构。如果为 false 则局部数据会储存在 locals 对象中。
-
rmWhitespace 移除所有可以安全移除的空白字符,包含前导和尾后的空白字符。同时会为所有scriptlet标签开启-%>换行截断的更加安全的模式。(它不会在一行之中去除标签的换行)。
用例
<% for(let i=1;i<=5;i++){ %>
<a href=""><%= i %></a>
<%} %>
结果
包含
包含要么是绝对路径,或者如果不是的话,被视为相对于调用include的模板的路径(需要filename选项)。 例如,你在./views/users.ejs中包含./views/user/show.ejs,你应该使用<%- include(‘user/show’) %>。
你可能会用到原始输出标签(<%-)避免二次转义HTML输出。
- <% users.forEach(function(user){ %> <%- include('user/show', {user: user}) %> <% }); %>
注意:仍然支持包含预处理指令(<% include user/show %>)。