Gus*_*avo 5 javascript data-binding angular2-forms angular
我搜索了很多东西以了解如果我在表单中始终使用双向数据绑定(ng-model)而不是单向数据绑定,是否会有一些糟糕的性能。我知道,对于每两种方式数据绑定的 angular 1 都会创建一个新手表,并且对于具有 angular 1 的大型应用程序,我们可能会遇到性能问题,因为这个。现在我需要知道如果我只使用一种方式数据绑定,使用 angular 2 是否会有一些不同?不需要时需要避免两种方式的数据绑定?
Angular2 并没有真正的双向数据绑定。
Angular2 有
从父到子的数据绑定
[childProp]="parentProp"
Run Code Online (Sandbox Code Playgroud)
当更改检测检测到更改时,parentProp
它会更新childProp
并调用ngOnChanges()
子组件(实施时)。
和从孩子到父母的事件绑定
从孩子到父母的方式是事件绑定。
(childPropChange)="parentProp = $event"
Run Code Online (Sandbox Code Playgroud)
eventFromChild.emit(someValue)
在子组件中调用时调用“someActionOnParent()” 。
这两者的组合只是上面显示的数据和事件绑定的语法糖
[(childProp)]="parentProp"
Run Code Online (Sandbox Code Playgroud)
这意味着变化检测只需要检查parentProp
变化,而不关心其他方向。从子组件到父组件的更新必须由子组件主动调用,并且不涉及更改检测。
这种单向数据流使得 Angular2 的变化检测非常高效。进一步优化ChangeDetectionStrategy.OnPush
组件中的变更检测使用。这允许修剪 Angular2 必须实际进行更改检测的树。
小智 1
https://yakovfain.com/2015/12/29/two-way-data-binding-in-angular-2/
在某些情况下,双向数据绑定是最佳实践,但特别是当您需要实时双向 UI 更新和其他不常见情况时。除了摘要中的额外工作之外,问题还在于您将在不必要的时候触发树遍历,这最终会稍微减慢您的应用程序的速度,但是添加足够的树遍历,您就会看到性能影响。不要害怕使用它们。它们对运行时的影响很小,但为了最佳实践,请使用单向数据绑定,将更改检测策略设置为推送并自行手动处理可观察量。说起来容易做起来难,但如果你能做到这一点,你会发现你大大减少了不必要的遍历。尽管遍历是超轻量级的,但是太多的遍历是一件坏事,而且我不喜欢给我的应用程序任何自主权。
归档时间: |
|
查看次数: |
1725 次 |
最近记录: |