2014-03-06 73 views
6

在生產中使用jade-lang時,我是否會從某種形式的中間件中受益,該中間件會預編譯所有.jade視圖,然後在水庫中使用它們。呈現?或者當你做NODE_ENV =生產時會自動發生嗎?在生產中預編譯玉石模板是否有益

我只是在探索如何加快生產中的玉石渲染的選項。

回答

11

當Jade編譯模板時,模板被緩存。在生產環境中,如果預熱緩存,則不需要預編譯模板。即使你不這樣做,模板也會在第一次編譯後被緩存。

我建議你看看Jade的源代碼,以更好地理解它是如何工作的。

exports.render = function(str, options, fn){ 
    // ... 
    var path = options.filename; 
    var tmpl = options.cache 
    ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) 
    : exports.compile(str, options); 
    return tmpl(options); 
}; 

來源:https://github.com/visionmedia/jade/blob/1.3.0/lib/jade.js#L255-L259

exports.renderFile = function(path, options, fn){ 
    // ... 
    options.filename = path; 
    var str = options.cache 
    ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) 
    : fs.readFileSync(path, 'utf8'); 
    return exports.render(str, options); 
}; 

來源:https://github.com/visionmedia/jade/blob/1.3.0/lib/jade.js#L291-L295

+0

非常感謝。我將會更好地潛入源代碼:) – TheThing