0

我将 node.js 与 express 和 ejs 一起使用。

我应该将我的网站从 ejs 移动到另一个模板引擎 -dust.js。我希望能够将模板从一个模板引擎一个接一个地移动到另一个模板引擎。我看到的问题是两者都覆盖了 res.render 方法。

我能想到的解决方案是在var render_ejs = res.render;需要ejs之后但需要dust.js之前存储res.render。然后在所需的dust.js 之后 - 以不同的名称存储新res.render_dust = res.render的渲染,并再次使用 ejs 覆盖渲染res.render = dust.render

让他们并肩生活的正确方法是什么?

4

2 回答 2

0

谢谢@robertklep。

最后consolidate(node.js 模板引擎整合库)解决了我的问题。

这是一个工作示例:

var http = require("http");
var express = require("express");
var app = express();
var express = require("express");
var app = express.createServer();
var dust = require('dustjs-linkedin'),
    cons = require('consolidate');
app.engine('dust', cons.dust);
app.get("/dust", function(req, res) {
    res.render('dust_template.dust', {header: 'DUST - TEST OK'});
});
app.get("/ejs", function(req, res) {
    res.render('ejs_template.ejs', {header: 'EJS - TEST OK'});
});
app.listen(80);

ejs_template.ejsdust_template.dust文件在文件views夹中。

于 2013-03-28T23:26:31.193 回答
0

这是一个关于如何并排使用两个引擎的简单示例(我使用 Jade 是因为 Dust 让我有些悲伤require.paths):

var express = require('express');
var app     = express();

app.engine('ejs', require('ejs').__express);
app.engine('jade', require('jade').__express);
app.set('views', __dirname);

app.get('/', function(req, res) {
  // Render with Jade: res.render('index.jade');
  // Render with EJS: res.render('index.ejs');
});

app.listen(3012);

所以诀窍是使用 中的文件扩展名render(),结合起来app.engine将使 Express 使用适当的模板引擎。

于 2013-03-21T14:41:45.997 回答