时间:2021-05-28
express默认使用jade模板,可以配置让其支持使用ejs或html模板。
1. 安装ejs
在项目根目录安装ejs.
npm install ejs2、引入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://.cn/4x/api.html#app.engine
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言一般我们在做nodeweb项目的时候,想使用我们平时常用的html模板,express默认使用jade模板,本身是没有HTML的,那么如何实现呢?ejs模板
使用vs创建的express站点,默认使用的是jade模板引擎,但是我不太喜欢这种方式,因为我觉得html本身的语义特性是我喜欢的,另外html本身也足够简洁,
1.配置模板引擎Express默认的模板引擎是pug(jade),想要渲染html页面必须要导入对应的模板引擎ejsnpminstallejs安装完成在app.
什么是模板引擎模板引擎(TemplateEngine)是一个将页面模板和要显示的数据结合起来生成HTML页面的工具。如果说上面讲到的express中的路由控制方
本文实例为大家分享了基于Express框架使用POST传递Form数据的具体代码,供大家参考,具体内容如下客户端使用Form发送数据在客户端Html文件中For