Express.js res.render点名文件

如何在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_modules/express/lib/view.js ,我们发现在文件名中的点之后的所有模板path的devise都应该被认为是扩展名:

 this.ext = extname(name); // 'view.sample' => '.sample' this.name = name; // 'view.sample' => 'view.sample' 

而当我们尝试加载相应的文件扩展引擎时会产生一个错误:

 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; } 

好的,该怎么办? 只需添加扩展名:

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