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,可自行指定。例如:

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

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

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

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

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

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

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

 
  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:

      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

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

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

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

      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内置的变量来判断当前对象是否是第一个元素或者最后一个元素,例如:

       
      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文件。

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

  1. Express学习 ------模版引擎(handlebars)

    Handlebars一款js模版引擎,我们在做客户端开发的时候,也可能已经使用过.它语法比较简单,和我们平常写的html 一样,只不过html 中可以加入handlebars 表达式. handleb ...

  2. nodejs安装,配置环境,使用express建立一个新项目

    1.下载nodejs安装包 去nodejs官网下载最新版本就行,网址:http://nodejs.cn/download/,点击自己适用的系统,自动下载跟电脑操作系统位数符合的安装包, 下载下来安装包 ...

  3. Nodejs新建博客练习(一)安装express并新建项目

    安装express npm install -g express-generator 新建工程 express blog //新建项目 cd blog && npm install / ...

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

    express相信是很多人用nodejs搭建服务器的首选框架,相关教程有很多,也教会了大家来如何使用.如果你想更深的了解他的细节,不妨和我一起来研究一下. 先来看一个每个人都用到的方法app.use( ...

  5. template模版与Underscore.js

    template模版与Underscore.js 在项目中经常使用的模版是Underscore这个js框架的实用功能. 在html里面设定模板,然后js绑定数据,这样能避免在js中出现非常多的html ...

  6. WPF Template模版之DataTemplate与ControlTemplate【一】

    WPF Template模版之DataTemplate与ControlTemplate[一] 标签: Wpf模版 2015-04-19 11:52 510人阅读 评论(0) 收藏 举报  分类: -- ...

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

    1.如何在项目中安装ejs模板引擎 在NodeJS指南中利用利用以下命令建立网站的基本结构: express -t ejs microblog 运行这个命令后继续运行 cd microblog &am ...

  8. node+express搭建过程以及安装ejs模板引擎解决方案

    一.Node.js简介 1.Node.js是什么? Node.js 可以作为服务器向用户提供服务,与 PHP.Python.Ruby on Rails 相比,它跳过了 Apache.Nginx 等 H ...

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

    安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环 ...

随机推荐

  1. Mac系统下使用VirtualBox虚拟机安装win7--第四步 安装虚拟机硬件扩展包支持

    如 果想要在虚拟机上使用连接在 Mac 上的硬件外设,比如 U 盘,iPhone 等,需要我们在 Virtual Box 官网下载一个硬件支持扩展安装包.同样地,我们先打开虚拟机的下载页面: http ...

  2. 昨天在公司加班,上午好像就是弄一个ftp的linux服务问题

    在网上找了一些方法,可是其中有通过匿名方式登陆,但是在root的权限下才能存放文件,可是把匿名用户登陆取消之后又不能登陆,就是没有列出怎么来添加一个ftp的用户,今天打算直接装一个linux系统在虚拟 ...

  3. C语言中do...while(0)的妙用

    在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语句: 通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错 ...

  4. 蛋疼的Fedora17

    在公司给同事要安装ASM oracle 11g,说要在forder17上安装,于是乎我先在自己的虚拟机上安装了一个forder17,遇到了几个很蛋疼的问题:      1. 安装的时候没有创建普通用户 ...

  5. MDX语法之排序函数Order

    使用场景: 排列指定集的成员,可以选择保留或打乱原有的层次结构. 语法: Numeric expression syntax Order(Set_Expression, Numeric_Express ...

  6. hdu 4055 递推

    转自:http://blog.csdn.net/shiqi_614/article/details/7983298 题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果 ...

  7. FreeSWITCH 体系配置结构

    转自:http://www.cnblogs.com/logo-fox/archive/2013/12/09/3465440.html FreeSWITCH总体结构: FreeSWITCH 由一个稳定的 ...

  8. Waiting Processed Cancelable ShowDialog (Release 2)

    namespace Test { using System; using System.Windows.Forms; static class Program { /// <summary> ...

  9. windows 2003 企业版 下载地址+序列号

    迅雷地址: thunder://QUFodHRwOi8vcy5zYWZlNS5jb20vV2luZG93c1NlcnZlcjIwMDNTUDJFbnRlcnByaXNlRWRpdGlvbi5pc29a ...

  10. Silverlight中的TabControl如何绑定数据?重写tabcontrol和tabItem 解决绑定友好问题。可以绑定对象集合

    在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源,见 将 TabControl 绑定到数据的示例 http://msdn.microsoft.com/zh-cn/l ...