title: EJS相关
tags:

  • EJS
  • 有坑待填
    categories:
  • 前端
    date: 2019-05-06 15:13:55

官网

🌞实例

  1. <% if (user) { %>
  2. <h2><%= user.name %></h2>
  3. <% } %>

🌞用法

  1. var template = ejs.compile(str, options);
  2. template(data);
  3. // => 输出绘制后的 HTML 字符串
  4. ejs.render(str, data, options);
  5. // => 输出绘制后的 HTML 字符串
  6. ejs.renderFile(filename, data, options, function(err, str){
  7. // str => 输出绘制后的 HTML 字符串
  8. });

🌞参数

  • cache 缓存编译后的函数,需要提供 filename
  • filename 被 cache 参数用做键值,同时也用于 include 语句
  • context 函数执行时的上下文环境
  • compileDebug 当为 false 时不编译调试语句
  • client 返回独立的编译后的函数
  • delimiter 放在角括号中的字符,用于标记标签的开与闭
  • debug 将生成的函数体输出
  • _with 是否使用 with() {} 结构。如果为 false,所有局部数据将存储在 locals 对象上。
  • localsName 如果不使用 with ,localsName 将作为存储局部变量的对象的名称。默认名称是 locals
  • rmWhitespace 删除所有可安全删除的空白字符,包括开始与结尾处的空格。对于所有标签来说,它提供了一个更安全版本的 -%> (在一行的中间并不会剔除标签后面的换行符)。
  • escape 为 <%= 结构设置对应的转义(escape)函数。它被用于输出结果以及在生成的客户端函数中通过 .toString() 输出。(默认转义 XML)。

🌞标签含义

  • <% ‘脚本’ 标签,用于流程控制,无输出。
  • <%_ 删除其前面的空格符
  • <%= 输出数据到模板(输出是转义 HTML 标签)
  • <%- 输出非转义的数据到模板
  • <%# 注释标签,不执行、不输出内容
  • <%% 输出字符串 ‘<%’
  • %> 一般结束标签
  • -%> 删除紧随其后的换行符
  • _%> 将结束标签后面的空格符删除

🌞包含(include)

  1. 通过 include 指令将相对于模板路径中的模板片段包含进来。(需要提供 ‘filename’ 参数。) 例如,如果存在 “./views/users.ejs” 和 “./views/user/show.ejs” 两个模板文件,你可以通过 <%- include(‘user/show’); %> 代码包含后者。

  2. 你可能需要能够输出原始内容的标签 (<%-) 用于 include 指令,避免对输出的 HTML 代码做转义处理。

  1. <ul>
  2. <% users.forEach(function(user){ %>
  3. <%- include('user/show', {user: user}); %>
  4. <% }); %>
  5. </ul>

🌞自定义分隔符

  1. 可针对单个模板或全局使用自定义分隔符:```javascript var ejs = require(‘ejs’),

    1. users = ['geddy', 'neil', 'alex'];

    // 单个模板文件 ejs.render(‘<?= users.join(“ | “); ?>’, {users: users},

    1. {delimiter: '?'});

    // => ‘geddy | neil | alex’

    // 全局 ejs.delimiter = ‘$’; ejs.render(‘<$= users.join(“ | “); $>’, {users: users}); // => ‘geddy | neil | alex’ ```

🌞其他