AngularJS模块应该在他们自己的文件中吗?

时间:2015-11-19 11:15:51

标签: javascript angularjs

相当简单的问题,我似乎无法找到明确的答案。在那一刻我将我的模块在一个文件中声明:

var module = angular.module("app", ["agGrid", "ngAnimate", "ngSanitize", "ui.bootstrap"]);

我的控制器在另一个:

angular.module("app").controller("mainCtrl", ["$scope", "$timeout", "dateFilter", "$http", "shareDataService", "getDataService", function ($scope, $timeout, dateFilter, $http, shareDataService, getDataService) {

这种结构是好还是浪费时间和空间?

3 个答案:

答案 0 :(得分:1)

为每种类型的组件提供单独的文件是理想的。我遵循开发中的结构:

app.js //where the module resides
routes.js //consists of routes
controllers/
services/ 
factories/
filters/
directives/

定义您的模块:

var app = angular.module();

然后使用' app'在其他文件中声明其他嵌套的js,例如:

app.directive()

但是,在制作中,最好使用任务运行器(例如gulp)来组合所有文件并缩小最终文件。

答案 1 :(得分:1)

将它们分开是一种很好的做法。这样,您就不会混淆模块定义和控制器/服务/指令。

这里有一些角度js的最佳实践 -

  

而不是将您的应用切换到不会被打破的水平线上   up,将您的代码分组到相关的包中。这样,如果你删除一个   模块,您的应用仍然有效。

https://github.com/angular/angular.js/wiki/Best-Practices

答案 2 :(得分:1)

单一责任

为每个文件定义1个组件。

以下示例定义应用程序模块及其依赖项,定义控制器,并在同一文件中定义工厂。

避免这个

angular
    .module('app', ['ngRoute'])
    .controller('SomeController', SomeController)
    .factory('someFactory', someFactory);

function SomeController() { }

function someFactory() { }

现在,相同的组件被分成了自己的文件。

这样做

// app.module.js
angular
    .module('app', ['ngRoute']);
// some.controller.js
angular
    .module('app')
    .controller('SomeController', SomeController);

function SomeController() { }
// someFactory.js
angular
    .module('app')
    .factory('someFactory', someFactory);

function someFactory() { }

https://github.com/johnpapa/angular-styleguide#style-y001