Express使用html模板的详细代码


Posted in Javascript onSeptember 18, 2017

express默认使用jade模板,可以配置让其支持使用ejs或html模板。

1. 安装ejs

在项目根目录安装ejs.

npm install ejs

2、引入ejs

var ejs = require('ejs'); //我是新引入的ejs插件

3、设置html引擎

app.engine('html', ejs.__express);

设置视图引擎

app.set('view engine', 'html');

保存后重启服务,即可访问html文件。

注:在express搭建的服务器中,html引擎没有被配置,直接添加即可;视图引擎已配置,修改配置即可。

-------------------------------------------------------------------------------------

修改的这些设置做了什么操作?

为什么修改了视图引擎还要增加设置html引擎?

我们先看一下.engine()这个方法。

app.engine(ext, callback);

Express默认使用jade模板。如果你尝试加载 "foo.jade" 文件,Express内部会调用如下操作。

app.engine('jade', require('jade').__express);

如果要使用其他模板引擎,如:将EJS模板映射至".html"文件:

app.engine('html', require('ejs').__express);

这行代码中,实际调用了EJS的.renderFile()方法,ejs.__express是该方法在EJS内部的另一个名字。

因为加载的模板引擎后调用的是同一个方法.__express,所以如果使用的是ejs模板,不用配置该项。

总结:使用html模板,需增加  app.engine('html', require('ejs').__express);

使用EJS模板,不用配置该项。

此时如果在views文件夹里创建index.html文件或index.ejs文件,访问的仍然是默认的index.jade文件。这是为什么呢?这里要说的就是上面提到的第二项设置app.set('view engine', 'html');

app.set(name, value);

在.set()方法的参数中,有一项是'view engine',表示没有指定文件模板格式时,默认使用的引擎插件。如果这里设置为html文件,设置路由指定文件时,只需写文件名,就会找对应的html文件。于此,脑洞大开,试了一下在views中创建3个文件test.jade、test.ejs、test.html。路由设置如下。访问正常!每个路由都指向对应的文件。当然这种写法是完全不被建议也不符合现实的。

router.get('/test/',function(req, res, next){
 res.render('test', {title: 'HTML'});
});

router.get('/test1/',function(req, res, next){
 res.render('test.ejs', {title: 'EJS'});
});

router.get('/test2/',function(req, res, next){
 res.render('test.jade', {title: 'jade});
});

官方API:http://www.expressjs.com.cn/4x/api.html#app.engine

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中实现块作用域的方法
Apr 01 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
AngularJS控制器controller正确的通信的方法
Jan 25 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
BootStrap中Table隐藏后显示问题的实现代码
Aug 31 Javascript
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
在Vue中获取组件声明时的name属性方法
Sep 12 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 Javascript
vue总线机制(bus)知识点详解
May 10 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 Javascript
Mongoose中document与object的区别示例详解
Sep 18 #Javascript
新手vue构建单页面应用实例代码
Sep 18 #Javascript
angularjs路由传值$routeParams详解
Sep 05 #Javascript
vue-ajax小封装实例
Sep 18 #Javascript
信息滚动效果的实例讲解
Sep 18 #Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
Sep 18 #Javascript
angularjs实现猜数字大小功能
May 20 #Javascript
You might like
php实现ping
2006/10/09 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
JavaScript 乱码问题
2009/08/06 Javascript
google地图的路线实现代码
2009/08/20 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
wxPython使用系统剪切板的方法
2015/06/16 Python
Python中的getopt函数使用详解
2015/07/28 Python
python导入时小括号大作用
2017/01/10 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python中的常量和变量代码详解
2018/07/25 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
Python chardet库识别编码原理解析
2020/02/18 Python
工商管理系学生的自我评价分享
2013/11/29 职场文书
绿色环保口号
2014/06/12 职场文书
社区低保工作总结2015
2015/07/23 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android