consolidate.jsで使用すると、{{>my_partial}}のように追加された口ひげの読み取りパーシャルを取得できません。エクスプレスアプリケーションは次のようなものから始めます。
ファイルindex.js:
var express = require('express'),
cons = require('consolidate');
app.configure(function(){
app.set( 'models', BACKEND + '/models' ); // Set the models directory
app.set( 'views', BACKEND + '/views' ); // Set the views directory
app.set( 'controllers', BACKEND + '/controllers' ); // Set the controllers dir
app.set( 'view engine', 'html' ); // Set Mustache as the templating engine
app.engine( 'html', cons.mustache );
app.engine( 'mustache', cons.mustache );
app.use( app.router ); // Set the router
app.use( '/public', express.static( BASEPATH + '/frontend/public' ) ); // set frontend/public to /public for users
app.use( '/js', express.static( BASEPATH + '/frontend/js' ) );
app.use( '/out', express.static( BASEPATH + '/out' ) ); // documentation path
// Set client side libraries here (Make them available to the public based on settings.json)
for(setting in SETTINGS.public) {
app.use( SETTINGS.public[setting], express.static(BASEPATH + SETTINGS.public[setting]) );
}
});
次に、コントローラーのどこかで、次のようにレンダリングを使用します。
function Blog(app, request, response){
var fs = require('fs'),
Blog = require( app.get('models') + '/blog' ),
model = new Blog(),
scripts = fs.readFileSync( VIEWS + '/m_scripts.mustache').toString() ;
model.List(function(data){
response.render('layout',
{
title : 'My Blog',
body : 'Hello Mustache World',
list : data.rows,
cache : false,
partials : {
m_scripts : partialStr
}
}
);
});
};
exports.list = Blog;
m_scripts.mustacheには次のものがあります。
<script data-src="ergierjgoejoij"></script>
レイアウトテンプレートは問題なくレンダリングされ、パラメータも問題なく通過します。部分的なm_scriptsは、readFileSync()。toString()によって渡されたテキストとともに問題なく渡されますが、HTMLのものはエンコードされ、役に立たなくなります。
私の質問は、layout.mustache {{> m_scripts}}に入れるだけの方法があり、mustacheはm_scripts.mustacheをrender()に渡す必要なしに自動的にロードすることを理解しています。そうでない場合、私は何が欠けていますか?