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

Express 是否可以在Sails.js中使用多个模板引擎? 快车,express,sails.js,Express,Sails.js,在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); 只要模块存在于节点_modules中,两个模板都由相应的

在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);
只要模块存在于
节点_modules
中,两个模板都由相应的引擎呈现

您还可以指定默认引擎,如下所示:

app.set('view engine', 'haml');
app.get('/', function(req, res) {
  res.render('slash'); //looks for slash.haml in views directory
});
在Express中,默认视图引擎仅在以下情况下使用

航行 在Sails.js中,指定的引擎
config/view.js
似乎是唯一使用过的引擎

如果尝试直接指定扩展名,则会出现以下错误:

error: Ignoring attempt to bind route (/barn) to unknown view: barn.jade

在没有大量巫毒的情况下,是否可以使用不同的视图引擎?

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

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

节点\u模块\sails\lib\hooks\views

你会发现,帆船开箱即用,被设置为只使用一个视图引擎。在上面的目录中,您将找到一个名为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中传递的引擎,然后从那里开始。

这就是我开始考虑的。感谢您的检查!