Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不进行初始刷新的情况下从服务器为Angular.js应用程序提供服务_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在不进行初始刷新的情况下从服务器为Angular.js应用程序提供服务

Javascript 如何在不进行初始刷新的情况下从服务器为Angular.js应用程序提供服务,javascript,angularjs,Javascript,Angularjs,我正在编写Angular.js应用程序。我希望它真的很快,因此在最初加载时,我完全在服务器端为它提供服务。在这之后,每一个更改都应该通过与服务器的异步通信在客户端进行处理 我在中央上有ng视图属性。但现在Angular即使在第一次加载时,也会在单击任何链接之前重新生成此的内容。我不希望出现这种行为,因为这样服务器端生成的页面就没有用了 如何做到这一点?尽管Gloopy的建议在某些情况下有效,但在其他情况下会失败(即ng repeat)。AngularJS目前没有在服务器上渲染的能力,但这是(据我

我正在编写Angular.js应用程序。我希望它真的很快,因此在最初加载时,我完全在服务器端为它提供服务。在这之后,每一个更改都应该通过与服务器的异步通信在客户端进行处理

我在中央
上有
ng视图
属性。但现在Angular即使在第一次加载时,也会在单击任何链接之前重新生成此
的内容。我不希望出现这种行为,因为这样服务器端生成的页面就没有用了


如何做到这一点?

尽管Gloopy的建议在某些情况下有效,但在其他情况下会失败(即
ng repeat
)。AngularJS目前没有在服务器上渲染的能力,但这是(据我所知)其他JavaScript框架也无法做到的。我还知道服务器端渲染是AngularJS开发人员正在研究的东西,因此在不久的将来您可能会看到它

当你说你希望应用程序“真的很快”时,你应该考虑一下你想要什么样的速度。有很多地方需要考虑速度,比如引导应用程序所需的时间、响应时间、资源密集度等(你似乎关注的是引导时间)。为了平衡应用程序中的性能,通常必须进行不同的权衡。我建议阅读对AngularJS另一个性能问题的回答,以了解更多关于该主题的信息:


您是否真的遇到了性能问题,或者这只是您预测的问题?如果是后者,我建议构建一个代表您的应用程序类型的原型,看看它是否真的是一个问题。如果是前者,并且在客户端引导应用程序的时间太长,那么可能需要进行一些优化(例如,内联一些模型数据以避免额外的往返,或者使用Gloopy的建议)。您还可以使用Chrome中的评测工具,以及查找应用程序中的缓慢区域。

btford:您完全正确,这听起来像是过早的优化-我也这么认为:)。另一个原因是,应用程序应该以非常简单的方式在没有JS的情况下工作,所以这个基本布局(angular对我来说对所有其他页面都是这样),所以服务器上总是会有渲染


我发现了一个非常糟糕的解决方案——我在第一次点击任何内部链接后启动了应用程序。单击它之后,我解除了这个初始回调的绑定,用
History.pushState
和bootstrap应用程序更新URL-它获取新的URL,并且重新生成是绝对正确的。好吧,我会继续展望不太遥远的未来:)。

我想出了一个解决方案。它并不能完美地工作,也不能适用于所有情况,但至少在路由和我使用ng repeat的指令方面是可以的


这篇文章可能会有所帮助:我不知道ng repeat的限制+对于巴塔朗来说,这件事太棒了!