116

アプリで宣言された一連の Angular モジュールがあります。私はもともと、次のような「連鎖」構文を使用してそれらを宣言し始めました。

angular.module('mymodule', [])
    .controller('myctrl', ['dep1', function(dep1){ ... }])
    .service('myservice', ['dep2', function(dep2){ ... }])
    ... // more here

しかし、これは読みにくいと判断したため、次のようにモジュール変数を使用して宣言を開始しました。

var mod = angular.module('mymodule', []);

mod.controller('myctrl', ['dep1', function(dep1){ ... }]);

mod.service('myservice', ['dep2', function(dep2){ ... }]);
...

2 番目の構文の方がはるかに読みやすいように思えますが、私の唯一の不満は、この構文ではmod変数がグローバル スコープに含まれていないことです。という名前の他の変数がある場合mod、この次の変数で上書きされます (およびグローバル変数に関連するその他の問題)。

だから私の質問は、これが最善の方法ですか?それとも、次のようなことをした方がよいでしょうか?:

(function(){
    var mod = angular.module('mymod', []);
    mod.controller('myctrl', ['dep1', function(dep1){ ... }]);
    mod.service('myservice', ['dep2', function(dep2){ ... }]);
    ...
})();

それとも、気にするのに十分なほど重要ですか?モジュール宣言の「ベストプラクティス」が何であるかを知りたいだけです。前もって感謝します。

4

7 に答える 7

4

ファイルとモジュールを分割するのが好きです。

このようなもの:

app.js

var myApp = angular.module('myApp', ['myApp.controllers', 'myApp.directives', 'myApp.services']);

myApp.config(['$routeProvider', function($routeProvider) {
    /* routes configs */
    $routeProvider.when(/*...*/);
}]);

ディレクティブ.js

var myDirectives = angular.module('myApp.directives', []);

myDirectives.directive( /* ... */ );

service.js

var myServices = angular.module('myApp.services', []);

myServices.factory( /* ... */ );

私は「連鎖スタイル」の大ファンではないので、常に変数を書き留めることを好みます。

于 2013-11-13T15:42:40.560 に答える
0

私にとって、チェーンは最もコンパクトな方法です。

angular.module("mod1",["mod1.submod1"])

 .value("myValues", {
   ...
 })

 .factory("myFactory", function(myValues){
   ...
 })

 .controller("MainCtrl", function($scope){

   // when using "Ctrl as" syntax
   var MC = this;
   MC.data = ...;
 })
 ;

そうすれば、モジュール間でコンポーネントを簡単に移動でき、同じモジュールを 2 回宣言する必要がなく、グローバル変数も必要ありません。

ファイルが長くなりすぎた場合の解決策は簡単です。2 つのファイルに分割し、それぞれが独自のモジュールを先頭で宣言します。透明性を高めるために、ファイルごとに 1 つの一意のモジュールを保持し、ファイルのフル パスに似た名前を付けようとしています。[]このようにして、共通の問題点であるなしでモジュールを記述する必要もありません。

于 2014-08-11T16:51:12.150 に答える