2

要するに、私が必要とするもの - プログラムで (CLI ではなく) ハンドルバー テンプレートをブラウザー側の関数にプリコンパイルし、ブラウザーで次のhandlebars.runtime.jsように使用します。

html = template_as_fn(data_object);

必要な理由 - 私は YA ComonJS を使ってブラウザー パッカー ツール、クリンチに取り組んでおり、 Handlebars もサポートしたいと考えています。

eval()だから、Handlebarsテンプレートをプリコンパイルして、他のブードゥー魔法なしで機能する正しい方法を探しています。

この回答のようなもの

var data = { name: "Greg" };
var source = "<p>Howdy, {{ name }}</p>";

eval("var templateFunction = " + Handlebars.precompile(source));
var template = Handlebars.template(templateFunction);

template(data);
=> "<p>Howdy, Greg</p>"

悲しくさせる。

たとえば、ジェイドでは、この方法でファイル プロセッサを使用できます

'.jade'   : (data, filename, cb) ->
  content = Jade.compile data, _.assign jade_settings, {filename}
  cb null, "module.exports = #{content}"

ハンドルバーでジェイドのようなことをすることは可能ですか?

4

1 に答える 1

1

ああ気にしません!私はこれを見つけた。

ハンドルバー用ファイル プロセッサ

'.handlebars', (data, filename, cb) ->
  content = Handlebars.precompile data
  cb null, "module.exports = #{content}"

モジュールの 2 段階の回避策:

renderData : (data) ->
  template_fn = require './template' # /template.handlebars
  template = Handlebars.template template_fn

  res = template data

だから、今からクリンチはハンドルバーをサポートします:)

于 2013-03-17T08:53:39.100 に答える