サーバーテンプレートエンジンとしてHandlebars.jsを使用して、Node.js | Expressで簡単なHelloWorldプロジェクトを作成しようとしています。
問題は、特に複数のビューで、そのようなチェーンを使用する例が見つからなかったことです。
たとえば、ヘッダービューを定義したいと思います。
<header>
<span>Hello: {{username}}</span>
</header>
そして、他のビューを持つすべてのページで使用します。
このビューについて間違った方法で考えているのかもしれません。ビューは、他のビュー内の任意のページで再利用できるコントロールの一種だと思いました。
チュートリアルまたは(はるかに優れた)オープンソースプロジェクトへのリンクをいただければ幸いです。
これはかなり前に質問されていたことを知っていますが、この投稿では誰も答えを示していません。だから私はここでそうします。全員が同じページにいることを確認するために、回答の詳細を説明します。過度に単純化されていると思われる場合は、事前に謝罪します。
Server.jsファイル(またはapp.js、ビューバーとしてハンドルバーを定義した場所)。 hbsやexpress-handlebarsなど、npmパッケージとして使用しているものに応じて、外観は異なりますが、これに似ています。注:この例では、エクスプレスハンドルバーを使用しています。
ファイル:server.js
...
var express = require( 'express'),
hbs = require( 'express-handlebars' ),
app = express();
...
app.engine( 'hbs', hbs( {
extname: 'hbs',
defaultLayout: 'main',
layoutsDir: __dirname + '/views/layouts/',
partialsDir: __dirname + '/views/partials/'
} ) );
app.set( 'view engine', 'hbs' );
...
ファイル構造は次のようになります。
| /views/
|--- /layouts/
|----- main.hbs
|--- /partials/
|----- header.hbs
|----- footer.hbs
|----- ... etc.
|--- index.hbs
| server.js
そして、main.hbsファイルは次のようになります。
ファイル:main.hbs
...
{{> header }}
...
<span> various other stuff </span>
...
{{> footer }}
パーシャルを示すには、次の構文を使用します:{{> partialsNames }}
。
https://www.npmjs.org/package/hbs を使用して| https://github.com/donpark/hbs
あなたが持っていると仮定しましょう:
+ views
- index.hbs
+ partials
- footer.hbs
パーシャルを含むフォルダーを登録する必要があります。
hbs.registerPartials(__dirname + '/views/partials');
パーシャルには、ファイルの正確な名前が付けられます。次を使用して、パーシャルの特定の名前を登録することもできます。
hbs.registerPartial('myFooter', fs.readFileSync(__dirname + '/views/partials/footer.hbs', 'utf8'));
次に、次のようにアクセスします。
First example: {{> footer }}
Second example: {{> myFooter }}
完全な例: https://github.com/donpark/hbs/tree/master/examples/partial
私は現在、ericfの「handlebars-express」の実装を使用していますが、優れていることがわかりました。
https://github.com/ericf/express3-handlebars
覚えておくべき重要なことは、ブラウザ内とは対照的に、エクスプレスでは、ビューのレンダリング段階でハンドルバーがアクティブになることです。 PHPコンテキスト内で口ひげを使用したかのように、クライアントコードは単なるHTMLになります。
パーシャルを使用する必要があります。
パーシャルを使用する良い例については、 https://github.com/donpark/hbs/tree/master/examples/partial をご覧ください。
ここに別の例があります http://blog.teamtreehouse.com/handlebars-js-part-2-partials-and-helpers