【问题标题】:EJS and DUST - side by sideEJS 和 DUST - 并排
【发布时间】:2013-03-29 07:26:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: node.js ejs dust.js


    【解决方案1】:

    这是一个关于如何并排使用两个引擎的简单示例(我使用 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 使用适当的模板引擎。

    【讨论】:

    • 要解决 express 3+ 和灰尘的 require.paths 问题,您需要从灰尘移动到dustjs-linkedn。
    【解决方案2】:

    谢谢@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 文件夹中。

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 2015-02-05
      • 1970-01-01
      相关资源
      最近更新 更多