express 中使用

//设置模板目录
app.set('views', path.join(__dirname, 'views')); //设置模板引擎
app.set('view engine', 'html'); //设置引擎后缀. index.html 中的内容可以是 ejs 代码
app.engine('.html', require('ejs').__express);

ejs的特性: 1、缓存功能,能够缓存已经解析好的html模版; 2、<% code %>用于执行其中javascript代码; 3、<%= code %>会对code进行html转义; 4、<%- code %>将不会进行转义; 5、支持自定义标签,比如’<%‘可以使用’{{’,’%>‘用’}}'代替; 6、提供一些辅助函数,用于模版中使用 7、利用<%- include filename %>加载其他页面模版;

ejs 函数/运算符

  1. 引入模板 不指定后缀就寻找 layout.ejs. (注意:如果没有定义模板目录,则 include无效)

<% include layout.html%> <%- include layout.html%>

  1. 静态编译模板,没有 IO 操作,会非常快,而且可以公用本地变量.
    <% users.forEach(function(user){ %> <% include user/show %> <% }) %>

意思就是模板名是动态的

  1. 自定义 闭合标签. 厌倦了 <% %> ?
//设置闭合标签
var ejs = require('ejs');
ejs.open = '{{';
ejs.close = '}}';

express中全局设定

app.set("view options",{
"open":"{{",
"close":"}}"
});
  1. 变量
