为什么AngularJS中的双向数据绑定是反模式?

AngularJS提供双向数据绑定。为什么AngularJS中的双向数据绑定是反模式?

我建几个AngularJS应用,发现双向绑定是一个强大的功能,是提高我的工作效率。

然而最近我来了越来越多的跨声称双向绑定是一个反帖子和文章。

例子:

  • https://medium.com/este-js-framework/whats-wrong-with-angular-js-97b0a787f903#.py84tbylf
  • https://www.dotnetrocks.com/?show=1147
  • https://www.youtube.com/watch?v=DslsyqnyjQE
  • Angular2 two-way data binding

大多数资源的主张,主张 “单向数据流” 就像它是由反应,和/提拔通量。

而且Angular2 announced一段时间不会有双向绑定...但最新文件显示,它实际上是提供two-way databinding via ngModel再次(在上实现性财产和事件结合)

但是我还没有完全理解AngularJS中与双向数据绑定相关的问题。

其他客户端技术(即摆动,Eclipse的RCP,的WinForms,WPF ...)还提供双向数据绑定,我从来没有绊倒的要求,这是一个反模式...

有没有一个规范的例子可以很容易地说明AngularJS中双向数据绑定可能导致的问题?

The video我联系上面似乎暗示$scope.watch是问题...但例如可以在不$scope.watch通过结合暴露在$scope的功能来实现。
如果您避免使用$scope(即使用controller as),双向数据绑定仍存在哪些问题?

回答:

实际上,双向数据绑定的主要问题是性能。当开发者AngularJS发布时(1),这个特性成为开发人员广泛使用该框架的首要原因。

如果没有一行代码,您可以通过从模型侧或视图侧更改其值来使元素完全动态化,该值在设置模型的任何位置都会更改。

在这个特性中,最重要的工具是监视,它代表了双向数据绑定的所有问题。

随着应用程序的发展,观察者和观察元素的数量也在增加。
此外,一段时间后,应用程序可以成为观察者的大汤。
这会导致您的应用程序始终监视元素并在反面保持最新的元素,并且会从浏览器中消耗大量资源。

这就是为什么我的建议是:尽量避免看守者。
它们在控制器中几乎从未真正需要。

参见:

  • Effective strategies to avoid watches in AngularJS
  • The bad parts of AngularJS
  • Performances in large AngularJS applications

希望这对您更加清晰。

以上是 为什么AngularJS中的双向数据绑定是反模式? 的全部内容, 来源链接: utcz.com/qa/262959.html

回到顶部