如何res.render()在express.js中使用点命名文件?例如,
有一个名为的模板文件view.sample.ejs,我想渲染它
app.get('/sample', function(req, res){
res.render('view.sample');
})
Run Code Online (Sandbox Code Playgroud)
结果是,
Error: Cannot find module 'sample'
Run Code Online (Sandbox Code Playgroud)
我怎么用点?
(加)
我想命名跟随mvc模型,就像
sample.model.js
sample.controller.js
sample.view.ejs
sample.view.update.ejs ...
Run Code Online (Sandbox Code Playgroud)
没有问题js文件,但渲染ejs文件我不能.
如果我们查看库node_modules/express/lib/view.js,我们发现模板路径的设计应该被视为扩展名:
this.ext = extname(name); // 'view.sample' => '.sample'
this.name = name; // 'view.sample' => 'view.sample'
Run Code Online (Sandbox Code Playgroud)
当我们尝试加载相应的文件扩展引擎时会产生错误:
if (!opts.engines[this.ext]) { // '.sample' engine not found
// try load engine and throw error
opts.engines[this.ext] = require(this.ext.substr(1)).__express;
}
Run Code Online (Sandbox Code Playgroud)
好的,该怎么办?只需添加扩展名:
app.get('/sample', function(req, res){
res.render('view.sample.ejs');
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |