# Ejs
# 介绍
高效的嵌入式 JavaScript 模板引擎
“E” 代表什么?可以表示 “可嵌入(Embedded)”,也可以是“高效(Effective)”、“优雅(Elegant)”或者是“简单(Easy)”。EJS 是一套简单的模板语言,帮你利用普通的 JavaScript 代码生成 HTML 页面。EJS 没有如何组织内容的教条;也没有再造一套迭代和控制流语法;有的只是普通的 JavaScript 代码而已。
# 特点
- 快速编译与绘制输出
- 简洁的模板标签:
<% %>
- 自定义分割符(例如:用
<? ?>
替换<% %>
) - 引入模板片段
- 同时支持服务器端和浏览器 JS 环境
- JavaScript 中间结果静态缓存
- 模板静态缓存
- 兼容 Express 视图系统
# 使用
# 安装
npm install ejs
# 简单使用
let ejs = require('ejs');
let people = ['geddy', 'neil', 'alex'];
let html = ejs.render('<%= people.join(", "); %>', {people: people});
let template = ejs.compile(str, options);
template(data);
// => Rendered HTML string
ejs.render(str, data, options);
// => Rendered HTML string
ejs.renderFile(filename, data, options, function(err, str){
// str => Rendered HTML string
});
# 高级
条件使用
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
布局
<%- include('header'); -%>
<h1>
Title
</h1>
<p>
My page
</p>
<%- include('footer'); -%>
# 参数选项
- cache 缓存编译后的函数,需要指定 filename
- filename 被 cache 参数用做键值,同时也用于 include 语句
- context 函数执行时的上下文环境
- compileDebug 当值为 false 时不编译调试语句
- client 返回独立的编译后的函数
- delimiter 放在角括号中的字符,用于标记标签的开与闭
- debug 将生成的函数体输出
- _with 是否使用 with() {} 结构。如果值为 false,所有局部数据将存储在 locals 对象上。
- localsName 如果不使用 with ,localsName 将作为存储局部变量的对象的名称。默认名称是 locals
- rmWhitespace 删除所有可安全删除的空白字符,包括开始与结尾处的空格。对于所有标签来说,它提供了一个更安全版本的
-%>
标签(在- 一行的中间并不会剔除标签后面的换行符)。 - escape 为
<%=
结构设置对应的转义(escape)函数。它被用于输出结果以及在生成的客户端函数中通过.toString()
输出。(默认转义 XML)。 - outputFunctionName 设置为代表函数名的字符串(例如 'echo' 或 'print')时,将输出脚本标签之间应该输出的内容。
- async 当值为 true 时,EJS 将使用异步函数进行渲染。(依赖于 JS 运行环境对 async/await 是否支持)
# tags
<%
脚本标签,用于流程控制,无输出。<%_
删除其前面的空格符<%=
输出数据到模板(输出是转义 HTML 标签)<%-
输出非转义的数据到模板<%#
注释标签,不执行、不输出内容<%%
输出字符串'<%'
%>
一般结束标签-%>
删除紧随其后的换行符_%>
将结束标签后面的空格符删除
# 参考
← Prisma Log Web 3.0 →