0
nodejs/express 애플리케이션이 있습니다. 내 템플릿에 옥 (jade) 템플릿 시스템을 사용합니다. 템플릿을 얻을 때마다 매번 어셈블됩니다. 하지만 컴파일로 성능을 높이고 싶습니다. 익스프레스에서 가능합니까?옥 사용을 위해 비취 템플릿을 컴파일 할 수 있습니까?
nodejs/express 애플리케이션이 있습니다. 내 템플릿에 옥 (jade) 템플릿 시스템을 사용합니다. 템플릿을 얻을 때마다 매번 어셈블됩니다. 하지만 컴파일로 성능을 높이고 싶습니다. 익스프레스에서 가능합니까?옥 사용을 위해 비취 템플릿을 컴파일 할 수 있습니까?
예. 당신은 로딩 시간에 실행되도록하는 기능을 구축 할 수 있습니다 (즉, 표현의 app
선언에서) 모든 템플릿을 컴파일하고 메모리에 남겨 둘 것이다 :
/**
* @param {Object} app
*
* @api private
*
* @summary Compiles the partial dashboard templates into memory
* enabling the admin controller to send partial HTMLs
*/
function compileJadeTemplates (app) {
var templatesDir = path.resolve(
app.get('views')
, 'partials'
);
var templateFiles
, fn
, compiledTemplates = {};
try {
templateFiles = fs.readdirSync(templatesDir);
for (var i in templateFiles) {
fn = jade.compile(
fs.readFileSync(path.resolve(templatesDir, templateFiles[i])));
compiledTemplates[templateFiles[i]] = fn;
}
app.set('dashboard-templates', compiledTemplates);
} catch (e) {
console.log('ERROR');
console.log('---------------------------------------');
console.log(e);
throw 'Error on reading dashboard partials directory!';
}
return app;
}
:
예로 들어이 걸릴 expressJS 컨트롤러 기능이 방법으로 템플릿을 호출 :이 경우
/**
* @param {String} req
* @param {Object} res
* @param {Object} next
*
* @api public
*
* @url GET /admin/dashboard/user_new
*
* @summary Returns HTML via AJAX for user creation
*/
controller.newUser = function (req, res, next) {
var compiledTemplates = app.get('dashboard-templates');
var html = compiledTemplates['_user_new.jade']({ csrf : req.session._csrf});
return res.send({ status : 'OK', message : html});
}
을, 나는 AJAX를 통해 html
을 보내고있다; 응용 프로그램에 추가해야합니다. 그 일을 원하지 않는 경우. 다음 기능을 사용하여 html을 보낼 수 있습니다.
res.write(html);
return res.end();
예를 들어 주셔서 감사합니다. express.compile 미들웨어를 찾았습니다. app.use (express.compiler ({src : __dirname + '/ public', enable : [ 'less']})); app.use (express.static (__ dirname + '/ public')); 내 질문에 대한 답이 맞습니까? – Erik