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 相关文章推荐
给Function做的OOP扩展
May 07 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
JS实现文字向下滚动完整实例
Feb 06 Javascript
深入解析JavaScript中的立即执行函数
May 21 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
Jan 08 Javascript
angularJs 表格添加删除修改查询方法
Feb 27 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
小程序登录/注册页面设计的实现代码
May 24 Javascript
JavaScript监听一个DOM元素大小变化
Apr 26 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 Javascript
Node.js API详解之 dns模块用法实例分析
May 15 Javascript
针对Vue路由history模式下Nginx后台配置操作
Oct 22 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php实现文件下载实例分享
2014/06/02 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
php生成HTML文件的类方法
2019/10/11 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Python3安装Pillow与PIL的方法
2019/04/03 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
关于热爱祖国的演讲稿
2014/05/04 职场文书
项目建议书范文
2014/05/12 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
运动会加油稿30字
2015/07/21 职场文书
谢师宴学生致辞
2015/07/27 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
Python自动化爬取天眼查数据的实现
2021/06/15 Python
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript