理解node的模板引擎

1.1.3:分析模板引擎

   1.什么是模板引擎

模板引擎是一个将页面模板和要显示的数据结合生成HTML页面的工具

可以这么理解,如果说Express中的路由控制方法是MVC中的控制器的话,那么模板就是MVC的视图。

什么是ejs?

ejs是模板引擎的一种,也是在1.1.2节中用到的模板引擎,因为它使用起来非常简单,而且与express集成良好。

2.使用模板引擎

我在之前讲过通过以下两行代码设置模板文件的存储位置和使用的模板引擎:

app.set(‘views‘, path.join(__dirname, ‘views‘));
app.set(‘view engine‘, ‘ejs‘); 

注意:通过express -e blog,我们只是初始化了一个使用ejs模板引擎的工程而已,比如node_modules下添加了ejs模块,在views有index.ejs。这并不是说强制该项目只能使用ejs,而不能使用其它模板引擎如jade,真正指定使用哪个模板引擎的是:

app.use(‘view engine‘,‘ejs‘);

  在1.1.2节的routes/index.js中通过调用res.render()渲染模块,并将其产生的页面返回给客户端。它接收两个参数,第一个参数是模板名称,即views目录下的模板文件名,扩展名.ejs可选;第二个参数是传递给模板的数据对象,用于模板翻译。

打开views/index.ejs,内容如下:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>

  当我们res.render("index",{title:"木人子韦"});时,模板引擎会把<%=title%>替换成“木人子韦”,然后把替换后的页面显示给用户。

渲染后生成的页面代码为:

<!DOCTYPE html>
<html>
  <head>
    <title>木人子韦</title>
    <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
  </head>
  <body>
    <h1>木人子韦</h1>
    <p>Welcome to 木人子韦</p>
  </body>
</html>

注意:通过app.use(express.static(path.join(__dirname, ‘public‘)));将css等静态文件的根目录设置为了public文件夹,所以在上面代码中的

href=‘/stylesheets/style.css‘

就相当于

href=‘public/stylesheets/style.css‘

ejs的标签系统非常简单,有以下标签:

  • <% ‘脚本‘ 标签,用于流程控制,无输出。
  • <%_ 删除其前面的空格符
  • <%= 输出数据到模板(输出是转义 HTML 标签)
  • <%- 输出非转义的数据到模板
  • <%# 注释标签,不执行、不输出内容
  • <%% 输出字符串 ‘<%‘
  • %> 一般结束标签
  • -%> 删除紧随其后的换行符
  • _%> 将结束标签后面的空格符删除

注意:当变量code为普通字符串时,<%=code%>和<%-code%>没有区别。当code为<div>从删库到跑路</div>这样的字符串时,<%=code%>会原样输出<div>从删库到跑路</div>,而<%-code%>则会显示  从删库到跑路  字符串。

感受一下标签<% code %>,其它的标签找官方文档https://ejs.bootcss.com/。下面模仿ejs的官方实例:

实例

数据

user:{name:"木人子韦"}

模板

<% if (user) { %>
  <h2><%= user.name %></h2>
<% } %>

渲染后的代码

<h2>木人子韦</h2>

  

 3.页面布局

在Express 3.x中不再使用layout.ejs进行页面布局,转而使用include来替代。

include的简单使用方法如下:

index.ejs

<%- include top%>
murenziwei
<%- include bottom%>

  top.ejs

I am top.ejs

 bottom.ejs

I am bottom.ejs

 最终,index.ejs会显示

I am top.ejs
murenziwei
I am bottom.ejs

 在1.1.3节中,我们学习了模板引擎的相关知识。

原文地址:https://www.cnblogs.com/murenziwei/p/10159590.html

时间: 2024-11-09 03:44:52

理解node的模板引擎的相关文章

Node.js模板引擎的深入探讨

每次当我想用 node.js 来写一个 web 相关项目的时候,我总是会陷入无比的纠结,原因是 JavaScript 生态圈里的模板引擎实在太多了,但那么多却实在找不出一个接近完美的,所谓完美的概念就是功能丰富,书写简单,前后端可共用等一些属性.虽然可以在 Template Chooser 按功能进行挑选,但挑选的结果再用来对比还是各有各的问题.所以干脆就一些模板引擎进行稍微深入的分析,希望通过对比总结出哪种更值得去使用. 第一轮排除 在上次node模板引擎简单比较的文章里,其实已经有个简单的筛

