nodejs express template (模版)的使用 (ejs + express)

[javascript] view plaincopy

  1. var app=require("express").createServer();
  2. app.set("view engine","ejs");
  3. app.get("/",function(req,res) {
  4. res.render("index",{"title":"test"});
  5. });
  6. app.listen(3000);

1、上面是express使用模版的一个基本例子

app.set("view engine","ejs"); 这句将模版引擎设置为 ejs (http://github.com/visionmedia/ejs

ejs可通过 npm install ejs 来进行安装

2、在app.get中。

res.render("index",{"title":"test"}); 会执行2个步骤。

  1. 会读取 ./views/index.ejs文件的内容,然后将其中的title变量替换为test,例如<%=title%>会变为test。假设返回的内容为content1
  2. 接着,会读取./views/layout.ejs,并将其中的body变量替换为content1,例如<%=body%>会变为content1的内容。

3、在2中,如果不愿意使用默认的layout.ejs,可自行指定。例如:

[javascript] view plaincopy

  1. res.render("index",{"title":"test","layout":"main"});

[javascript] view plaincopy

  1. res.render("index",{"title":"test","layout":"main.ejs"});

4、如果不愿意使用layout,则可以设置layout为false,例如:

[javascript] view plaincopy

  1. res.render("index",{"layout":false});

5、如果不想每个请求都单独设置一次。可以使用全局设置:

[javascript] view plaincopy

  1. app.set("view options",{
  2. "layout":false
  3. });

6、ejs 里,默认的闭合标记是 <%  .. %>,我们也可以定义自己的标签。例如:

[javascript] view plaincopy

  1. app.set("view options",{
  2. "open":"{{",
  3. "close":"}}"
  4. });

7、 每个模版引擎的用法都有所异同,总体的使用方法都是上面这样的。

以下是目前常用的模版引擎:

Template Engines

Below are a few template engines commonly used with Express:

8、在web应用中,经常会需要重复显示某个内容,例如:用户评论功能,需要重复显示出每一条用户的评论,这个时候,我们可以通过循环来实现。但是也可以使用【局部模版】(partial)来实现。例如:

    1. 首先我们建一个局部的模版 ./views/comment.ejs:

      [html] view plaincopy

      1. <div class="comment_item">
      2. <div class="comment_user"><%=comment.user%></div>
      3. <div class="comment_content"><%=comment.content%></div>
      4. </div>

      注意:这里是comment.xxxx

    2. 然后在./views/index.ejs中,通过partial调用comment

      [javascript] view plaincopy

      1. this is <%=title%>!
      2. <br/>
      3. <%- partial("comment",comments)%>

      注意:这里是 partial("comment.ejs", comments); <-- 单词要用复数。

    3. 最后是在router中,调用index.ejs。

      [javascript] view plaincopy

      1. var app=require("express").createServer();
      2. app.set("view engine","ejs");
      3. app.get("/",function(req,res){
      4. res.render("index",{"title":"test","layout":false,"comments":[
      5. {"user":"gainover","content":"test1"},
      6. {"user":"zongzi","content":"test2"},
      7. {"user":"maomao","content":"test3"}
      8. ]});
      9. });
      10. app.listen(3000);

      注意:代码里的 comments 和 index.ejs的 comments变量名称一致,而partial所调用的comment.ejs中,则采用comment 的单数形式。

    4. 查看源代码:效果图如下:

      在列表显示时,我们通常会遇到的场景是,对第一个元素或者最后一个元素加以特殊显示。在partial中,我们可以通过express内置的变量来判断当前对象是否是第一个元素或者最后一个元素,例如:

      [javascript] view plaincopy

      1. <div class="comment_item<%if(firstInCollection){%> firtitem <%}%>">
      2. <div class="comment_user"><%=comment.user%></div> :
      3. <div class="comment_content"><%=comment.content%></div>
      4. </div>

      这样第一条评论的 class 里就会多一个firstitem。

      类似的内置变量还有:

      firstInCollection 如果是数组的第一个元素,则为true
      indexInCollection 当前元素在数组里的索引 
      lastInCollection 如果是数组的最后一个元素,则为true
      collectionLength 数组的长度

    5. 最后是partial调用模版时的路径查找问题:

      partial("edit") 会查找同目录下的edit.ejs文件。

      partial("../message") 会查找上一级目录的message.ejs文件。

      partial("users") 会查找 users.ejs文件,如果不存在users.ejs, 则会查找 /users/index.ejs文件。

      Ref: http://node-js.diandian.com/post/2012-07-03/40029704518

时间: 2024-11-03 21:57:53

nodejs express template (模版)的使用 (ejs + express)的相关文章

CAM Express加工模版设置流程

在CAM软件进行加工编程,往往需要花费很多时间进行加工编程设置,这些设置包括:加工坐标,加工几何体,加工刀具,加工方法,加工工序...等,而在加工工序中还要进一步定义刀轨样式,切削深度,切削步距...等切削参数,以及进退刀样式,横越样式...等非切削参数,最后还有转速和进给量的设置.零零总总的这些设置加起来有数十至上百个,所以要对一个产品完成可加工之完整刀轨编程,花费之时间当然不可言喻.然而,有很多时后所加工的产品外型大同小异,加工编程设置当然也都差不多,因此,为了避免每次对类似产品进行加工编程

Express细节探究(1)——app.use(express.static)

express相信是很多人用nodejs搭建服务器的首选框架,相关教程有很多,也教会了大家来如何使用.如果你想更深的了解他的细节,不妨和我一起来研究一下. 先来看一个每个人都用到的方法app.use(express.static(__dirname+'/public')); 你肯定在你的app文件中这么用过它: app.use(express.static(__dirname + '/public'));//设置静态文件目录 正如注释中写的那样,这句话的意思是,将静态文件目录设置为项目根目录+/

express在本地模式下:&#39;express&#39; 不是内部或外部命令,也不是可运行的程序或批处理文件。

今天突然来了兴致,准备玩玩nodeJS,安装nodeJS的时候没有任何问题,一路next就完成了. node -v 没问题 可以检测到版本号,node环境ok~ 本地模式安装express框架:npm install express 检测express是否安装成功:express -V 窗口打印出:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件. 我去,一口老血吐出,什么情况... 经历了一番谷百后发现,因express默认安装是最新的版本,已经是4.x.x的版本.而最新

WPF Template模版之DataTemplate与ControlTemplate【一】

WPF Template模版之DataTemplate与ControlTemplate[一] 标签: Wpf模版 2015-04-19 11:52 510人阅读 评论(0) 收藏 举报  分类: -------1.5 .NET(25)  版权声明:本文为博主郎涯工作室原创文章,未经博主允许不得转载. 目录(?)[+] WPF系统不但支持传统的Winfrom编程的用户界面和用户体验设计,更支持使用专门的设计工具Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念. 1. 模板的内涵 作

nodejs + mongodb + ejs + express 实现页面展示 connection

(1)mongo启动服务,请查看 http://www.cnblogs.com/he0xff/p/5820575.html (2)新建 某个文件:js 例如:hello.js 安装 npm install ejs npm install express npm install mongodb npm install monk 新建某个 view层(看你hello.js中的定义) /** @jackhe* 文件来自:https://docs.mongodb.com/getting-started/

Express框架中如何引用ejs模板引擎

原文地址:http://www.cnblogs.com/greenteaone/p/3685733.html 1.如何在项目中安装ejs模板引擎 在NodeJS指南中利用利用以下命令建立网站的基本结构: express -t ejs microblog 运行这个命令后继续运行 cd microblog && npm install(安装项目的依赖属性), 发现安装的模板引擎是jade,而不是ejs.原因是现在的版本已经没有-t这个命令了,改为 express -e  microblog 运

【Node.js基础篇】(八)安装Express 3.2框架以及ejs模板

Html模板以及路由文件等服务器必备的功能虽然我们都可以自己实现,但在稳定性.可靠性.全面性方面肯定是有所遗漏的,所以,从今天起,Node的学习就进入了框架学习部分. 维基百科: 框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作.或者说使用别人搭好的舞台来做编剧和表演. 第一个要学习的框架是在Node中被广泛应用的框架--Express. 安装Express 如果你使用的Node开发环境是WebStorm的话,在新建工程的时候可以直接选新建Node工程,它会给你

nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)

安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环境变量,系统变量->path,添加“C:\Program Files\nodejs\” 运行cmd,输入node -v C:\Windows\system32>node -v v8.9.0 安装express 找到node安装目录C:\Program Files\nodejs,命令行运行 C:\P

Nodejs in Visual Studio Code 03.学习Express

1.开始 下载源码:https://github.com/sayar/NodeMVA Express组件:npm install express -g(全局安装) 2.ExpressRest 打开目录08_ExpressREST app.js var express = require('express'); var app = express(); //捕获GET方法,并处理返回一个Json,比C#写Json简单多了啊 app.get('/', function (req, res) { re