是否存在格式化注入依赖项的约定?

ree*_*rej 5 javascript dependency-injection code-formatting angularjs

Angular JS依赖项

在使用内联括号表示法时,是否有任何常用的约定如何格式化长依赖列表?在浏览了githubAngular JS开发人员指南之后,我还没有看到一致的方法.

我对个人认为最好的事情不感兴趣(对不起),但是如果有某些我无法找到的标准惯例最佳实践.


例子

标准

这是有效的,但它扩展到第212列.快速比较字符串和参数也很困难.

angular.module('donkey', []).controller('FooCtrl', ['$scope', '$http', 'someCoolService', 'anotherCoolService', 'somethingElse', function ($scope, $http, someCoolService, anotherCoolService, somethingElse) {
}]);
Run Code Online (Sandbox Code Playgroud)

好一点

它仍然在第87列,但很容易比较字符串和args.

angular
  .module('donkey', [])
  .controller('FooCtrl', [
    '$scope', '$http', 'someCoolService', 'anotherCoolService', 'somethingElse',
    function ($scope, $http, someCoolService, anotherCoolService, somethingElse) {
  }]);
Run Code Online (Sandbox Code Playgroud)

功能性,但有点奇怪.

我倾向于使用这个,因为它水平紧凑,允许快速注释掉依赖项.但是,它确实看起来有点奇怪.

angular
.module('donkey', [])
.controller('FooCtrl', [
  '$scope',
  '$http',
  'someCoolService',
  'anotherCoolService',
  'somethingElse',
  function (
    $scope, 
    $http, 
    someCoolService, 
    anotherCoolService, 
    somethingElse) {
}])
Run Code Online (Sandbox Code Playgroud)

额外信用

有没有一种方法可以满足JSLint的空白检查,并且还可以在Sublime Text 3中维护代码崩溃功能?

谢谢!


资源

Angular JS贡献者编码规则没有提及它.

此最佳实践指南适用于Google,Crockford等.

Jos*_*osh 5

我不知道在Angular中注入依赖项的三种支持方法之间存在公认的约定.

话虽这么说,我目前正在开发一个非常大的Angular项目,我们一直使用$inject语法来定义我们的依赖项.该文档也似乎在向这个方向趋势.

所以我的建议是这样的.

将所有依赖项定义为对象

var SomeService = function($rootScope, $http, $q){
  this.$rootScope = $rootScope;
  this.$http = $http;
  this.$q = $q;
};

SomeService.$inject = ['$rootScope', '$http', '$q'];

myModule.service('someService', SomeService);
Run Code Online (Sandbox Code Playgroud)

这将使您更容易推理您的代码,并允许您将服务,指令和控制器分离到不同的文件中.

除了非常小的应用程序,我将远离使用匿名声明和所有依赖项的数组语法.