【问题标题】:angularjs / rendering Performance difference between inlining or using ng-includeangularjs / 渲染内联或使用 ng-include 之间的性能差异
【发布时间】:2013-05-13 09:16:22
【问题描述】:

我可以使用 ng-include 在角度视图中包含部分内容,或者我可以使用服务器端部分内容在服务器上执行此操作。我正在考虑使用服务器端部分而不是角度部分,然后使用 ng-include(带有脚本标签),因为我在某处读到角度部分创建新范围,这可能会损害 $digest 的性能。

这有任何道理。使用 Angular 包含时对性能有什么影响

【问题讨论】:

    标签: angularjs angularjs-ng-include


    【解决方案1】:

    ng-include 将创建一个新作用域并在使用ng-include 的作用域上注册一个监视(在ng-include 使用的路径表达式上)。虽然这会产生一些额外的处理,但它仍然是基于 JavaScript 对象的,因此非常快。在大多数情况下,一块新手表加上一个额外的范围的影响应该完全可以忽略不计。

    我能看到的唯一真正区别是ng-include 将异步包含/渲染您的部分,因此您可能会看到一些延迟,尤其是在通过网络获取部分时(但这可以通过预加载部分来缓解如此处所述:https://stackoverflow.com/a/12346901/1418796)

    简而言之:在大多数情况下,如果预先加载了部分,ng-include 的影响应该可以忽略不计

    最后一条评论:“过早的优化是万恶之源”。在您测量您的应用程序的性能并确定ng-include 是一个瓶颈之前,不要开始微性能调整。

    【讨论】:

    • 另一方面,由于异步机制,ng-repeat(s) 中的 ng-include(s) 会启动得非常快,从而显示性能大幅下降。我在我的 angularJS 应用程序中进行的最佳优化是创建一个 ng-include-cached 指令(命中缓存时同步)。
    • @Guillaume86:您愿意分享该指令的源代码吗?我会很感兴趣的。
    • @paldepind 这里是:gist.github.com/guillaume86/9272837 但你可能想用最后一个 Angular 版本的最后一个 ngInclude 代码编写一个新的。我的使用旧的 1.0.x 作为基础。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多