app.set("view engine","ejs"); 这句将模版引擎设置为 ejs (http://github.com/visionmedia/ejs)javascript
ejs可经过 npm install ejs 来进行安装html
二、在app.get中。java
res.render("index",{"title":"test"}); 会执行2个步骤。node
会读取 ./views/index.ejs文件的内容,而后将其中的title变量替换为test,例如<%=title%>会变为test。假设返回的内容为content1git
接着,会读取./views/layout.ejs,并将其中的body变量替换为content1,例如<%=body%>会变为content1的内容。github
三、在2中,若是不肯意使用默认的layout.ejs,可自行指定。例如:web
或express
四、若是不肯意使用layout,则能够设置layout为false,例如:npm
五、若是不想每一个请求都单独设置一次。可使用全局设置:数组
六、ejs 里,默认的闭合标记是 <% .. %>,咱们也能够定义本身的标签。例如:
七、 每一个模版引擎的用法都有所异同,整体的使用方法都是上面这样的。
如下是目前经常使用的模版引擎:
Below are a few template engines commonly used with Express:
Haml haml implementation
Jade haml.js successor
EJS Embedded JavaScript
CoffeeKup CoffeeScript based templating
jQuery Templates for node
八、在web应用中,常常会须要重复显示某个内容,例如:用户评论功能,须要重复显示出每一条用户的评论,这个时候,咱们能够经过循环来实现。可是也可使用【局部模版】(partial)来实现。例如:
首先咱们建一个局部的模版 ./views/comment.ejs:
注意:这里是comment.xxxx
而后在./views/index.ejs中,经过partial调用comment
注意:这里是 partial("comment.ejs", comments); <-- 单词要用复数。
最后是在router中,调用index.ejs。
注意:代码里的 comments 和 index.ejs的 comments变量名称一致,而partial所调用的comment.ejs中,则采用comment 的单数形式。
查看源代码:效果图以下:
在列表显示时,咱们一般会遇到的场景是,对第一个元素或者最后一个元素加以特殊显示。在partial中,咱们能够经过express内置的变量来判断当前对象是不是第一个元素或者最后一个元素,例如:
这样第一条评论的 class 里就会多一个firstitem。
相似的内置变量还有:
firstInCollection 若是是数组的第一个元素,则为true
indexInCollection 当前元素在数组里的索引
lastInCollection 若是是数组的最后一个元素,则为true
collectionLength 数组的长度
最后是partial调用模版时的路径查找问题:
partial("edit") 会查找同目录下的edit.ejs文件。
partial("../message") 会查找上一级目录的message.ejs文件。
partial("users") 会查找 users.ejs文件,若是不存在users.ejs, 则会查找 /users/index.ejs文件。