3

サーバー側で node.js/ejs を使用し、クライアント側で backbone.js を使用します。サーバー側とクライアント側の両方で同じテンプレート スタイルを使用します。問題は、クライアント向けのテンプレートコードをテンプレート内に配置しても、サーバー側で解析されることです。

このようなものが機能することがわかった場合:

<%- "<%= done ? 'done' : '' %\>" %>

ただし、私見では、これはコードを醜くし、テンプレートを使用するという意味全体を役に立たなくします。

これにどのようにアプローチしますか?

他のテンプレート言語で使用される {literal} タグのように解析されない EJS テンプレート内のコード ブロックを定義する方法はありますか?

更新:今のところ、バックボーンの _.templateSettings を使用して、クライアント側で異なる区切り文字を使用します。

更新: JSP コンテキストでの同様のソリューションは次のとおりです: Underscore.js Templates Within JSP

4

5 に答える 5

3

これに対処した方法は、ノードの開始タグと終了タグをオーバーライドして、ejs の 2 つのインスタンスが異なるタグを検索するようにすることです。

ノードでは、オプションを渡すことができます

{open:'<%',close:'%>'}

私の場合、2 つのバージョンに <% と <@ を使用しています。次に、ノード ejs テンプレートに次のようなものがあります (名前はバックボーンから、everyauth は明らかにノードから):

<% if(everyauth.loggedIn) %><h1><@= name @></h1><% } %>
于 2012-02-24T14:28:25.893 に答える
0

backbone.layout.managerテンプレートをまったく同じにしたいので、クライアント側とサーバー側の両方で使用します。

テンプレート区切り文字の問題を解決した方法は、サーバー側でページをレンダリングしてから、未加工のバックボーン テンプレートを挿入することでした。

于 2012-08-16T16:24:49.690 に答える
0

さて、私が現在これにアプローチしている方法は、require.jsをテキスト プラグインと共に使用することです。これにより、開発時に AJAX を使用してテンプレートを含めることができ、展開時に最適化/縮小された単一のファイル バンドルにすべてのテンプレートをコンパイルできます。

もちろん、残りの JS コードの依存関係管理に require.js を使用しない場合、これはほとんどうまく機能しませんが、require.js なしで javascript dev を実行することはもうできません。 m とにかく慣れています。

あるいは、同じ問題を解決するために使用できる類似の技術が他にもあるかもしれません。

于 2012-01-26T21:45:26.587 に答える