0

私はexpressとejsでnode.jsを使用しています。

サイトをejsから別のテンプレートエンジン(dust.js)に移動する必要があります。テンプレートを1つのテンプレートエンジンから別のテンプレートエンジンに1つずつ移動できるようにしたい。私が見る問題は、両方が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

2 つのエンジンを並べて使用する方法の簡単な例を次に示します (Dust が私にいくつかの悲しみを与えたので、私は Jade を使用しています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.engineExpress は適切なテンプレート エンジンを使用するようになります。

于 2013-03-21T14:41:45.997 に答える