基於 Koa平台Node.js開發的KoaHub.js的範本引擎程式碼
koahub-車把
koahub-車把
koahub 把手模板
安裝
$ npm 安裝 koahub-handlebars
與 koa 一起使用
var koa = require('koa');
var hbs = require('koahub-handlebars');
var app = koa();
// koahub-handlebars 是中間件。在渲染視圖之前「使用」它
應用程式.use(hbs.middleware({
viewPath: __dirname + '/views'
}));
// 渲染附加到 koa 上下文。在中間件中呼叫 `this.render`
// 將渲染的 html 附加到 koa 回應主體。
app.use(函數 *() {
yield this.render('index', {title: 'koahub-handlebars'});
})
應用程式.聽(3000);
註冊助理
使用 #registerHelper 方法註冊助手。這是使用預設實例的範例(從官方 Handlebars 文件中竊取的幫助程式:
hbs = require('koahub-handlebars');
hbs.registerHelper('連結', 函數(文本, url) {
文字 = hbs.Utils.escapeExpression(text);
url = hbs.Utils.escapeExpression(url);
var result = '' + 文字 + '';
返回新的 hbs.SafeString(結果);
});
然後,您可以使用 {{link "Google" "http://google.com"}} 在所有視圖中存取您的助理
registerHelper、Utils 和 SafeString 方法都代理到內部 Handlebars 實例。如果將 Handlebars 的替代實例傳遞給中間件配置器,請確保在透過上述函數的 koahub-handlebars 代理註冊助手之前執行此操作,或直接透過 Handlebars 實例註冊助手。
您也可以在助手中存取目前的 Koa 上下文。如果您想要一個輸出目前 URL 的助手,您可以編寫如下所示的助手,並在任何範本中將其呼叫為 {{requestURL}}。
hbs.registerHelper('requestURL', function() {
var url = hbs.templateOptions.data.koa.request.url;
返回網址;
});
註冊部分
註冊partials的簡單方法是將它們全部放在一個目錄中,並在產生中間件時傳遞partialsPath選項。假設您的視圖位於 ./views 中,而您的部分視圖位於 ./views/partials 中。透過
配置中間件
應用程式.use(hbs.middleware({
viewPath: __dirname + '/views',
部分路徑:__dirname + '/views/partials'
}));
將使它們自動註冊。或者,您可以透過呼叫 hbs.registerPartial 一次註冊一個部分,它代理快取的句柄 #registerPartial 方法。
版面
傳遞帶有佈局名稱的 defaultLayout 將導致所有模板插入到佈局的 {{{body}}} 表達式中。這可能如下所示。
{{標題}}標題>
頭>
{{{身體}}}
身體>
除此之外,或者作為替代,您可以指定一個佈局來呈現模板。只需指定 {{!
目前,僅支援單一內容塊 ({{{body}}})。
選項
koahub-handlebars 的計劃是提供與 koa-hbs 相同的功能(最終)。現在支援這些選項。
viewPath: [必需] 載入模板的完整路徑 (Array|String)
handbars: 傳遞你自己的handlebars實例
templateOptions:傳遞給 template() 的車把選項的雜湊值
extname:更改預設模板副檔名(預設:'.html')
partialsPath:partials目錄的完整路徑(陣列|字串)
defaultLayout: 預設佈局的名稱
layoutsPath:佈局目錄的完整路徑(字串)
disableCache:停用範本快取(預設值:'.true')
當地人
應用程式局部變數([this.state](https://github.com/koajs/koa/blob/master/docs/api/context.md#ctxstate))提供給應用程式中渲染的所有範本。
app.use(函數 *(下一個) {
this.state.title = '我的應用程式';
this.state.email = 'me@myapp.com';
接下來產生;
});
狀態物件是一個 JavaScript 物件。新增到其中的屬性將在您的視圖中公開為局部變數。
{{標題}}標題>
聯絡方式:{{email}}