我目前正在尝试使用手柄栏,在这里我可以轻松地引用多个主题布局。我的意图是,例如,当渲染一个新的页面时,我可以选择哪种布局,每个布局链接到不同的JSCSS文件。每个布局链接到一组不同的JSCSS文件。例如,我可以做 我可以这样做:
router.get('/bootstrap', function (req, res){
res.render('general', {layout: bootstrap, data: variables});
});
---or --
router.get('/semantic', function(req,res){
res.render('general', {layout: semantic, data: variables});
我以为只要在我的网站上创建这样的(bootstrapsemantic.hbs)模板,就可以轻松实现这一点。视图布局 目录,并输入
res.render('general', {layout: 'bootstrap', data: variables});
然而,这似乎并不工作
// bootstrap_layout.hbs
<html>
<head>
<link ref....to bootstrap css>
<body>
{{{body}}}
<script src...to jquery>
<script src...to bootstrap js>
{{> Footer }}
</body>
<html>
我的app.js文件看起来是这样的。
var express = require('express');
var exphbs = require('express-handlebars');
var app = express();
var hbs = exphbs.create({
layoutsDir: /views/layouts });
// Register `hbs.engine` with the Express app.
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
问题是,当我尝试这样做时,当我在{layout: bootstrap}或{layout: semantic}中调用layouttemplate时,似乎无法加载layouttemplate。我遇到了布局无法找到的错误,与其他ENOENT错误。我也试过改变这个。
Remove: var hbs = exphbs.create({
layoutsDir: /views/layouts });
--------------------------------
Remove: hbs. engine, and replace with exphbs:
app.engine('handlebars', exphbs({layoutDir: __dirname+'/views/layouts'}));
app.set('view engine', 'handlebars');
我没有找到为什么我在调用一个新布局时遇到这么多困难。有谁能给我任何建议,告诉我哪里出了问题,或者我是否遗漏了什么重要的东西?
谢谢!我目前正在尝试使用车把式布局。
当你调用render方法时,在你选择的布局名称中使用单引号。
res.render('general', {layout: 'bootstrap', data: variables});