如何在快递中重复使用带有把手的布局?

时间:2015-11-18 03:32:07

标签: node.js express handlebars.js

好吧,我不想在每个视图中都包含我的实际布局。

所以我的观点看起来像

layout.hbs

<html lang="en">
<head></head>
<body>
<div id="content">
    {{ content }}
</div>
</body>
</html>

index.hbs

<div>my index content</div>

help.hbs

<div>my help content</div>

当我使用我的快速路线时,如下面的例子,我只需要在每个视图中包含我的整个布局 - 这显然是一个坏主意。

快递路线

app.use('/', function (req, res) {
    res.render('index', {content: 'foo'});
});
app.use('/about', function (req, res) {
    res.render('about', {content: 'foo'});
});

所以问题是:如何在车把视图中重用我的布局?

我的想法是将我的内容另外编译为

app.use('/', function (req:express.Request, res:express.Response, next:Function) {
    fs.readFile(path.join(viewPath, 'index.hbs'), function(err, text){
        var template = hbs.handlebars.compile(text);
        var content = template({foo: 1234});
        res.render('layout', {content: content}); 
    }); 
});

但我不确定这是否正确。

1 个答案:

答案 0 :(得分:3)

您可以使用from selenium import webdriver driver = webdriver.Chrome() driver.get("url") # may be a delay or an explicit wait would be needed here print(driver.page_source) driver.close() 并为其指定默认布局。

express-handlebars

设置好布局后,您只需拨打var hbs = exphbs.create({ extname:'hbs', layoutsDir: '/path/to/layouts', defaultLayout: 'main' }); // Initialize engine app.engine('hbs', hbs.engine); // Set engine app.set('view engine', 'hbs');

即可