4

私はAngular Universalで始まり​​、全く新しい '同形'のjavascriptを使い始めました。クライアント側のルーティングは、サーバー側ルーティングが推奨されており、角度ユニバーサルで提供されています。

私は少し論理的なルーティングシステムを持つように混乱しています、あなたは一般的なノードの残りのAPIとして角度ユニバーサルを構築するつもりですか?それとも、文字通りクライアント側のコードを即座に提供し、外部のソース/残りのAPIからデータを取得することを意味していますか?

角度ユニバーサルスターターキットは、たとえば、これらのルートから始まります。

app.get('/', ngApp); 
app.get('/about', ngApp); 
app.get('/about/*', ngApp); 
app.get('/home', ngApp); 
app.get('/home/*', ngApp); 

ノード/エクスプレス/モンゴーのAPIを側面に付けてデータを取得/投稿するのは論理的ですか?すなわち、

const bearRoutes = require('./routes/bear') 
app.use('/', bearRoutes) 

もしそうなら、URLを区別するためにハッシュ戦略を使用しますか?

すべてのホストを一緒にホストするのと比べて、外部のapiからユニバーサルを使用しているangle2アプリでデータを提供する場合、パフォーマンスに顕著な違いがありますか?

アドバイスありがとうございます!

答えて

6

私は少し論理的なルーティングシステムを持っているように混乱しています、あなたは一般的なノードの残りのAPIとして角度ユニバーサルを構築するつもりですか?

はい。 angular-universalはその哲学を取ります。すべてがサーバー側に構築されているため、サーバー側でルートを構築します。

ノード/エクスプレス/モンゴーのAPIを側面に付けてデータを取得/投稿するのは論理的ですか?

はい、データサービスです。例: Hello World example with github services makes API requests app.useは本質的にノードRESTサーバーなので、いいえ。

もしそうなら、URLを区別するためにハッシュ戦略を使用しますか?

#の後の最初のものは、サーバー側では見られません。しかし、あなたが記述している問題はURLの名前付けと、角度コンパイル/レンダリングされたHTMLコンテンツを提供するURLとデータ/ APIサービスを区別するかどうかについてです。

回答ははいです。これはあなた自身のサーバールート管理に役立ちます。たとえば、あなたのルートがある場合

app.get('/', ngApp); 
app.get('/about', ngApp); 
app.get('/about/*', ngApp); 
app.get('/home', ngApp); 
app.get('/home/*', ngApp); 

あなただけ追加することができ

app.get('/api/profile', serverAPIAppOrprofileJSON); 

持つすべてのものに比べて、外部APIからユニバーサル使用angular2アプリにデータを提供する間に顕著なパフォーマンスの違いがあるのだろう一緒にホストされた?

特定のユーザー操作によってページの小さな部分が変更され、一部のデータを必要とするシナリオについて考えてみましょう。ページ全体をレンダリングする代わりに、このセクションを更新したいだけかもしれません。このような状況ではパフォーマンスが向上します。

+0

私はノードのRESTサーバーを別に作成/ホストする必要がありますか?以前のように、ブログアプリケーションのようなものをビルドするときに読んだように、Node RESTサーバーにhbs/jadeなどを介して直接HTMLを提供し、別のSPAとして管理セクションを持たせることをお勧めします。ユニバーサルの場合、ノード・レスト・サーバー、ノード・レスト・サーバーを消費するクライアント側としての角度のあるユニバーサル・サーバー、それから別個のSPAとして、あるいはおそらく別の普遍的な設定? – confusedandenthused

+1

アプリケーションが成長するにつれて、レンダリングがどこに発生するかにかかわらず、APIサーバは分離していることが望ましい。 APIサービスには他のコンシューマが存在し、展開と開発のライフサイクルが別々の場合があります。 – bhantol

関連する問題