Angular2 Universal如何处理ajax调用?

时间:2016-06-04 18:16:01

标签: angular typescript angular2-universal

我从他们发布它的那天起就一直在使用Angula2 + Universal,但今天我对它的实际工作方式感到困惑。

example的server.ts文件中,您会找到:

PUT https://www.googleapis.com/games/v1/turnbasedmatches/matchId/dismiss

如果您运行该应用,右键点击并查看页面来源,您就会发现这些虚假数据来自服务器'在源代码中,意味着页面已在服务器中呈现? (这是正确的吗?)

到目前为止,太棒了。

接下来是app.ts,你可以找到:

https://www.googleapis.com/auth/games

同样,此文本也可以在页面源中找到。

现在这是我的奇怪部分:

如果您出于任何原因增加服务器延迟,请执行以下操作:

app.get( '/data.json' , ( req , res ) => {
    res.json( {
        data : 'This fake data came from the server.'
    } );
} );

这样,页面源不会得到文本,但是,如果你这样做:

ngOnInit () {
        setTimeout( () => {
            this.server = 'This was rendered from the server!';
        } , 10 );
}

这一个,您可以在服务器中找到文本。!!!!!!

到目前为止,基于我的测试,我猜测ajax呼叫延迟是否很长(我猜是多于一秒?),你不会从服务器端渲染中获益。

但是:

但是,如果你在app.component.ts中增加timeOut,例如:

app.get( '/data.json' , ( req , res ) => {
    setTimeout( function() {
        res.json( {
            data : 'This fake data came from the server.'
        } );
    } , 2000 ); // Added setTimeOut with 2 seconds .
} );

您仍然可以获得服务器端渲染,源页面将呈现文本!

这里发生了什么?

显然不是所有的ajax调用都可以低于1秒,那么使用通用的好处是什么呢?

0 个答案:

没有答案