express模板引擎 html,在Express中使用html模板

62e162ccada8

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

第一条:若出现返回的html模板不渲染却直接装进pre标签里显示在页面上,可尝试更改端口后重试

1.安装ejs

npm install ejs

2.引入ejs

var ejs = require('ejs');

3.设置html引擎

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

app.set('view engine', 'html');//设置视图引擎

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

4.解释说明

先看一下.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});

});

访问正常!每个路由都指向对应的文件。当然这种写法是完全不被建议也不符合现实的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值