AngularJS/ng-include:内联和使用ng-include有何渲染性能差异?

8

我可以使用ng-include在angular视图中包含部分内容,也可以使用服务器端的partials来完成。 我正在考虑使用服务器端partials代替angular partials,然后再使用ng-include(带有脚本标签),因为我在某个地方读到过,angular partials会创建新的作用域,这可能会对$digest的性能产生影响。

这种说法是否正确?使用angular includes时会对性能产生什么影响?

1个回答

9
ng-include将创建一个新的作用域,并在使用ng-include的作用域上注册一个监视器(对路径表达式的监视)。虽然这会导致一些额外的处理,但仍然基于JavaScript对象,并且非常快速。增加监视器和作用域应该在大多数情况下完全可以忽略不计。
我唯一看到的真正区别是ng-include会异步地包含/渲染您的部分文件,因此可能会有一点延迟,特别是在从网络中获取部分文件时(但可以通过预加载部分文件来解决,如此处所述:https://dev59.com/U2ct5IYBdhLWcg3wHJzF#12346901
简而言之,在大多数情况下,如果已预加载部分,则ng-include的影响应该是可以忽略不计的。
最后一句话:“过早优化是万恶之源”。在测量了您的应用程序的性能并确定ng-include是瓶颈之前,请不要开始微调性能。

2
另一方面,ng-repeat内的ng-include会因为异步机制而开始非常快地显示出大量性能下降。我在我的AngularJS应用程序中做出的最佳优化是创建一个ng-include-cached指令(在命中缓存时同步)。 - Guillaume86
@Guillaume86:你介意分享一下那个指令的源代码吗?我非常感兴趣。 - paldepind
1
@paldepind 这是它的链接:https://gist.github.com/guillaume86/9272837 但你可能想用最新的ngInclude代码从最新的angular版本编写一个新的。我的使用了旧的1.0.x作为基础。 - Guillaume86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接