10

私はSails0.9.7を実行し、 Consolidate.jsでサポートされているため、Sails でサポートされているハンドルバーをインストールしました。

ファイルからページを提供でき.handlebarsます。問題なく動作します。Sails ワークフローのどこに、Sails の方法で、パーシャルやヘルパーなどを登録する必要があるのか​​ わかりません...単なる実用的なソリューションよりもベストプラクティスを探していますが、どんな助けも感謝します。

4

7 に答える 7

8

私は v0.10 ベータ版を実行していますが、これが以下の動作に影響することはありません。

  1. エンジンは予想通りハンドルバーでなければなりません
  2. ルートでは、コントローラーとアクションを明示的に定義する必要があります。ビューの設定が機能しません。(ルートファイルにパーシャルを設定する方法がわからなかった場合を除きます)
  3. コントローラーには、ビューに対する相対パスとして定義されたパーシャルが必要です。

config/views.js

module.exports.views = {
  engine      : 'handlebars',
  layout      : false
};

config/routes.js

'/': {
  controller: 'site',
  action: 'index'
},

SiteController.js

module.exports = {
  // Render Index View
  index: function(req, res) {
    res.view({
      partials: {
        head: 'partials/head',
        tail: '../partials/tail',
      },
    });
  }
};

ビュー/サイト/index.handlebars

{{> head}}
<h3>SITE INDEX</h3>

ビュー/サイト/部分/head.handlebars

<h1>HEAD</h1>
{{> tail}}

ビュー/パーシャル/テール.ハンドルバー

<h2>HEAD TAIL</h2>

出力

<h1>HEAD</h1>
<h2>HEAD TAIL</h2>
<h3>SITE INDEX</h3>
于 2014-02-03T21:59:39.073 に答える
4

上記の回答を使用していますが、ハックなしでセイル 0.9.8 でパーシャルを動作させたようです。

これが私が持っているものです。

Config/views.js => エンジン: 「ハンドルバー」

views/home/index.handlebars => パーシャルを使用したメイン ファイル。

views/home/partials/partial.handlebars => 部分的に使用されています。

次に、このようなものを使用する限り、完全に機能します。res.view({ パーシャル: { パーシャル: 'パーシャル/パーシャル', フッター: 'パーシャル/フッター' } })

パスは、デフォルトで呼び出されるテンプレート ファイルからの相対パスです。したがって、コントローラーごとに異なるパーシャルが必要な場合は partials/ を使用し、すべてのテンプレートにグローバルなパーシャルが必要な場合は ../partials/ を使用します

とにかくコントローラーですべての部分を手動で指定する必要があるため、明らかにこれは完全にあなた次第です。

于 2014-01-05T10:51:49.733 に答える
1

時間がなくなってきましたが、答えに近づいていると思います。詳細がわかり次第、この返信を更新しますが、詳しく知りたい場合は、含まれている consolidate.js ファイルの 501 行目を確認してください。こちらの github で表示: https://github.com/balderdashy/sails/blob/master/lib/configuration/consolidate.js#L501

ハンドルバーには、options.partials からパーシャルを登録する for ループがあるようです。

これは完全に満足のいく解決策ではありませんが、パーシャルをそのオプション オブジェクトにプッシュすると、そこからプルされる可能性があります。

次の大きな疑問は、オプション オブジェクトとは何か、それはどこで設定されるのかということです。

于 2013-11-07T19:45:42.927 に答える
0

Sails js でハンドルバー テンプレートを構成するには、以下の手順に従います。

1) アプリケーションの node_modules フォルダーにハンドルバーをインストールします。

npm インストール ハンドルバー

2) config/views.js を変更します

engine:   'handlebars',
layout:   'layouts/layout', // layouts is subfolder of view folder in sails app and layout is a handlebars inside layouts folder.
partials: 'partials'
于 2016-10-15T15:17:42.767 に答える