Node.js Express.js res.render点名称文件

Node.js Express.js res.render点名称文件,node.js,express,Node.js,Express,如何在express.js中的res.render()上使用点名文件? 比如说, 有一个名为view.sample.ejs的模板文件,我想渲染它 app.get('/sample', function(req, res){ res.render('view.sample'); }) 结果是, Error: Cannot find module 'sample' 如何使用圆点 (加) 我想按照mvc模式命名,比如 sample.model.js sample.controller.js

如何在express.js中的
res.render()
上使用点名文件? 比如说,

有一个名为
view.sample.ejs
的模板文件,我想渲染它

app.get('/sample', function(req, res){
    res.render('view.sample');
})
结果是,

Error: Cannot find module 'sample'
如何使用圆点

(加)

我想按照mvc模式命名,比如

sample.model.js
sample.controller.js
sample.view.ejs
sample.view.update.ejs ...

js文件没有问题,但渲染ejs文件我做不到。

如果我们查看库
node\u modules/express/lib/view.js
,我们发现模板路径的设计文件名中点后的所有内容都应视为扩展:

this.ext = extname(name); // 'view.sample' => '.sample'
this.name = name;         // 'view.sample' => 'view.sample'
app.get('/sample', function(req, res){
  res.render('view.sample.ejs');
})
当我们尝试加载相应的文件扩展名引擎时,将生成一个错误:

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;
}
好的,怎么办?只需添加扩展名:

this.ext = extname(name); // 'view.sample' => '.sample'
this.name = name;         // 'view.sample' => 'view.sample'
app.get('/sample', function(req, res){
  res.render('view.sample.ejs');
})

它是在“view/sample.ejs”中查找“sample”而不是名为“view.sample.ejs”的文件吗?@Michael No,没有目录。just view.sample.ejs:)要在名称中包含其他句点,您必须在参数–
res.render('view.sample.ejs')中提供完整的文件名。Express假定
.sample
是参数中存在的文件扩展名,因此它不会添加
.ejs
来查找所需的文件。(否则,你必须考虑使用不同的标点符号。)