//传递 index 模板引擎参数
res.render('index',{'title':'haha'); //使用参数
<title><%= title %></title>
  1. 运行js代码
<%for(var i=p.length-1; i>=0; i--){%>
<input type="button" value=<%=p[i]%>>
<%}%>
  1. 选项 express中 通过 res.redirect(‘login’, [options]); 来对模板进行访问,options就可以设置模板引擎的一些选项 其中options的一些参数为: 1、cache:是否缓存解析后的模版,需要filename作为key; 2、filename:模版文件名; 3、scope:complile后的Function执行所在的上下文环境; 4、debug:标识是否是debeg状态,debug为true则会输出生成的Function内容; 5、compileDebug:标识是否是编译debug,为true则会生成解析过程中的跟踪信息,用于调试; 6、client,标识是否用于浏览器客户端运行,为true则返回解析后的可以单独运行的Function函数; 7、open,代码开头标记,默认为’<%’; 8、close,代码结束标记,默认为’%>’; 9、其他的一些用于解析模版时提供的变量。 在express中使用时,options参数将由response.render进行传入,其中包含了一些express中的设置,以及用户提供的变量值。
  1. f辅助函数 此外ejs还提供了一些辅助函数,用于代替使用javascript代码,使得更加方便的操纵数据。 1、first,返回数组的第一个元素; 2、last,返回数组的最后一个元素; 3、capitalize,返回首字母大写的字符串; 4、downcase,返回字符串的小写; 5、upcase,返回字符串的大写; 6、sort,排序(Object.create(obj).sort()?); 7、sort_by:‘prop’,按照指定的prop属性进行升序排序; 8、size,返回长度,即length属性,不一定非是数组才行; 9、plus:n,加上n,将转化为Number进行运算; 10、minus:n,减去n,将转化为Number进行运算; 11、times:n,乘以n,将转化为Number进行运算; 12、divided_by:n,除以n,将转化为Number进行运算; 13、join:‘val’,将数组用’val’最为分隔符,进行合并成一个字符串; 14、truncate:n,截取前n个字符,超过长度时,将返回一个副本 15、truncate_words:n,取得字符串中的前n个word,word以空格进行分割; 16、replace:pattern,substitution,字符串替换,substitution不提供将删除匹配的子串; 17、prepend:val,如果操作数为数组,则进行合并;为字符串则添加val在前面; 18、append:val,如果操作数为数组,则进行合并;为字符串则添加val在后面; 19、map:‘prop’,返回对象数组中属性为prop的值组成的数组; 20、reverse,翻转数组或字符串; 21、get:‘prop’,取得属性为’prop’的值; 22、json,转化为json格式字符串

辅助函数使用

//注意闭合标签  <%=:  %>
<input type="button" value=<%=:p|first%>>
  1. 给模板添加方法

app.locals[‘say’] = function(){ return ‘hello’; }; 在 app.locals 中定义的方法都可以在模板中引用 <input type=“button” value=<%=say()%>>

Node.js ejs中文手册的更多相关文章

  1. 千里之行始于足下,node.js 资源中文导航

    响应@jiyinyiyong 号召,cnodjs 好的资源蛮多的,的确欠缺分类,在一群FAQ中,的确很容易沉下去,根据自己对node.js的理解,做成一个资源导航,PS:如果觉得合适,希望能够合并的c ...

  2. 数据库课程设计:SQL Server + Express + node.js + ejs 论坛管理系统

    前言 这是一篇对数据库课程设计的总结,这不是教程也不是指导,只是我的经验之谈,其中可能有许多错误,请小心,不要被误导.祝愿你看了这篇文章后能做出更好的设计. 我对web开发并不熟悉,而我们的课程设计只 ...

  3. Node.js学习入门手册

    Node.js 安装 1.下载http://nodejs.org/dist/v0.12.1/node-v0.12.1-x86.msi并完成安装 2.下载https://www.python.org/f ...

  4. node.js express 中文参考手册

    https://www.runoob.com/w3cnote/express-4-x-api.html 原文地址:https://www.zybuluo.com/bajian/note/444152 ...

  5. node.js 爬虫中文乱码 处理

    爬虫中文乱码可做如下处理 import request from 'superagent'; import cheerio from 'cheerio';//类似jquery写法 const Icon ...

  6. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  7. node.js中文资料导航 Mark

    Node.js HomePage Infoq深入浅出Node.js系列(进阶必读) Node.js中文文档 被误解的 Node.js Node.js C++ addon编写实战系列 热门node.js ...

  8. 【干货分享】Node.js 中文资料导航

    这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...

  9. node.js中文资料导航

    以下资料来自gitHUb上面:https://github.com/youyudehexie/node123 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系 ...

随机推荐

  1. WCF学习笔记之消息交换模式

    在WCF通信中,有三种消息交换模式,OneWay(单向模式), Request/Reponse(请求回复模式), Duplex(双工通信模式)这三种通信方式.下面对这三种消息交换模式进行讲解. 1. ...

  2. Entity Framework Code First for SQL Compact

    这篇博客将介绍EF Code First中如何使用SQL Compact.SQL Compact是微软推出的免费的关系型数据库,目前最新版本是SQL Compact 4.0.微软的开发工具VS 201 ...

  3. POJ 1947 Rebuilding Roads 树形DP

    Rebuilding Roads   Description The cows have reconstructed Farmer John's farm, with its N barns (1 & ...

  4. TCP状态转换图详解

    以下对几个关键的中间状态进行说明: 三次握手: LISTEN:表示服务器的某个SOCKET处于监听状态,可以进行连接了. SYN_SENT:表示客户端的某个SOCKET与服务器进行connect时,首 ...

  5. hdu 4114(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4114 思路:首先是floyd预处理出任意两点之间的最短距离.dp[state1][state2][u] ...

  6. Javascript 学习之路:鼠标长按事件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. Spark Streaming容错的改进和零数据丢失

    本文来自Spark Streaming项目带头人 Tathagata Das的博客文章,他现在就职于Databricks公司.过去曾在UC Berkeley的AMPLab实验室进行大数据和Spark  ...

  8. Intent界面跳转与传递数据

    Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. intent可以激活Activity,服务,广播三类组件. 本博文讲的是显示意图激活Activity组件 ...

  9. 深入理解KMP算法之续篇

    前言: 纠结于KMP已经两天了,相较于本人之前博客中提到的几篇博文,本人感觉这篇文章更清楚地说明了KMP算法的来龙去脉. http://www.cnblogs.com/goagent/archive/ ...

  10. 深入理解KMP算法

    前言:本人最近在看<大话数据结构>字符串模式匹配算法的内容,但是看得很迷糊,这本书中这块的内容感觉基本是严蔚敏<数据结构>的一个翻版,此书中给出的代码实现确实非常精炼,但是个人 ...