3

Express.js、Handlebars.js、および Consolidate.js を使用して、Node.js サイトが動作しています。テンプレートの共通部分にパーシャルを使用したいのですが、異なる 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.htmlおよびarticle.htmlHandlebarsテンプレートには、次のようなものがあります。

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

/(レンダリングされたときindex.html) と/foo/(レンダリングされたとき)の両方にアクセスできるはずarticle.htmlです。しかし、ノードサーバーを起動した後、最初にアクセスしようとしたものに対してのみ機能します。次に別のパスに移動すると、次のようなエラーが表示されます。

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

部分的な以下の残りの_header.html部分。

どうにかしてパーシャルへのパスを絶対パスに設定する必要があると思いますが、その方法がわかりません。

4

2 に答える 2

0

統合チェックの場合: https://github.com/tj/consolidate.js/issues/18

https://github.com/donpark/hbsのようなもう少し具体的なものに切り替えることをお勧めします。

于 2016-07-21T22:28:41.400 に答える