2016-04-03 24 views
2

私はnode.js初心者です。実行時に静的なスニペットやサーバーで調理されたデータから、サーバーデータを使用するコントロールブロックを使用して動的なjs出力を生成する必要があります。 DOT NETではこれを実現するためにT4を使用しましたが、すべてのnode.jsテンプレートエンジンがHTMLを生成する方法しか知りません。 node.jsに相当するT4はありますか? HTMLではなく、サーバーコントロールブロックを使用するプレーンテキストを出力できるものはありますか?T4相当のnode.js

+0

テンプレートエンジンは、1種類のファイルにバインドされていません。クイック検索で私は[ひげache](https://github.com/janl/mustache.js)(可変置換のみ)と[nunjucks](https://mozilla.github.io/nunjucks/)(ロジックブロック、継承といくつかの他のクールなもの)。 – Shanoor

+0

@ShanShan、私はあなたのコメントが完全に正しいとは思わないと思います。例えば、node-bladeやjamやhaml-coffeeのようなhaml.jsベースのモジュールです。彼らはhtml生成のためにhtmlディレクティブを解析する方法を明示的に知っています。まだテストはしていませんが、コード例を見てみると、nunjucks、swig、おそらくejsやハンドルバーのように見えます。 – Dondey

+0

なぜ私の質問が保留になったのか分かりません。私は、どのモジュールがより大きく、より優れているかについての意見を求めていません。私は実際にどのモジュールが最初に私の要件を満たすのに適した設備を持っているかを尋ねています。 – Dondey

答えて

0

NodeJSで同じことができるかどうかはわかりません(私はノーだと思います)。

サーバーとクライアントを使用して作業することができます。 静的テンプレートをクライアントとデータに別々に返し、クライアントに参加させることができます。次に、ビュー(何らかのデータ)で何かを変更する必要があるときは、ディナミックデータと静的テンプレートを使用して再度生成することができます(または単にjQueryのようなライブラリを使用してDOMを編集します)。

Moustache.jsのようなクライアントテンプレートエンジンで行うことができます。

私の答えがあなたに役立つことを願っています!

+0

私の説明は十分に明白ではなかったと思います。私の動的js出力は、マークアップに束縛されていない第三者コンポーネントです。それは調理されて封印されたCDNサーバーに配信され、キャッシュされます。クライアントは最終製品を受け取るので、口の中には余裕がない。 – Dondey

+0

したがって、入力を受け入れ、JavaScriptファイルを生成するオフラインプログラムを作成する必要がありますか? mustache.jsのようなテンプレート言語は、依然として正しい解決策です。あなたはプログラム内の便利な文字列レンダリングのためにそれを純粋に使用します。あなたがJavascriptファイルを生成しているという事実は重要ではありません。 – ArthurDenture

1

ほとんどのテンプレートエンジンは、HTMLを生成するのと同じくらい簡単にJavascriptを生成できます。しかし、ほとんどの場合、動的にJavascriptを生成しないほうがよいです。代わりに、レンダリングされたhtmlに埋め込まれたJSONオブジェクトなど、動的に生成されたデータによって制御される静的なJavaScriptを使用します。

  • 安全性:

    これは、いくつかの利点があります。誤って無効なJavaScriptを生成したり、悪いことに、XSS攻撃につながるようにユーザー生成のコンテンツを誤ってスクリプトに埋め込む可能性は低くなります。

  • 速度。静的コンテンツと動的コンテンツを分離した状態に保ちたい静的コンテンツは、静的コンテンツの配信用に最適化された別のドメインでホストされているJavascriptのコンパイル済みバンドルでも、動的コンテンツはnode.jsサーバーによって生成される比較的小さなファイルでもかまいません。
+0

iblancasaの答えに私のコメントを見てください。私はHTMLをレンダリングしていないし、サードパーティのコンポーネントを提供しているので、クライアント上で何が起こるかについての制御や知識がない。 – Dondey