# (プリ-)コンパイル

# Handlebars.compile(template, options)

テンプレートをコンパイルして、すぐに実行できるようにします。

const template = Handlebars.compile("{{foo}}");
template({});

テンプレートの実行方法を変更するさまざまなオプションをサポートしています。

  • data: @dataトラッキングを無効にするにはfalseに設定します。
  • compat: 再帰的なフィールドルックアップを有効にするにはtrueに設定します。
  • knownHelpers: テンプレート実行時に存在することがわかっているヘルパーのリストを含むハッシュ。これにより、コンパイラは多くのケースを最適化できます。組み込みヘルパーは自動的にこのリストに含まれ、その値をfalseに設定することで省略できます。
  • knownHelpersOnly: 既知のヘルパーリストに基づいてさらに最適化を許可するにはtrueに設定します。
  • noEscape: コンテンツをHTMLエスケープしないようにするにはtrueに設定します。
  • strict: 厳格モードで実行します。このモードでは、テンプレートはフィールドが見つからない場合に無視するのではなく、エラーをスローします。これは、フィールドがソースオブジェクトに明示的に含まれていない限り、{{^foo}}{{/foo}}などの逆演算が無効になるという副作用があります。
  • assumeObjects: パスをトラバースするときのオブジェクトの存在チェックを削除します。これは、データ入力が安全であることがわかっている場合に最適化されたテンプレートを生成するstrictモードのサブセットです。
  • preventIndent: デフォルトでは、インデントされた部分呼び出しにより、部分全体の出力は同じ量だけインデントされます。これは、部分がpreタグを出力する場合に予期しない動作につながる可能性があります。このオプションをtrueに設定すると、自動インデント機能が無効になります。
  • ignoreStandalone: trueに設定すると、スタンドアロンタグの削除が無効になります。設定されている場合、独自の行にあるブロックとパーシャルは、その行の空白を削除しません。
  • explicitPartialContext: パーシャルの暗黙のコンテキストを無効にします。有効にすると、コンテキスト値が渡されていないパーシャルは空のオブジェクトに対して実行されます。

# Handlebars.precompile(template, options)

クライアントに送信してコンパイルせずに実行できるよう、指定されたテンプレートをプリコンパイルします。

var templateSpec = Handlebars.precompile("{{foo}}");

Handlebars.compileメソッドと同じオプションパラメーターをすべてサポートしています。さらに、以下を渡すことができます。

  • srcName: 入力ファイルのソースマップを生成するために渡されます。このように実行されると、戻り値の構造は{code, map}になり、codeにはテンプレート定義が含まれ、mapにはソースマップが含まれます。
  • destName: ソースマップを生成するときに宛先ファイル名を指定するために、srcNameと組み合わせて使用されるオプションパラメーターです。

# Handlebars.template(templateSpec)

Handlebars.precompileでプリコンパイルされたテンプレートを設定します。

var template = Handlebars.template(templateSpec);
template({});
最終更新日: 2020/8/11 午後8:11:32