ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
#### 示例 ```html <% if (user) { %> <h2><%= user.name %></h2> <% } %> ``` #### 用法 ```javascript var template = ejs.compile(str, options); template(data); // => 渲染 HTML 字符串 ejs.render(str, data, options); // => 渲染 HTML 字符串 ``` #### 选项 * `cache` 表示编译过的函数会被缓存,需要 `filename` * `filename` 表示被 `cache` 用做缓存的键,用于包含 * `context` 表示函数的执行上下文 * `compileDebug` 如果值为 `false`,不会编译调试用的工具 * `client` 表示返回独立的编译后的函数 * `delimiter` 表示开启或者闭合尖括号所用的字符 * `debug` 表示输出生成的函数体 * `_with` 表示是否使用 `with() {}` 结构。如果为 `false` 则局部数据会储存在 `locals` 对象中 #### 标签 * `<%` 'Scriptlet' 标签, 用于控制流,没有输出 * `<%=` 向模板输出值(带有转义) * `<%-` 向模板输出没有转义的值 * `<%#` 注释标签,不执行,也没有输出 * `<%%` 输出字面的 '<%' * `%>` 普通的结束标签 * `-%>` Trim-mode ('newline slurp') 标签, 移除随后的换行符 #### 包含 包含要么是绝对路径,或者如果不是的话,被视为相对于调用 `include` 的模板的路径(需要 `filename` 选项)。 例如,你在 `./views/users.ejs` 中包含 `./views/user/show.ejs`,你应该使用 `<%- include('user/show') %>`。 你可能会用到原始输出标签(`<%-`)避免二次转义HTML输出。 ```html <ul> <% users.forEach(function(user){ %> <%- include('user/show', {user: user}); %> <% }); %> </ul> ``` #### 自定义分隔符 自定义分隔符可以以模板为单位应用,或者全局: ```javascript var ejs = require('ejs'), users = ['geddy', 'neil', 'alex']; // Just one template ejs.render('<?= users.join(" | "); ?>', {users: users}, {delimiter: '?'}); // => 'geddy | neil | alex' // Or globally ejs.delimiter = '$'; ejs.render('<$= users.join(" | "); $>', {users: users}); // => 'geddy | neil | alex' ```