Node.js模板引擎学习----ejs

环境:windows+node.js+express 一.安装ejs 打开cmd窗口,输入npm install ejs -g,等待下载安装完成. 二.使用 调用过程中使用路由机制和模板,路由请求地址为根目录,模板文件为home.ejs[注:模板引擎文件为.ejs文件] 1.新建js文件为index.js 写入如下代码: varexpress=require("express"); varapp=express(); //设置渲染引擎 app.set("viewengine&

[js高手之路]Node.js模板引擎教程-jade速学与实战1

环境准备: 全局安装jade: npm install jade -g 初始化项目package.json: npm init --yes 安装完成之后,可以使用 jade --help 查看jade的命令行用法 一.在项目目录下新建index.jade文件 inde.jade代码: 1 doctype html 2 html 3 head 4 meta(charset='utf-8') 5 title 6 body 7 h3 欢迎学习jade 语法规则: 1, 标签按照html的缩进格式写 2

[js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义

一.转义与非转义 jade模板文件代码: 1 doctype html 2 html 3 head 4 meta(charset='utf-8') 5 title jade学习-by ghostwu 6 body 7 h3 转义与非转义 8 - var userName = 'ghostwu' 9 - var str = '<script>alert("ghostwu");</script>' 10 div #{userName} 11 div #{str} 1

[js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用

一.block 模块复用 把需要复用的模块用block定义 block后面跟上模块的名字,引用一次block 内容就会被复用一次 编译之后的结果: 二,继承模板(extends) 在实际开发中,网站的头部,尾部一般都是公用的,我们可以通过jade的模板继承( extends ) 功能,把公共部分抽象出来,然后让不同的页面继承这些公共部分, 而且继承过来之后还可以重写 新建一个layout.jade模板 这是一个公共的模板,如果我们的首页需要这个公共模板,同时首页需要修改这个公共模板的布局部分(

[js高手之路]Node.js模板引擎教程-jade速学与实战3-mixin

强大的mixin mixin类似于函数的功能,可以达到模块复用的效果 mixin show: 定义一个类似函数的功能,名字叫show,里面的就是他的内容 +show: 调用show,每调用一次执行一次里面的内容 编译之后的结果: mixin也可以传递参数 编译之后的结果: mixin支持嵌套调用 编译之后的结果: mixin支持传递模块 编译之后的结果: mixin还可以传递属性 编译之后的结果: mixin支持传递不定参数 编译之后

给开发者10款最佳的 JavaScript 模板引擎

使用模板的想法是使生活更容易,而不必编写所有的代码,只需要更改代码的一部分就可以.像许多模板支持多种语言,JavaScript也支持使用模板引擎.它允许您创建一个代码库,您可以开始构建你需要的应用程序.这里有10个最有用的JavaScript开发者模板引擎.希望能给开发者和设计者提供一定的帮助. 1.Mustache.js Mustache 是 logic-less 模板语法,可以使用在 HTML,配置文件,源代码等等地方.它是使用哈希表或者对象提供的值来扩展模板标签. 2.CoffeeKup

(转)浅谈dedecms模板引擎工作原理及自定义标签

理解织梦模板引擎有什么意义?一方面可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步.理解织梦会使我们写php代码时更顺手,同时能学习一些php代码的组织方式. 这似乎不是那么简单,如果你只想学习自定义标签,可以看一下“是否需要自定义标签”和““扩展标签””就够了. 一解析式引擎 如果你还没用过dedecms的标签,先用一下,也可以看一下“dedecms网页模板编写”.熟悉一下memberlist这个标签,下面会以这个标签为例. 织梦提供的模板分析引擎有解析式和编

Node.js开发入门—使用jade模板引擎

在"Node.js开发入门--Express安装与使用"里,我们曾经使用express generator创建了一个HelloExpress网站,express工具为我们生成了基本的目录结构.模板.stylesheet.routers等.虽然那只是一个简单的HelloWorld类的小东西,可里面包含的内容还是有些多了,为了更好的理解Express所支持的jade模板引擎的用法,我们这次提供一个手动创建的小网站,可以显示来访者的IP,并对访问进行计数. 安装jade npm instal