1

現在、私はスリムなフレームワークを使用してhtmlテンプレートをブラウザーに提供しています。ビューがロードされた後、アプリケーションはRESTful APIからいくつかの情報を取得し、handlebars.jsを使用してDOMのさまざまな側面にデータを入力します。

mustache.phpやtwigなどのphpテンプレートシステムを使用して、htmlテンプレートが提供されるときに非常に基本的なテンプレートのニーズを処理したいと思います。ただし、handlebars.jsであるため、mustache.phpおよびtwigと同じ構文が使用され、APIから取得した情報をDOMに入力するときに、いくつかの大きな競合が発生します。

私が現時点で持っている唯一の解決策は、上記のphpテンプレートソリューションの1つを使用する代わりに、htmlテンプレートでstr_replace()を実行することです。

競合なしでphpテンプレートソリューションとhandlebars.jsの1つを使用できる方法はありますか?

4

1 に答える 1

2

これを処理する最も簡単な方法は、サーバー側のテンプレートで Mustache 区切り文字を変更することです。このようなもの:

{{=<% %>=}}
<html>
<head>
  <title><% title %></title>
  <script type="text/x-handlebars-template" id="mytemplate">
    {{# stuff }}{{ otherstuff }}{{/ stuff }}
  </script>
</head>
<body>
  <h1><% title %></h1>
</body>
</html>

こうすることで、<%Mustache.php で型区切り文字が使用され、{{型区切り文字が無視され、Handlebars.js で確実に使用できるようになります。

通常の区切り文字に Mustaches を使用し続けたい場合は、Handlebars テンプレートの前後の区切り文字をすぐに変更することもできます。

<html>
<head>
  <title>{{ title }}</title>
  {{=<% %>=}}
  <script type="text/template" id="mytemplate">
    {{# stuff }}{{ otherstuff }}{{/ stuff }}
  </script>
  <%={{ }}=%>
</head>
<body>
  <h1>{{ title }}</h1>
</body>
</html>

ハンドルバー テンプレートをパーシャルに移動する場合:

{{=<% %>=}}
<script type="text/template" id="mytemplate">
  {{# stuff }}{{ otherstuff }}{{/ stuff }}
</script>

... デリミタの変更は、そのパーシャル内でのみ適用されます。次に、これを行うことができます:

<html>
<head>
  <title>{{ title }}</title>
  {{> handlebars_templates }}
</head>
<body>
  <h1>{{ title }}</h1>
</body>
</html>

この方法が最もメンテナンスしやすいので、この方法をお勧めします。

于 2012-10-10T23:27:51.893 に答える