私はアプリケーションを構築するために山形シードテンプレートを使用しています。最初に、すべてのJavaScriptコードを単一のファイルに入れましたmain.js
。このファイルには、モジュール宣言、コントローラー、ディレクティブ、フィルター、サービスが含まれています。アプリケーションはこのように正常に動作しますが、アプリケーションがより複雑になるため、スケーラビリティとメンテナンス性が心配です。Angular-seedテンプレートにはこれらのファイルごとに個別のファイルがあることに気付いたので、コードを単一のmain.js
ファイルからこの質問のタイトルに記載されている他の各ファイルに配布しようとしましたapp/js
が、angularのディレクトリで見つかりました-シードテンプレート。
私の質問は、アプリケーションを機能させるために依存関係をどのように管理するのですか?既存の文書が見つかりました。ここでは例の各番組に、単一のJavaScriptソース・ファイルを指定したので、非常にこの点では明らかではありません。
私が持っているものの例は:
app.js
angular.module('myApp',
['myApp.filters',
'myApp.services',
'myApp.controllers']);
controllers.js
angular.module('myApp.controllers', []).
controller('AppCtrl', [function ($scope, $http, $filter, MyService) {
$scope.myService = MyService; // found in services.js
// other functions...
}
]);
filters.js
angular.module('myApp.filters', []).
filter('myFilter', [function (MyService) {
return function(value) {
if (MyService.data) { // test to ensure service is loaded
for (var i = 0; i < MyService.data.length; i++) {
// code to return appropriate value from MyService
}
}
}
}]
);
services.js
angular.module('myApp.services', []).
factory('MyService', function($http) {
var MyService = {};
$http.get('resources/data.json').success(function(response) {
MyService.data = response;
});
return MyService;
}
);
main.js
/* This is the single file I want to separate into the others */
var myApp = angular.module('myApp'), []);
myApp.factory('MyService', function($http) {
// same code as in services.js
}
myApp.filter('myFilter', function(MyService) {
// same code as in filters.js
}
function AppCtrl ($scope, $http, $filter, MyService) {
// same code as in app.js
}
依存関係をどのように管理しますか?
前もって感謝します。
angular.module('myApp.services', ['myApp.services']);
運が悪いのでapp.jsに入れました。
angular.module('myApp.services', ['myApp.server', 'myApp.somethingElse'])
。
angular.module('myApp.service1', ['myApp.service1', 'myApp.service2'])
元々読んだ。それ以外の場合は、独自の依存関係としてmyApp.servicesを含めませんでした。