2016-04-27 3 views
0

私は自分自身にangular2を教えようとしています。私は、多くのサイトが持っているレイアウトの単純なアプリを書いています:ヘッダ(例:検索とロゴ)とコンテンツの本体。Angular2:2つの '根'が必要な場合の代替方法はありますか?

私の問題は次のようなものです:例えばfacebookを読み込むと、まず粗いページレイアウト(空のdivsとcss)が表示され、非同期にコンテンツがロードされます。それはうれしいことです、あなたは少し待っていますが、少なくともあなたは何が起こっているかを見ています。

私の(facebookのような)セットアップを想像してみてください。私は同じことをしたい場合。あなたは、CSSを使ってdivをメインのhtmlページに置くと言います。そしてdivでそれぞれのコンポーネント(app)をロードします。

しかし、私が学んだ限り、ng2では単一のルートをブートストラップすることができます。別のヘッダコンポーネントとメインビューコンポーネントをロードする方法は?

あなたはそれらをインポートしてdivをルートテンプレートに入れて、ページレイアウトでアプリケーションを読み込むことができます。しかし、これは、アプリケーションがロードされるまでユーザーがブランクページを見る(または「読み込み中...」と表示される)という問題を示しています。視覚的にはあまり魅力的ではありません。

どうすればこの問題を回避できますか?

答えて

3

FOUCは、サーバーからアプリケーションを最初に読み込まない限り、あなたが遭遇するものです。スタックをサポートしている場合はangular-universalを調べて、サーバーがあなたのアプリケーションを計算し、既にコンパイルされたHTMLを提供できるようにします。しかし、FOUCを防止するための多くの方法の1つにすぎません。

+1

さらに、高価な動的コードがより効率的なスタティックコードに置き換えられ、時間が短縮されるスタティックコンパイラが予定されています(JSA、HTML、およびCSSの読み込み後に角度を初期化する必要があります) Angularが実際に画面上に何かを表示するまで、完了しました。 –

+0

こんにちはショーン、あなたの答えをありがとう。 FOUCを防止する方法はたくさんあります.FOUCの名前は、サーバー上であらかじめコンパイルすることです。クライアントのブラウザにコンパイルを保存したい場合は、そのような場合のオプションを指定してください。 (私がng2を使っているとすれば)その場合の問題は、単一のルートコンポーネントを持つ必要があることです。そのため、私のアプリケーションは、すべての子コンポーネントが読み込まれた後にのみ表示されます。このレイテンシを回避するオプションはありますか? –

関連する問題