【问题标题】:Does the controllerAs pattern improve performance in AngularJScontrollerAs 模式是否提高了 AngularJS 中的性能
【发布时间】:2015-01-28 23:55:18
【问题描述】:

有人告诉我,controllerAs 模式通过在作用域上附加更少的东西来提高 AngularJS 应用程序的性能。

我无法真正理解这是如何发生的,因为使用 controllerAs 控制器本身会在作用域上公开它的属性。

这真的能提高性能吗? 如果是,那么如何以及为什么?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    ControllerAs 语法本身并不会提高应用的性能,但它确实会鼓励其他对性能产生重大影响的编程模式。

    最值得注意的是,使用$scope 作为变量的存储库具有鼓励在全局范围内使用$scope 的效果,因此程序员习惯于将事物添加到可以从任何地方访问的范围内。这是一个重大缺陷,可能会导致许多性能问题。

    同样在使用 ControllerAs 时,因为控制器实例将是 $scope 上的唯一属性,所以视图模板上的所有字段都将是引用属性。这样可以避免JavaScript prototype链继承坑。

    Angular Best Practice Always have a . in binding 表达式是由 ControllerAs 语法自动、自然地强制执行的。

    【讨论】:

      【解决方案2】:

      我相信使用“控制器”绑定到视图的动机与遵循 MVC 的最佳实践有关,而不是与性能有关。

      Model - JSON objects
      View - Directives
      Controller - ngControllers
      

      控制器的工作是调解服务和视图模型之间的交互(在 AngularJS 中,视图模型由范围表示)。

      视图模型的工作是为视图表示模型,因此它不应包含任何重要的逻辑。

      控制器逻辑的最佳位置是控制器本身 - 事件处理程序应该调用控制器方法,该方法调用返回模型的服务,然后将其保存在视图范围内。 视图(指令)使用模型(范围),以呈现最终视图。

      就我个人而言,我希望看到 Angular 框架的变化,让 controllerAs 调用视图中隐含的方法,并取消作用域上的绑定方法。关于这个特定主题,我发现从视图中调用闭包中的函数并不是很有用。

      【讨论】:

        猜你喜欢
        • 2017-01-17
        • 2021-11-22
        • 2015-03-10
        • 1970-01-01
        • 2014-02-19
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多