[英]Node.js + Express - How to get Mustache partials working?
我正試圖讓Mustache與Express一起正常工作,正如人們可以猜到的那樣,我遇到了麻煩。
以下行初始化了Mustache很好並且干凈。 變量按預期呈現。
app.register('html', require(__dirname+'/public/js/libs/mustache.js'));
然而,當混合物中出現局部物時,問題開始上升。 使用Mustache,這里部分應該調用header view / partial。
{{> header}}
但唉,沒有任何反應。 :/即使我直接提供部分,Mustache也無法呈現它。
app.get('/', function(req, res) {
res.render('welcome', {
partials: {
header: '<h1>Header</h1>'
}
});
});
所以,部分似乎根本不起作用。 我發現一個黑客可以讓部分工作有點起作用:
http://bitdrift.com/post/2376383378/using-mustache-templates-in-express
之后,部分渲染在渲染調用時直接提供(見上文),但是在將部分直接渲染到視圖/布局時仍然無法實現:
布局看起來像這樣:
Behold, the header
{{> header}}
<p>Let's move to more important stuff...</p>
標題視圖看起來像這樣:
<h1>Header</h1>
Express可以自己加載視圖,但它不知道如何處理Mustache部分...
管理使用最新版本的hogan-express。
https://github.com/vol4ok/hogan-express
所需要的只是安裝hogan-express並將其用作express上的模板引擎。 不需要黑客攻擊或調整。
使用express(至少版本3)和mustache-express ,您可以像往常一樣使用以大於號開頭的雙胡子加載部分。
首先考慮在app.js
文件中附加以下內容:
/** import the module */
import mustache from 'mustache-express';
/** view engine setup */
app.engine('mst', mustache());
app.set('view engine', 'mst');
app.set('views', path.join(__dirname, 'mvc/views'));
/** the route where we will display the partials */
app.get('/', (req, res) => {
let view = {
title: 'Homepage',
// ...
};
/** we are going to use a file called template.mst for rendering */
res.render('template', view);
});
任何以大於號(即{{> file}}
)開頭的雙胡子將被視為部分 。 partial中的文件將在運行時呈現。 將此文件視為我們要插入的部分文件:
MVC /視圖/ partial.mst
<h2>418 | I'm a teapot</h2>
這是我們的模板:
MVC /視圖/ template.mst
<h1>template.mst file</h1>
<!-- output: <h2>418 | I'm a teapot</h2> -->
{{> partial}}
我不確定你的./public/js/libs/mustache.js
到底是什么......我使用npm的胡子模塊+ 你鏈接到的模板對象的變體。
在任何情況下,傳遞給app.register
的對象都需要在某個時刻調用mustache.to_html(template, locals, partials)
。
您需要將partials對象作為第三個參數傳遞給mustache的to_html
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.