在vanilla Express.js中,以下代码可以很好地工作.
var app = require('express')();
app.get('/jade', function(req, res) {
res.render('slash.jade');
});
app.get('/ejs', function(req, res) {
res.render('slash.ejs');
});
app.listen(1338);
Run Code Online (Sandbox Code Playgroud)
只要存在模块node_modules,两个模板都由适当的引擎呈现.
您还可以指定默认引擎,如下所示:
app.set('view engine', 'haml');
app.get('/', function(req, res) {
res.render('slash'); //looks for slash.haml in views directory
});
Run Code Online (Sandbox Code Playgroud)
在Express中,默认视图引擎仅在省略扩展时使用.
在Sails.js中,似乎指定的引擎config/view.js是有史以来唯一使用的引擎.
如果我尝试直接指定扩展名,我会收到以下错误:
error: Ignoring attempt to bind route (/barn) to unknown view: barn.jade
Run Code Online (Sandbox Code Playgroud)
是否有可能在Sails中使用不同的视图引擎而没有大量的伏都教?
最简短且最准确的答案是否定的。
出于无聊,我看了一下这个问题,并对 sails 中的视图引擎代码进行了一些深入研究。如果有兴趣,您还可以通过转到以下目录在 sails 项目中找到这些文件:
node_modules\sails\lib\hooks\views
您会发现,sails 开箱即用,设置为仅使用一个视图引擎。在上面的目录中,您将找到一个名为configure.js的文件,这是设置自定义视图引擎背后的逻辑发生的地方。
这是代码片段
// Normalize view engine config and allow defining a custom extension
if (_.isString(sails.config.views.engine)) {
var viewExt = sails.config.views.extension || sails.config.views.engine;
sails.config.views.engine = {
name: sails.config.views.engine,
ext: viewExt
};
}
// Get the view engine name
var engineName = sails.config.views.engine.name || sails.config.views.engine.ext;
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有循环来设置多个引擎。Sails 仅使用参数 sails.config.views.engine 中传递的引擎并从那里开始。
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |