污染 $scope 对象会影响性能吗?
Does polluting the $scope object affect performance?
我有一个控制器,其中 $scope 对象已用于存储仅在同一控制器中本地使用的方法和值。发生了很多这样的事情:
$scope.foo = 'something';
$scope.bar = 'something else';
...等等。 None 这些值在视图中使用。我的问题是污染 $scope 对象会影响性能吗?清理它以便只有视图所需的值和方法包含在 $scope 对象中是个好主意吗?
是的,污染 $scope
确实会影响性能,但这取决于您的范围有多个观察者,这些观察者经常变化,然后会产生更多的开销成本。参考this answer,其中涵盖了相同的点
为了避免这种情况,我建议您对代码进行良好的重构
在需要时处理控制器中的所有逻辑,否则通过充分利用每个组件来分离逻辑。
- 将常用的方法(逻辑)移动到
service
/factory
/provider
,多处使用,方便共享
- 如果某些值是固定的,它们不会改变,然后将它们移动到
constant
/value
- 每当您觉得自己有相同的逻辑需要保留在
$scope
中时,它会自行将该逻辑移至公共控制器。当需要时,您可以使用 $controller
注入器 注入当前控制器范围
另请参阅 Understanding Of Scope 以清楚了解作用域的使用
我有一个控制器,其中 $scope 对象已用于存储仅在同一控制器中本地使用的方法和值。发生了很多这样的事情:
$scope.foo = 'something';
$scope.bar = 'something else';
...等等。 None 这些值在视图中使用。我的问题是污染 $scope 对象会影响性能吗?清理它以便只有视图所需的值和方法包含在 $scope 对象中是个好主意吗?
是的,污染 $scope
确实会影响性能,但这取决于您的范围有多个观察者,这些观察者经常变化,然后会产生更多的开销成本。参考this answer,其中涵盖了相同的点
为了避免这种情况,我建议您对代码进行良好的重构
在需要时处理控制器中的所有逻辑,否则通过充分利用每个组件来分离逻辑。
- 将常用的方法(逻辑)移动到
service
/factory
/provider
,多处使用,方便共享 - 如果某些值是固定的,它们不会改变,然后将它们移动到
constant
/value
- 每当您觉得自己有相同的逻辑需要保留在
$scope
中时,它会自行将该逻辑移至公共控制器。当需要时,您可以使用$controller
注入器 注入当前控制器范围
另请参阅 Understanding Of Scope 以清楚了解作用域的使用