Metalsmith html 模板视图模型绑定
Metalsmith html template view model binding
我想创建静态 html 页面并将内容绑定到 javascript 对象,我知道有一个名为 MetalSmith-layout 的插件将 markdown 文件的值绑定到 html,但是对于我来说,绑定值是动态的,所以我不能准备静态降价,或者我必须在火上创建降价文件。
所以对于我的问题,有没有更好的方法来绑定模板和 javascript 对象,就像 Express 路由器一样?
比如
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('homepage', vm);
});
homepage.swig
<html>
...
<div>{{ firstName }}</div>
<div>{{ lastName }}</div>
...
</html>
vm.json
{
"firstName":"Tom",
"lastName":"Hansk"
}
我刚刚发现我可以在元数据中添加我的视图模型,并且每个布局页面都可以访问这个全局对象。
var viewModel =
{
firstName: "Tom",
lastName: "Hanks"
};
Metalsmith(__dirname) // __dirname defined by node.js:
// name of current working directory
.metadata(viewModel) // add any variable you want
// use them in layout-files
...
.use(layouts({ // wrap layouts around html
engine: 'handlebars', // use the layout engine you like
}))
...
template.html
<html>
...
<div>{{ firstName }}</div>
<div>{{ lastName }}</div>
...
</html>
来源:https://github.com/segmentio/metalsmith/blob/master/examples/static-site/index.js
我想创建静态 html 页面并将内容绑定到 javascript 对象,我知道有一个名为 MetalSmith-layout 的插件将 markdown 文件的值绑定到 html,但是对于我来说,绑定值是动态的,所以我不能准备静态降价,或者我必须在火上创建降价文件。
所以对于我的问题,有没有更好的方法来绑定模板和 javascript 对象,就像 Express 路由器一样? 比如
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('homepage', vm);
});
homepage.swig
<html>
...
<div>{{ firstName }}</div>
<div>{{ lastName }}</div>
...
</html>
vm.json
{
"firstName":"Tom",
"lastName":"Hansk"
}
我刚刚发现我可以在元数据中添加我的视图模型,并且每个布局页面都可以访问这个全局对象。
var viewModel =
{
firstName: "Tom",
lastName: "Hanks"
};
Metalsmith(__dirname) // __dirname defined by node.js:
// name of current working directory
.metadata(viewModel) // add any variable you want
// use them in layout-files
...
.use(layouts({ // wrap layouts around html
engine: 'handlebars', // use the layout engine you like
}))
...
template.html
<html>
...
<div>{{ firstName }}</div>
<div>{{ lastName }}</div>
...
</html>
来源:https://github.com/segmentio/metalsmith/blob/master/examples/static-site/index.js