EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串。
安装
|
|
基本用法
|
|
方法
ejs.compile() ejs.render()
1234567var template = ejs.compile(str, options); //=> functiontemplate(data); //=> htmlejs.render(str, data, options); //=>html//or 把str data options都放在一个object中传入ejs.render(allOptions);options参数
cache
缓存编译后的函数(ejs.compile(..) ,需要filename
参数作为缓存的keyfilename
用于缓存的key,和includecontext
函数的执行上下文compileDebug
输出compile的信息来跟踪调试client
返回编译后的函数delimiter
<% .. %> 指这里的%debug
输出ejs.compile()得到函数的函数体strict
ejs.compile()返回的函数是否执行在严格模式_with
是否使用 with(){..} 来访问本地变量localsName
保存本地变量的对象名,默认为localsrmWhitespace
移除多余空格include(文件包含)
被包含文件的路径可以是:绝对路径或相对路径,还可以传入data12345<ul><% users.forEach(function(user){ %><%- include('user/show', {user: user}) %><%});%></ul>
include是在运行时被执行的,所以可以支持路径为变量, 如:
|
|
自定义模板定界符
123456789101112var ejs = require('ejs');var users = ['lufy', 'zoro', 'nami'];//渲染字符串模板时,指定分隔符//<%= ... %> 输出变量 输出表达式的结果var ret1 = ejs.render('<?=users.join(" | "); ?> ', {users: users}, {delimiter: '?'});console.log(ret1); //=>lufy | zoro | nami// 全局指定分隔符ejs.delimiter = '$';var ret2 = ejs.render('<$= users.join(" | "); $>', {users: users});console.log(ret2);页面布局
ejs没有显式的支持布局功能,但是可以通过 include 页头页脚的方式,实现基本的布局。12345678910//comic.ejs:<%- include('header'); %><h1>hot comic now: </h1><% if(comic) { %><h2><%= comic.name %></h2><% } %><%- include('footer') %>//test.js:var html = ejs.render( fs.readFileSync('comic.ejs', 'utf8'), {'comic': comic}, {filename: __dirname+'\\abc.js'});