私は Angula2 + Universal をローンチ当初から使用してきましたが、今日では実際の動作について混乱しています。
彼らの例では、server.ts ファイルに次のものがあります。
app.get( '/data.json' , ( req , res ) => {
res.json( {
data : 'This fake data came from the server.'
} );
} );
アプリを実行し、右クリックしてページ ソースを表示すると、ソース コードに「この偽のデータはサーバーから送信されました」と表示されます。これは、ページがサーバーでレンダリングされたことを意味します。( これは正しいです ? )
これまでのところ、とても素晴らしいです。
次は app.ts にあります。次のものが見つかります。
ngOnInit () {
setTimeout( () => {
this.server = 'This was rendered from the server!';
} , 10 );
}
繰り返しますが、このテキストはページのソースにもあります。
ここに私にとって奇妙な部分があります:
何らかの理由で、次のようにサーバーの待ち時間を増やした場合:
app.get( '/data.json' , ( req , res ) => {
setTimeout( function() {
res.json( {
data : 'This fake data came from the server.'
} );
} , 2000 ); // Added setTimeOut with 2 seconds .
} );
この方法では、ページ ソースはテキストを取得しませんが、次のようにすると:
app.get( '/data.json' , ( req , res ) => {
setTimeout( function() {
res.json( {
data : 'This fake data came from the server.'
} );
} , 2 ); // **Added setTimeOut with 2 milli seconds.**
} );
これは、サーバーでテキストを見つけることができます.!!!!!!!!
これまでのテストに基づいて、ajax 呼び出しの待ち時間が長すぎる場合 (1 秒以上だと思いますか?)、サーバー側のレンダリングのメリットはないと思います。
しかし :
ただし、app.component.ts で timeOut を増やすと、次のようになります。
ngOnInit () {
setTimeout( () => {
this.server = 'This was rendered from the server!';
} , 3000 ); // Increased to 3 seconds
}
サーバー側のレンダリングは引き続き取得でき、ソース ページにはテキストがレンダリングされます。
ここで何が起こっているのですか?
明らかに、すべての ajax 呼び出しが 1 秒未満になるわけではありません。とにかく、ユニバーサルを使用する利点は何ですか?