2013-12-13 10 views
10

Express JSはHTMLを生成するためにテンプレートを使用し、サーバーはこれを応答としてクライアントに送信します。 HTMLが生成される他のいくつかのテンプレートがあるかもしれません。私は発見することができたものは以下のとおりです。Expressテンプレートまたは純粋なHTMLのAngularJS?長所と短所?

、私はExpressJSとAngularJsの両方を使用する必要があります。私は両方の技術に新しいです。角度を覚えながら、私は純粋なHTMLでそれを使用しなければなりませんでした。 ExpressJを学んだ後、私は、anglejsを使うために、上記のテンプレートのいずれかでそれらを使用しなければならないことを認識しました。これはクライアントに送信する際にHTMLに変換されます。

ここでは、サーバーとanglejsをクライアントサイドアプリケーションとして使用したいと考えています。このために、2つの選択肢があると思います。

オプション1

私は完全にテンプレートを使用して停止し、簡単なHTMLファイルを送信することによって応答するために私たちのNodeJSサーバーを使用することができます。これらのHTMLファイルにはAngularJSコーディングが含まれます。その後AngularJSはクライアント側でアプリケーションとして動作します。サーバーから他のHTML文書を要求します。また、AJAXのように使用することもできます.AJAXでは、情報の一部のみを要求し、ページの一部を更新することができます。ちょっとした変更のためにページ全体を更新します。私はangularjs内部expressjsテンプレート(ヒスイやEJS)を使用することができます

オプション2

親切にも、両方のオプションの長所と短所を理解するのを手伝ってください。そのような場合にどちらがあなたの選択になるでしょうか。

+0

また、 'express.static()'を使用してHTMLテンプレートを作成して提供することもできます。 – klode

+0

フロントエンドとバックエンドの両方でテンプレートを使用してオプション2を使用してください。あなたは、アプリケーションを台無しにするかどうかを制御することができません – Gaurav

答えて

12

これは非常に多くの意見であり、Stack Overflowの管理者は意見を嫌うものは何も嫌いですが、ここでも私の経験と意見です。

私は静的なファイル(HTML、CSS、およびJavaScript)を使って、バックエンドのサービスを呼び出してデータを配信するアプリをいくつか使っています。これはバックエンドを減らします(私はJavaとNode.jsの両方を使用しています)、サービスURLのセットにすぎませんが、非常にうまく機能します。

  • あなたは、または上で動作し、独立して
  • バグは、フロントエンドで非常に明確に通常はそれぞれ1をテストすることは非常に簡単です
  • 二つのシステムの責任の間で幻想的な強硬路線を持っていますバックエンドサービス( は、知っておくと転送されたデータを参照する必要があります)
  • バックエンドサービスは、 コマンドラインなどの別のUIをサポートするために再利用する準備ができています。
  • バックエンドに1つのテクノロジー(Node.jsやRuby on Railsなど)を使い、必要に応じて後で何かに切り替えることができます。 APIが同じままである限り、フロントエンドは決して知らない。
+3

このアプローチの利点:1.静的なHTMLページはCDN経由で提供され、ブラウザでより簡単にキャッシュできます。 2.静的なページを最初にロードしてから、サーバーから動的な部分を完成させるためにデータを取得することによって、データベースにデータを最初に取得してクライアントに送信する前にページ全体を構築する場合よりもはるかに高速に読み込みを開始できます。 – CodeToad

+0

いいですCodeToad!キャッシングは優れたメリットであり、現在取り組んでいるのは1つです。 JavaScriptに期限切れのヘッダーを入れて、最大1年間キャッシュすることができ、必要に応じてそのキャッシュを破棄できる仕組みを作ります。非常に高速なページロードが進むようにする必要があります。私はそれを列挙したはずです。 –

+0

私は、静的なHTMLを提供し、非同期(角を使用して)読み込まれたコンテンツがサーバ側よりも素早くレンダリングされることを認めます。しかし、ちょうど考えています...ページの一部のメニューの一部が許可(アクセス権)を受ける場合はどうでしょうか?角度はとてもうまく処理できますか?それは完全に読み込まれる前にフリックすることができます。 – aheryan

2

テンプレートを間違って変換し、Angularを妨害するjadeやejsの潜在的な問題に対処したくないので、オプション1を使用しました。私のアプリは本質的にインデックスページを持っています(これは本当に私のCSSとjsを含む基本的なページテンプレートです)Expressから玉として出てきて角度が来て、私の角のテンプレートはすべて玉のテンプレートとは別の場所にあります。

3

私は個人的にExpress/JadeでAngularJSを使用しています。セットアップは実際には非常に簡単で、私はJadeをHTMLを書くよりもずっと楽しいと感じています。また、私はCoffeeScriptで角度コードを書くことを採用しました。キーストロークを保存しようとしている場合、Jadeは優れたソリューションであり、Expressとの統合により、驚くことはありません。より速くコードを生成することを心配していないなら、HTMLを使用することに全く問題はありません。

私がJade over HTMLを使用することで得た最大の利点の1つは、複数のファイルで1つのページを開発し、includeを使用してHTMLにコンパイルする前に連結させることです。これにより、より大きなページを取得し、より管理しやすい塊に分割することができます。 Angularのテンプレートと一緒に、これは多くの不満を和らげることができます。

本当にすべての意見ですが、ジェイドをショットにすることを決めたので、私はそれを後悔していないし、Angularを使用するとHTMLが正しくレンダリングされなかったことはありません。

関連する問題