ejs 文档翻译

来源:互联网 发布:may it be mv 编辑:程序博客网 时间:2024/06/05 02:19

英文官方github文档:https://github.com/visionmedia/ejs

安装

$ npm install ejs

功能

  • 适合 Express view 系统
  • 静态缓存中间的 JavaScript
  • 不输出时使用 <% code %>
  • 默认转义 html 使用 <%= code %>
  • 不转义输出 <%- code %>
  • 支持自定义分隔符
  • 支持过滤器
  • 支持Includes
  • 客户端支持
  • 想支持换行用 <% code -%> 或者 <% -%> 或者 <%= code -%> 或者 <%- code -%>

例子

<h1><%= title %></h1>
<%   users.forEach(function( u ){   %>
        <div>
                <h3><%= u.name %></h3>
                <%- u.des %>
        </div>
<% }) ;%>


<%  js 代码,不能输出。 %>
<%  js 代码 ,输出转义后的返回值,打印到页面上。 %>
<%- js代码,输出返回值,打印到页面上,可以输出html代码。 %>


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


用法

ejs.compile(str, options);// => 返回函数ejs.render(str, options);// => 返回字符串

Options

  • cache 缓存编译好的函数,需要 filename
  • filename 当设置缓存时,用作缓存的 key
  • scope 函数执行上下文
  • debug 设置为true的时候,会输出生成函数体
  • compileDebug 当设置成 false 时,debug 参数无效。
  • client 返回独立的编译好的函数
  • open 开始标签, 默认为 "<%"
  • close 结束标签, 默认为 "%>"
  • * All others are template-local variables

Includes


<ul>  <% users.forEach(function(user){ %>    <% include user/show %>  <% }) %></ul>

自定义分隔符


var ejs = require('ejs');ejs.open = '{{';ejs.close = '}}';


<h1>{{= title }}</h1>

过滤器

EJS 支持过滤器. 过滤器链用于操作数据, 而不用写JavaScript.


模板:

<p><%=: users | map:'name' | join %></p>

输出:

<p>Tj, Mape, Guillermo</p>

渲染:

ejs.render(str, {    users: [      { name: 'tj' },      { name: 'mape' },      { name: 'guillermo' }    ]});

或者 使用第一个用户的 name 进行显示,可以这样写:

<p><%=: users | first | capitalize %></p>

过滤器列表

支持下面这些过滤器:

  • first
  • last
  • capitalize
  • downcase
  • upcase
  • sort
  • sort_by:'prop'
  • size
  • length
  • plus:n
  • minus:n
  • times:n
  • divided_by:n
  • join:'val'
  • truncate:n
  • truncate_words:n
  • replace:pattern,substitution
  • prepend:val
  • append:val
  • map:'prop'
  • reverse
  • get:'prop'

自定义过滤器

只需将方法添加到 .filters 对象:

ejs.filters.last=function(obj) {  return obj[obj.length-1];};

布局

现在 EJS 没有 blocks 的概念, 只有编译时的 includes,然而,你同样可以利用这个功能实现"layouts",通过如下的方式包含头部和底部:

<% include head %><h1>Title</h1><p>My page</p><% include foot %>
如果扩展名是ejs,可以省略,否则应该写全。
<% include head.html %>


客户端支持

包含./ejs.js or ./ejs.min.js and require("ejs").compile(str).

0 0