模板引擎整合庫。
$ npm install consolidate
有些套件有相同的鍵名,consolidate 會按照順序號載入它們。以dust為例,consolidate將嘗試以以下順序使用: dust
、 dustjs-helpers
和dustjs-linkedin
。如果安裝了dust
, dustjs-linkedin
將不會被consolidate使用。
名稱cons.* | 封裝名稱/訂單 | 網站/狀態 |
---|---|---|
阿特普 | npm install atpl | - |
括號 | npm install bracket-template | - |
點 | npm install dot | (網站) |
npm install dust (1) | (網站)/ (未維護) 請參閱:dustjs-linkedin | |
灰塵 | npm install dustjs-helpers (2) 或npm install dustjs-linkedin (3) | (網站) |
npm install eco | /! 安全問題 | |
等 | npm install ect | (網站) |
埃傑斯 | npm install ejs | (網站) |
村莊 | npm install hamlet | - |
哈姆利甚 | npm install hamljs | - |
火腿咖啡 | npm install haml-coffee | - |
車把 | npm install handlebars | (網站) |
霍根 | npm install hogan.js | (網站) |
html處理 | npm install htmling | - |
npm install jade | (網站)/ (更名為pug ) | |
爵士樂 | npm install jazz | - |
npm install jqtpl | (已棄用) | |
只是 | npm install just | - |
液體 | npm install tinyliquid | (網站) 永遠不會增加任何新功能 |
酒 | npm install liquor | - |
洛達什 | npm install lodash | (網站) |
馬可 | npm install marko | (網站) |
微塵 | npm install mote | (網站) |
鬍子 | npm install mustache | - |
修女 | npm install nunjucks | (網站) |
盤子 | npm install plates | - |
哈巴狗 | npm install pug | (網站)/ (以前的翡翠) |
奎傑斯 | npm install qejs | - |
活躍的 | npm install ractive | - |
刮鬍刀 | npm install razor | - |
反應 | npm install react | - |
永續發展管理 | npm install slm | - |
松鼠般的 | npm install squirrelly | (網站) |
npm install swig (1) | (未維護) 請參閱: swig-templates | |
痛飲 | npm install swig-templates (2) | - |
茶碗 | npm install teacup | - |
模板化的 | npm install templayed | (網站) |
乳糖 | npm install toffee | - |
枝條 | npm install twig | (維基百科) |
孿生 | npm install twing | (網站) |
底線 | npm install underscore | (網站) |
瓦什 | npm install vash | - |
速度js | 測試版 | (網站) |
海象 | npm install walrus | (網站) |
鬍鬚 | npm install whiskers | - |
注意:您仍然必須安裝您想要使用的引擎,並將它們新增至您的 package.json 依賴項。
該庫支援的所有範本都可以使用簽名(path[, locals], callback)
進行渲染,如下所示,這恰好是 Express 支援的簽名,因此這些引擎中的任何一個都可以在 Express 中使用。
注意:所有此範例程式碼都使用 cons.swig 作為 swig 範本引擎。將 swig 替換為您正在使用的任何範本。例如,使用 cons.hogan 表示 hogan.js, console.log(cons)
cons.jade 表示 jade 等。
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
或沒有選項/局部變數:
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
要動態傳遞引擎,只需使用下標運算子和變數:
var cons = require ( 'consolidate' )
, name = 'swig' ;
cons [ name ] ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
此外,如果沒有提供回呼函數,所有模板都可以選擇傳回一個承諾。 Promise 表示模板函數的最終結果,該結果要麼解析為字串,從模板編譯,要麼被拒絕。 Promise 公開了一個then
方法,該方法註冊回調以接收 Promise 的最終值,以及一個catch
方法,該方法用於解釋 Promise 無法實現的原因。 Promise 允許更多類似同步的程式碼結構並解決競爭條件等問題。
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } )
. then ( function ( html ) {
console . log ( html ) ;
} )
. catch ( function ( err ) {
throw err ;
} ) ;
要啟用緩存,只需傳遞{ cache: true }
即可。引擎可以使用此選項來快取讀取檔案內容、編譯的Function
等的內容。 consolidate.js 實作 I/O 的所有引擎都會快取檔案內容,非常適合生產環境。直接使用 consolidate 時: cons.swig('views/page.html', { user: 'tobi', cache:true }, callback);
使用支援的 Express 版本: app.locals.cache = true
或將 NODE_ENV 設為“生產”,Express 將為您執行此操作。
var express = require ( 'express' )
, cons = require ( 'consolidate' )
, app = express ( ) ;
// assign the swig engine to .html files
app . engine ( 'html' , cons . swig ) ;
// set .html as the default extension
app . set ( 'view engine' , 'html' ) ;
app . set ( 'views' , __dirname + '/views' ) ;
var users = [ ] ;
users . push ( { name : 'tobi' } ) ;
users . push ( { name : 'loki' } ) ;
users . push ( { name : 'jane' } ) ;
app . get ( '/' , function ( req , res ) {
res . render ( 'index' , {
title : 'Consolidate.js'
} ) ;
} ) ;
app . get ( '/users' , function ( req , res ) {
res . render ( 'users' , {
title : 'Users' ,
users : users
} ) ;
} ) ;
app . listen ( 3000 ) ;
console . log ( 'Express server listening on port 3000' ) ;
模板引擎透過cons.requires
物件公開,但在呼叫cons[engine].render()
方法之前它們不會實例化。如果您想要新增篩選器、全域變數、mixin 或其他引擎功能,您可以事先手動實例化它們。
var cons = require ( 'consolidate' ) ,
nunjucks = require ( 'nunjucks' ) ;
// add nunjucks to requires so filters can be
// added and the same instance will be used inside the render method
cons . requires . nunjucks = nunjucks . configure ( ) ;
cons . requires . nunjucks . addFilter ( 'foo' , function ( ) {
return 'bar' ;
} ) ;
lib.consolidate.js
中的exports.nunjucks.render
函數。您可以透過options.nunjucksEnv
傳遞您自己的引擎/環境,或者如果您想支援 Express,您可以傳遞options.settings.views
,或者如果您有其他用例,則傳遞options.nunjucks
(有關更多信息,請參閱代碼)。options.partials
傳遞部分內容options.loader
傳遞載入器。options.filters
並指定一個屬性數組,每個屬性都是命名的篩選函數。過濾器函數將字串作為參數並傳回它的修改版本。options.customTags
指定遵循tinyliquid 自訂標籤定義的標籤函數陣列。options.includeDir
。React
要將內容渲染到 html 基本模板(例如 React 應用程式的index.html
)中,請使用options.base
傳遞模板的路徑。 安裝開發部門:
$ npm install -d
運行測試:
$ make test
(麻省理工學院許可證)
版權所有 (c) 2011-2016 TJ Holowaychuk
特此免費授予任何獲得本軟體和相關文件文件(「軟體」)副本的人不受限制地使用本軟體,包括但不限於使用、複製、修改、合併的權利、發布、分發、再授權和/或銷售軟體的副本,並允許向其提供軟體的人員這樣做,但須滿足以下條件:
上述版權聲明和本授權聲明應包含在本軟體的所有副本或主要部分中。
本軟體以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.