nodejs express template (模版)的使用 (ejs + express)
- var app=require("express").createServer();
- app.set("view engine","ejs");
- app.get("/",function(req,res) {
- res.render("index",{"title":"test"});
- });
- app.listen(3000);
app.set("view engine","ejs"); 这句将模版引擎设置为 ejs (http://github.com/visionmedia/ejs)
ejs可通过 npm install ejs 来进行安装
2、在app.get中。
res.render("index",{"title":"test"}); 会执行2个步骤。
会读取 ./views/index.ejs文件的内容,然后将其中的title变量替换为test,例如<%=title%>会变为test。假设返回的内容为content1
接着,会读取./views/layout.ejs,并将其中的body变量替换为content1,例如<%=body%>会变为content1的内容。
3、在2中,如果不愿意使用默认的layout.ejs,可自行指定。例如:
- res.render("index",{"title":"test","layout":"main"});
或
- res.render("index",{"title":"test","layout":"main.ejs"});
4、如果不愿意使用layout,则可以设置layout为false,例如:
- res.render("index",{"layout":false});
5、如果不想每个请求都单独设置一次。可以使用全局设置:
- app.set("view options",{
- "layout":false
- });
6、ejs 里,默认的闭合标记是 <% .. %>,我们也可以定义自己的标签。例如:
- app.set("view options",{
- "open":"{{",
- "close":"}}"
- });
7、 每个模版引擎的用法都有所异同,总体的使用方法都是上面这样的。
以下是目前常用的模版引擎:
Template Engines
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
8、在web应用中,经常会需要重复显示某个内容,例如:用户评论功能,需要重复显示出每一条用户的评论,这个时候,我们可以通过循环来实现。但是也可以使用【局部模版】(partial)来实现。例如:
首先我们建一个局部的模版 ./views/comment.ejs:
- <div class="comment_item">
- <div class="comment_user"><%=comment.user%></div>
- <div class="comment_content"><%=comment.content%></div>
- </div>
注意:这里是comment.xxxx
然后在./views/index.ejs中,通过partial调用comment
- this is <%=title%>!
- <br/>
- <%- partial("comment",comments)%>
注意:这里是 partial("comment.ejs", comments); <-- 单词要用复数。
最后是在router中,调用index.ejs。
- var app=require("express").createServer();
- app.set("view engine","ejs");
- app.get("/",function(req,res){
- res.render("index",{"title":"test","layout":false,"comments":[
- {"user":"gainover","content":"test1"},
- {"user":"zongzi","content":"test2"},
- {"user":"maomao","content":"test3"}
- ]});
- });
- app.listen(3000);
注意:代码里的 comments 和 index.ejs的 comments变量名称一致,而partial所调用的comment.ejs中,则采用comment 的单数形式。
查看源代码:效果图如下:
在列表显示时,我们通常会遇到的场景是,对第一个元素或者最后一个元素加以特殊显示。在partial中,我们可以通过express内置的变量来判断当前对象是否是第一个元素或者最后一个元素,例如:
- <div class="comment_item<%if(firstInCollection){%> firtitem <%}%>">
- <div class="comment_user"><%=comment.user%></div> :
- <div class="comment_content"><%=comment.content%></div>
- </div>
这样第一条评论的 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文件。
nodejs express template (模版)的使用 (ejs + express)的更多相关文章
- Express学习 ------模版引擎(handlebars)
Handlebars一款js模版引擎,我们在做客户端开发的时候,也可能已经使用过.它语法比较简单,和我们平常写的html 一样,只不过html 中可以加入handlebars 表达式. handleb ...
- nodejs安装,配置环境,使用express建立一个新项目
1.下载nodejs安装包 去nodejs官网下载最新版本就行,网址:http://nodejs.cn/download/,点击自己适用的系统,自动下载跟电脑操作系统位数符合的安装包, 下载下来安装包 ...
- Nodejs新建博客练习(一)安装express并新建项目
安装express npm install -g express-generator 新建工程 express blog //新建项目 cd blog && npm install / ...
- Express细节探究(1)——app.use(express.static)
express相信是很多人用nodejs搭建服务器的首选框架,相关教程有很多,也教会了大家来如何使用.如果你想更深的了解他的细节,不妨和我一起来研究一下. 先来看一个每个人都用到的方法app.use( ...
- template模版与Underscore.js
template模版与Underscore.js 在项目中经常使用的模版是Underscore这个js框架的实用功能. 在html里面设定模板,然后js绑定数据,这样能避免在js中出现非常多的html ...
- WPF Template模版之DataTemplate与ControlTemplate【一】
WPF Template模版之DataTemplate与ControlTemplate[一] 标签: Wpf模版 2015-04-19 11:52 510人阅读 评论(0) 收藏 举报 分类: -- ...
- Express框架中如何引用ejs模板引擎
1.如何在项目中安装ejs模板引擎 在NodeJS指南中利用利用以下命令建立网站的基本结构: express -t ejs microblog 运行这个命令后继续运行 cd microblog &am ...
- node+express搭建过程以及安装ejs模板引擎解决方案
一.Node.js简介 1.Node.js是什么? Node.js 可以作为服务器向用户提供服务,与 PHP.Python.Ruby on Rails 相比,它跳过了 Apache.Nginx 等 H ...
- nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)
安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环 ...
随机推荐
- NYOJ题目11613n+1问题
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAscAAAIvCAIAAAAXg+GWAAAgAElEQVR4nO3dO1LryNsH4G8T5CyE2A ...
- React之JSX入门
React是由ReactJS与React Native组成,其中ReactJS是Facebook开源的一个前端框架,React Native 是ReactJS思想在native上的体现! JSX并不是 ...
- 通过btn获取所在cell
[cell.btn addTarget:self action:@selector(cellBtnClicked:event:) forControlEvents:UIControlEventTouc ...
- sys.sysprocesses视图的使用小结
Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁包含正在 SQL Server 实例上运行的进程的相关信息.这些进程可以是客户端进程或 ...
- 开发一款完备的android应用所必备的知识
原文:http://blog.csdn.net/xyz_lmn/article/details/17575709
- poj 1195:Mobile phones(二维树状数组,矩阵求和)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 14489 Accepted: 6735 De ...
- Linux中exec()执行文件系列函数的使用说明
函数原型: 描述: exec()系列函数使用新的进程映像替换当前进程映像. 工作方式没有什么差别, 只是参数传递的方式不同罢了. 说明: 1. 这6个函数可分为两大类: execl( ...
- node 初识
跟随startup engineering 已经到了week2了,目前为止课程都没有详细介绍node,恐怕以后也不会讲得太细,只是罗列出了一堆阅读材料供你自学.花了点时间阅读些许,在此做个墨迹. Ho ...
- C#路径/文件/目录/I/O常见操作汇总
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- android 入门-android Studio 快捷输入
1.输入 log的时候按一下Tab.就会打出 private static final String TAG="Settings"; 2. shift +alt+x 运行 shif ...