gpt4 book ai didi

AngularJS - 以 Angular 声明服务的不同方式的主要区别是什么?

转载 作者:行者123 更新时间:2023-12-01 10:52:05 24 4
gpt4 key购买 nike

我正在开发一个 angularJS 应用程序,我正在努力坚持 AngularJs 中最有效和被广泛接受的开发风格。目前,我正在使用这种方式来声明我的服务:

app.factory('MyService', function() {
/* ... */
function doSomething(){
console.log('I just did something');

}

function iAmNotVisible(){
console.log('I am not accessible from the outside');
}
/* ... */

return{
doSomething: doSomething
};
});

但是,有很多例子,我不太确定应该遵循哪种设计风格。对服务有广泛了解的人可以解释为什么某种风格比另一种更相关吗?

除了限制对我服务中某些功能的访问之外,我正在做的事情还有其他用处吗?

最佳答案

我建议您像在 angular-seed app 中那样布置您的 factoryservice , 除了令人讨厌的应用程序仅在 services.js 样板中使用 value 。但是,您可以调整它们用于 Controller 、指令和过滤器的布局。

'use strict';

/* Filters */

angular.module('myApp.filters', []).
filter('interpolate', ['version', function(version) {
return function(text) {
return String(text).replace(/\%VERSION\%/mg, version);
}
}]);

这意味着你会做的服务:

'use strict';

/* Services */

angular.module('myApp.filters', []).
service('myservice', ['provider1', 'provider2', function(provider1, provider2) {
this.foo = function() {
return 'foo';
};
}]).
factory('myfactoryprovider', ['myservice', function(myservice) {
return "whatever";
}]);

这有比您绝对需要的更多的样板,但它是缩小安全的并且保持您的命名空间干净。

你所要做的就是决定 constvaluefactoryservice 中哪个是最重要的合适的。如果要创建单个对象,请使用 service:它作为构造函数被调用,因此您只需将任何方法分配给 this,所有对象都将共享同一个对象。如果你想完全控制是否创建一个对象,尽管它仍然只被调用一次,请使用 factory。使用 value 返回一个简单的值,使用 const 返回可以在 config 中使用的值。

关于AngularJS - 以 Angular 声明服务的不同方式的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com