一、什么是模版引擎

 模版引擎是一个从页面模版根据一定的规则生成HTML的工具,PHP首发,随后出现了ASP、JSP都沿用这个模式,即建立一个HTML页面模版,插入可执行的代码。运行时动态生成HTML

缺点:

页面功能逻辑与页面布局样式耦合,网站规模变大以后逐渐难以维护
语法复杂,对于非技术的网页设计者来说门槛高,难以学习。
功能过于全面,页面设计者可以在页面上编程,不利于功能划分,也使模版解析效率降低。
后来MVC架构的诞生,模版引擎包含在服务器端,控制器得到用户请求后,从模型获取数据,调用模版引擎,模版引擎以数据和页面模版为输入,生成HTML页面,然后返回给控制器。
由控制器交回客户端。

二、使用模版引擎

基于javascript的模版引擎有许多种实现,我们推荐使用ejs,它学习起来简单,与express集成良好,它的标准是javacript实现的,它不仅可以运行在服务器端,还可以运行在浏览器中。服务端运行ejs,这样减少了对浏览器的依赖,而且更符合传统架构的习惯。

分析工程运行:

app.set("views",__dirname+"/views");   指定页面模版的存放目录
app.set("view engine","ejs")     使用ejs模版引擎
res.render('index',{title:'pcat'})  调用模版引擎,接受两个参数,
参数一:模版的名称,即views目录下的模版文件名,不包括扩展名,
参数二:传递给模版的数据。

ejs的标签:

1.<% code %>  JavaSctipt代码
2.<%=code%> 显示替换过HTML特殊字符的内容
            3.<%-code%>  显示原始HTML内容

三、页面布局

  Express从2.x升级到3.x, ejs不支持模版引擎,jade支持
layout.ejs是一个模版布局模版,它描述整个页面的框架架构,默认情况下每个单独的页面都继承自这个框架,替换掉<%-body%>部分,这个功能非常有用。

1. 一般为了保持整个网站的一致风格,HTML的<head>部分以及底部,的大量内容是重复的,因此我们可以把它们放到layout.ejs中,然后把body填充成自定义部分即可。

如果想关闭它则
app.set('view options',{
layout:false
})

2.如果网站不止需要一种页面布局,例如后台和前台,那么我们可以在调用视图模版的时候指定上layout.(ejs的写法)

.

ejs的实现: res.render('userlist',{

title:"后台管理",
 layout:'admin'    // 它就会寻找admin.ejs的布局模版。
}) 

jade的实现:

在我们的请求的目的页面中第一句话写上extends(继承) 模版布局模版名\
例如: extends layout       

node.js模块引擎相关推荐

  1. Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM

    本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...

  2. 编写原生的Node.js模块

    通常,我们开发原生Node.js模块包括但不仅限于以下原因: 对性能有比较苛刻要求的应用.尽管Node.js得益于libuv,在异步I/O操作很有优势,但遇到数字计算时并不是一个很好的选择. 使用更加 ...

  3. node 大写_大写Node.js模块

    node 大写 Today, let's see a third party module that helps us in working with upper-case letters witho ...

  4. Node.js 模块之Nimble流程控制

    NodeJS异步的特性有时候会导致程序非常的难看,回调一层套着一层,这个时候就要用流程控制模块来控制究竟是同步还是异步了. Nimble是一个轻量.可移植的函数式流程控制模块.经过最小化和压缩后只有8 ...

  5. (8)Node.js 模块介绍

    一.Node.js模块介绍 模块(包)是 Node.js 中具有特定功能的对象. 二.web浏览器端和Node端的对比图 我们通过如上图可以看到,再web浏览器端的基本语法,再Node端也能使用,但是 ...

  6. 不再为 Node.js 模块自动引入 Polyfills

    在早期,webpack 的目的是为了让大多数的 Node.js 模块运行在浏览器中,但如今模块的格局已经发生了变化,现在许多模块主要是为前端而编写.webpack <= 4 的版本中提供了许多 ...

  7. node.js 模块_如何创建Node JS可重用模块

    node.js 模块 In my previous post, we have discussed about "How to export and import a Node JS Mod ...

  8. Node.js---02、node.js 模块加载机制

    2019独角兽企业重金招聘Python工程师标准>>> node.js模块分为自定义模块.扩展模块和核心模块.所有模块的加载都是通过关键字require()实现. 1.自定义模块的加 ...

  9. node mocha_如何使用Mocha和Assert测试Node.js模块

    node mocha The author selected the Open Internet/Free Speech Fund to receive a donation as part of t ...

最新文章

  1. 长文综述:从大数据中寻找复杂系统的核心变量
  2. python自动补全库_叼炸天的库! 自动补全 Python 代码,能节省 60% 敲码时间
  3. 如何在Android平台下进行Socket通信
  4. 牛客题霸 [ 岛屿数量] C++题解/答案
  5. CF936D World of Tank(思维dp)
  6. EasyMock教程–入门
  7. python 示例_Python使用示例设置add()方法
  8. Hyper-V 2016 系列教程45 System Center 2016 Data Protection Manager 可以备份什么
  9. js实现表格任意框选_[R] 在表格中插入图形 - formattable + htmlwidgets
  10. 计算机键盘快速指南,菜鸟必看 Windows键盘快捷键入门指南
  11. Android项目中使用XUI框架的准备工作
  12. Oracle coherence介绍
  13. 无线网的dhcp服务器是什么意思,DHCP是什么意思?
  14. 用计算机弹EXO简谱,Power钢琴简谱-数字双手-EXO
  15. ajax实现微博点赞功能
  16. 如何快速入门深度学习写论文?
  17. windows环境下利用python进行CGI配置
  18. React native 照片压缩上传
  19. workspace\.metadata\.plugins\org.eclipse.wst.server.core
  20. 【FPGA实例】基于FPGA的DDS信号发生器设计

热门文章

  1. 顶级程序员的心得 Coders at Work (II)
  2. canvas画布会黑屏吗_Android SurfaceView 黑屏问题
  3. windows7 python 指定源组播 10049_Python3组播通信编程实现教程(发送者+接收者)
  4. springboot启动_Spring boot启动原理解析
  5. JAVA入门级教学之(类之间究竟有哪几种关系呢)
  6. 计算机专业网站的开题ppt,.计算机专业开题报告.ppt
  7. 刀片 显卡 排行_AMD发布RadeonRX6000系列游戏显卡 4599元起
  8. fpga如何约束走线_FPGA时序约束实战篇之多周期路径约束
  9. vue 渲染函数处理slot_vue render 渲染函数
  10. newifi mini固件_如何在vmware虚拟机中安装OpenWrt系统,含x86固件编译教程