node.js 模板 ejs 转
node.js 模板引ejs。
搜了一把推荐用ejs的最多。
速度比对:http://www.cnblogs.com/fengmk2/archive/2011/04/28/2031971.html
ejs速度不是最快的,推荐最多大概是因为其简单的语法结构。主要通过<% %><%=%>来嵌套代码。比如符合阅读逻辑,同时也省去不少学习语法的成本。
另有一些自定义的方法:如link_to(name, url),img_tag(url)等。
还可以支持json。
===========
ejs的特性:
1、缓存功能,能够缓存已经解析好的html模版;
2、<% code %>用于执行其中javascript代码;
3、<%= code %>会对code进行html转义;
4、<%- code %>将不会进行转义;
5、支持自定义标签,比如'<%'可以使用'{{','%>'用'}}'代替;
6、提供一些辅助函数,用于模版中使用
7、利用<%- include filename %>加载其他页面模版;
使用示例
1、ejs.compile(str, options); 将返回内部解析好的Function函数
2、ejs.render(str, 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中的设置,以及用户提供的变量值。
此外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格式字符串
=====================
模板示例:
- <!-- templates/supplies.ejs -->
- <h1>Supplies</h1>
- <ul>
- <% for(var i=0; i<supplies.length; i++) {%>
- <li><%= supplies[i] %></li>
- <% } %>
- </ul>
关于ejs的使用可参照:
http://node-js.diandian.com/post/2012-07-03/40029704518
http://blog.csdn.net/lisownjay/article/details/16952723
http://www.csser.com/board/4fddc4f0b28ed7d857001674#/post/4fddc603b28ed7d85700168a
http://nodeguide.com/index.html
转自 http://sunnyhl.iteye.com/blog/1985539
node.js 模板 ejs 转的更多相关文章
- Node.js模板引擎学习----ejs
环境:windows+node.js+express 一.安装ejs 打开cmd窗口,输入npm install ejs -g,等待下载安装完成. 二.使用 调用过程中使用路由机制和模板,路由请求地址 ...
- Node.js模板引擎的深入探讨
每次当我想用 node.js 来写一个 web 相关项目的时候.我总是会陷入无比的纠结.原因是 JavaScript 生态圈里的模板引擎实在太多了,但那么多却实在找不出一个接近完美的,所谓完美的概念就 ...
- [js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义
一.转义与非转义 jade模板文件代码: doctype html html head meta(charset='utf-8') title jade学习-by ghostwu body h3 转义 ...
- node.js 使用ejs模板引擎时后缀换成.html
这是一个小技巧,看着.ejs的后缀总觉得不爽,使用如下方法,可以将模板文件的后缀换成我们习惯的.html. 1.在app.js的头上定义ejs: 代码如下: var ejs = require('ej ...
- node.js + express(ejs) + mongodb(mongoose) 增删改实例
MongoDB 安装步骤总结: 1.解压目录到d盘 mongodb 2.安装目录的下新建文件mongo.config文件 ##store data here dbpath=D:\mongodb\dat ...
- node.js—express+ejs、express+swig、
安装:npm install -g express-generator 普通express 网站 创建:express testWeb 安装依赖:npm install 修改app.js文件并运行 找 ...
- consolidate.js 一个Node.js 模板引擎的集合
consolidate是一个模板引擎的结合体.包括了常用的jade和ejs.通过配置我们就可以使用多种模板引擎. consolidate.js安装 npm install consolidate co ...
- [js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用
一.block 模块复用 把需要复用的模块用block定义 block后面跟上模块的名字,引用一次block 内容就会被复用一次 编译之后的结果: 二,继承模板(extends) 在实际开发中,网站的 ...
- node.js的ejs模版引擎
ejs版本是0.8.8,生成的views目录下面只有index.ejs and error.ejs,没有layout.ejs. D:\lianchuangfile\nodeDevelop\microb ...
随机推荐
- Ubuntu 14.04 64bit 系统下打开PHPadmin时出现缺少mysqli|mysql 扩展的解决方法(php5)
网上找了很多方法,都是翻来覆去的抄袭. 都在说把 /etc/php5/apache2/php.ini 下面的 ;extension=php_mysqli.dll 前面的 ; 注释符号去掉 再重启 ...
- Android开发9:网络访问&Web服务开发
前言 啦啦啦各位小伙伴们好~ 一起进入我们今天的主题.今天我们将和大家学习网络访问和Web服务开发的相关知识,一起学习熟练使用 HttpURLConnection 访问 WebService,熟悉使用 ...
- HTML5 File接口(在web页面上使用文件)
File接口提供了与文件相关的信息,并且运行JavaScript在web页面上去访问文件中的内容. File对象来自于用户使用input标签选择文件返回的FileList对象,来自于拖放操作的Data ...
- JS高级程序设计学习笔记——继承
我们知道,在OO语言中,继承可分为接口继承和实现继承.而ECMAScript的函数没有签名,不能实现“接口继承”,只能通过原型链实现“实现继承”. 在学习了各种继承模式之后,简单总结一下各种继承模式的 ...
- SQL中的存储过程和函数
存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如 ...
- 在.NET Core控制台应用程序中使用强类型配置
想象一下,你写一个控制台应用程序,你想要从配置文件中以强类型方式读取配置. .NET Core 可以帮助我们解决. 通常我会在ASP.NET Core MVC中演示,但简单起见,只在控制台应用程序中演 ...
- Redis安装以及基本数据类型
安装 1.阿里云CentOS 1.进入到centos系统,输入wget http://download.redis.io/releases/redis-3.2.8.tar.gz ,下载好目前最新版的R ...
- 极光推送CTO黄鑫:技术人员要建立自己的知识图谱
本周,我们邀请到了极光推送CTO兼首席科学家黄鑫进行人物专访,在展示风采的同时,也分享会员们对技术.对工作.对人生的感悟. 扎实的底层服务是扩张关键 极光推送是一个做第三方云服务的公司,在 ...
- jquery小测
1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() $("div:has ...
- Linux i2c子系统(三) _解决probe无法执行
如果你也遇到了填充了id_match_table,compitible怎么看都一样,但probe就是不执行(让我哭一会),你可以回头看一下上一篇的模板,我们这里虽然使用的是设备树匹配,但和platfo ...