最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使用Express,Handlebars和Consolidate在Node.js中设置部分路径

IT培训 admin 8浏览 0评论

如何使用Express,Handlebars和Consolidate在Node.js中设置部分路径

我有一个工作的Node.js站点,使用Express.js,Handlebars.js和Consolidate.js。我想对我的模板的常见部分使用partials,但无法弄清楚如何使它们适用于不同URL的页面。

我的/views/目录包含:

_footer.html
_header.html
article.html
index.html

我的Node应用程序的相关部分类似于:

var express = require('express'),
    consolidate = require('consolidate'),
    handlebars = require('handlebars'),
    path = require('path');
var app = express();
app.engine('html', consolidate.handlebars);
app.set('view engine', 'html');
app.set('views', path.join(__dirname, '/views'));

var partials = {header: '_header', footer: '_footer'};

app.get('/', function(req, res) {
    res.render('index', {partials: partials});
};
app.get(/^\/([\w-]+)\/$/, function(req, res) {
    res.render('article', {partials: partials});
};

在我的index.htmlarticle.html Handlebars模板中,我有类似的东西:

{{> header}}
<!-- page content here -->
{{> footer }}

我应该能够访问/(当呈现index.html时)和/foo/(当呈现article.html时)。但它只适用于我在启动Node服务器后首先尝试访问的任何一个。当我然后导航到另一条路径时,我得到的错误如下:

Error: ENOENT, no such file or directory '/Users/phil/Projects/projectname/views/<!DOCTYPE html>...

其余的_header.html部分跟随。

我假设我需要以某种方式设置我的部分路径是绝对的,但我不知道如何做到这一点。

回答如下:

为巩固检查:https://github/tj/consolidate.js/issues/18

我建议切换到更具体的东西,比如https://github/donpark/hbs它会更简单。

如何使用Express,Handlebars和Consolidate在Node.js中设置部分路径

我有一个工作的Node.js站点,使用Express.js,Handlebars.js和Consolidate.js。我想对我的模板的常见部分使用partials,但无法弄清楚如何使它们适用于不同URL的页面。

我的/views/目录包含:

_footer.html
_header.html
article.html
index.html

我的Node应用程序的相关部分类似于:

var express = require('express'),
    consolidate = require('consolidate'),
    handlebars = require('handlebars'),
    path = require('path');
var app = express();
app.engine('html', consolidate.handlebars);
app.set('view engine', 'html');
app.set('views', path.join(__dirname, '/views'));

var partials = {header: '_header', footer: '_footer'};

app.get('/', function(req, res) {
    res.render('index', {partials: partials});
};
app.get(/^\/([\w-]+)\/$/, function(req, res) {
    res.render('article', {partials: partials});
};

在我的index.htmlarticle.html Handlebars模板中,我有类似的东西:

{{> header}}
<!-- page content here -->
{{> footer }}

我应该能够访问/(当呈现index.html时)和/foo/(当呈现article.html时)。但它只适用于我在启动Node服务器后首先尝试访问的任何一个。当我然后导航到另一条路径时,我得到的错误如下:

Error: ENOENT, no such file or directory '/Users/phil/Projects/projectname/views/<!DOCTYPE html>...

其余的_header.html部分跟随。

我假设我需要以某种方式设置我的部分路径是绝对的,但我不知道如何做到这一点。

回答如下:

为巩固检查:https://github/tj/consolidate.js/issues/18

我建议切换到更具体的东西,比如https://github/donpark/hbs它会更简单。

发布评论

评论列表 (0)

  1. 暂无评论