在我的服务组织方面,老实说我不能想到 单向 。
我有一个大型服务,它定义了许多方法,包括验证大型对象的目的。功能非常复杂,所以我想将这个方法分成一口大小。
我该怎么做?我可以想到多种方法来实现这一目标:
这可能是最优雅的方式,但是它会使我的应用程序膨胀其他服务
这将导致一个非常大的验证方法,与其他方法一起生成,创建一个庞大的服务:
app.service('serv',function(){
return{
someFunc: function(){
// ...
},
// some more functions
_validate: function(options){
// call each function defined below
function a(){
// ...
}
function b(){
// ...
}
function c(){
// ...
}
}
});
考虑到上面的例子,我还可以直接在服务上定义函数 a - c 。也不太优雅
那么这里的最佳做法是什么?
答案 0 :(得分:0)
请原谅我的语法或compialtion错误,因为我在这里直接输入。
首先,我希望你的意思是工厂而不是服务,因为你不会在服务中返回对象。
另外,希望我能正确理解你的问题,所以你不想注入帮助服务,只是在同一个服务中组织代码,是吗? 我能想到的一种方法是,将它包装在IIFE下,这将有助于使所有变量和函数成为私有
一些提示,作为最佳做法,请避免在窗口或全局范围内创建var应用程序并在其他任何地方引用它,它会污染全局范围;其次,当您的应用程序变大并且您无法跟踪时,它可能会产生冲突变量创建。如果您需要获取模块,请使用angular.module(' yourAppName'),如下所示。
(function(){
// define your variables or functions here,
// All of them will be in the scope of the above function and
// outside functions cannot excess it or you can do the same inside the MyFactory function
angular.module('yourAppName').factory('myFactory', MyFactory);
function MyFactory(){
var factory = {};
// some local variables
var a, b, c;
// some local functions,
someFunc: function(){
// ...
},
// some more functions
_validate: function(options){
// call each function defined below
function a(){
// ...
}
function b(){
// ...
}
function c(){
// ...
}
}
// add the functions you want to expose to be called by the controllers or any objects where you have injected the factory.
factory.funcA = function(){ }
return factory;
}
})();