Javascript angularjs性能最佳实践
我的风格基于,和 根据Miško在49:44的陈述 他说性能取决于两件事: 你有多少装订。 你买的东西多贵啊。应该禁食 我认为这意味着简单和快速。在我的理解中,getter是指服务中的一种方法。但我的情况有点复杂。 那么如何让它变得简单呢?我想不可能改变算法?或者只是调用服务中的内部私有函数?它生效了吗 所以我的问题是: 在服务中的方法上使用getter以避免内存泄漏的最佳实践 我希望有人能解释清楚 生活如何运作 谁能给我解释一下吗? iLife如何在服务中的工厂内方法中对函数工作 它是否也删除了全局变量?即使我使用var,比如当我们返回工厂时?Javascript angularjs性能最佳实践,javascript,angularjs,coding-style,Javascript,Angularjs,Coding Style,我的风格基于,和 根据Miško在49:44的陈述 他说性能取决于两件事: 你有多少装订。 你买的东西多贵啊。应该禁食 我认为这意味着简单和快速。在我的理解中,getter是指服务中的一种方法。但我的情况有点复杂。 那么如何让它变得简单呢?我想不可能改变算法?或者只是调用服务中的内部私有函数?它生效了吗 所以我的问题是: 在服务中的方法上使用getter以避免内存泄漏的最佳实践 我希望有人能解释清楚 生活如何运作 谁能给我解释一下吗? iLife如何在服务中的工厂内方法中对函数工作 它是否也删
你的问题或者多个问题相当广泛。你们在这里把多种概念混为一谈,但我会尽力解开你们的谜团 首先是生活。这与角度性能无关。IIFE是一种命名全局范围的方法。因此,最好的做法是使用IIFE,而不是在全局范围内公开可能导致冲突的函数
var globalObj =
(function(){
var privateVar = 5;
function doPrivateFn(x, y){}
return {
publicFn: function(x){ doPrivateFn(x, privateVar) };
}
})();
现在,唯一暴露在全局范围内的是globalObj,它有globalObj.publicFn
其次,IIFE有时在使用Angular而不是内联匿名函数注册服务或控制器时使用:。factoryMySvc,函数{}:
所有这一切只是在全局范围内隐藏MySvc工厂函数MySvcFactory
最后,使getter快速的关键不是内存泄漏,而是getter函数的计算强度
因此,如果表达式中有绑定,如下所示:
<span>{{getCount()}}</span>
<div ng-show="isUnique(item)">{{item}}</div>
永远不要做这样的事:
<span>{{getCount()}}</span>
<div ng-show="isUnique(item)">{{item}}</div>
因为此函数将在每个摘要周期上运行,有时甚至多次运行。相反,计算唯一性并将结果缓存在某个地方,这样您就可以返回它
<div ng-show="isUnique(item)">{{item}}</div>
$scope.isUnique = function(item){
for (var i = 0; i < list.length; i++){
if (item === list[i]) return false;
}
return true;
}