8

私は 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 秒未満になるわけではありません。とにかく、ユニバーサルを使用する利点は何ですか?

4

0 に答える 0