我正在使用以下 angularjs 项目结构:
index.html
js/
-- angularjs
-- application.js
-- shared
-----SharedModule.js
-----LocalizeService.js
-----OtherSharedService.js
-- user
-----UserModule.js
-----LoginController.js
-----RegisterController.js
-----UserService.js
换句话说,我不是按照文件的类型(例如服务/控制器/指令),而是按照它们的逻辑目的(例如用户/共享/购物车等)对文件进行分组。我读到这是大型项目的正确方法。
主 application.js 文件包含如下模块:
angular.module('myApplication', [
'ngRoute',
'ngCookies',
'sharedModule',
'userModule',
'dahsboardModule',
])
然后,每个模块包括相关的控制器/指令/服务/任何东西。
例如 SharedModule.js
var sharedModule = angular.module('sharedModule',[]);
sharedModule.factory('Localize', ['$http', '$rootScope', '$window', LocalizeService]);
sharedModule.controller('someController',['$rootScope',SomeController]);
然后我在每个单独的文件中实现逻辑。我的问题是:我应该使用什么设计模式来实现每个单独的服务/控制器的逻辑?
我读了这本书: http: //www.addyosmani.com/resources/essentialjsdesignpatterns/book/ 到目前为止,我心爱的设计模式是“显示模块模式”,这是一种通用设计模式。我在其他项目中多次使用它(没有 angularjs)。
但似乎我不能将它与 angularjs 一起使用。
var LocalizeService = (function() {
})();
如何将 $rootScope/$http 之类的所有内容传递给模块?
这就是它现在对我有用的方式:
function LocalizeService($http,$rootScope,$window) {
var localize = (function() {
function publicFunction() {
// do smth.
}
return {
someFunction: publicFunction
}
})();
return localize;
}
但我不确定它是否完全正确。你能请教一下吗?