是否可以在Sails.js中使用多个模板引擎?

时间:2016-01-09 01:54:01

标签: express sails.js

快速

在vanilla Express.js中,以下代码运行良好。

[img]" onmouseover="alert(document.cookie);[/img]

只要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); 中存在模块,两个模板都由适当的引擎呈现。

您也可以指定默认引擎:

node_modules

在Express中,默认视图引擎仅在the extension is omitted时使用。

在Sails.js中,似乎指定引擎app.set('view engine', 'haml'); app.get('/', function(req, res) { res.render('slash'); //looks for slash.haml in views directory }); 是唯一使用过的引擎。

如果我尝试直接指定扩展名,则会收到以下错误:

config/view.js

在Sails中是否可以使用不同的视图引擎而没有大量的伏都教?

1 个答案:

答案 0 :(得分:1)

简短而准确的答案是否定的。

出于无聊的烦恼,我看了一下这个问题并对帆中的视图引擎代码做了一些深入研究。如果有兴趣,您也可以通过转到以下目录在您的sails项目中找到这些文件:

  

node_modules \帆\ LIB \钩\观点

你会发现,开箱即用的风帆,设置为仅使用一个视图引擎。在上面的目录中,您将找到一个名为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;

不幸的是,没有循环来设置多个引擎。 Sails只使用参数sails.config.views.engine中传递的引擎并从那里开始。