В настоящее время я пытаюсь использовать руль, где я могу легко ссылаться на несколько тем / макетов. Например, при рендеринге новой страницы я могу выбрать, какой макет. Каждый макет ссылается на свой набор файлов JS / CSS. Например: я мог бы сделать:
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});
Я думал, что это можно легко сделать, просто создавая (bootstrap / semanti c .hbs) шаблоны, подобные этому, в моих / views / layouts каталог и ввод
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>
Мое приложение. 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}. Я сталкиваюсь с ошибками, где макет не может быть найден, против других ошибок 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');
Мне не повезло выяснить, почему я сталкиваюсь с такими трудностями при вызове нового макета. У кого-нибудь есть какие-либо советы о том, где я могу пойти не так или я что-то упустил?
Спасибо!