あなたは私たちがエクスポートangularjsモジュールは
https://github.com/johnpapa/angular-styleguide/tree/master/a1#iife
私-dir.js
(function() {
'use strict';
angular
.module('my.dir', [])
.controller('MyDirController', MyDirController),
.directive('my-dir', MyDirDirective);
function MyDirController() {
}
function MyDirDirective() {
return {
restrict: 'E',
controller: MyDirController
}
}
})();
アプリを使用するか、スタイルガイドに従って、生命維持にangularjsモジュールをラップすることになっています。 js
(function() {
'use strict';
angular
.module('app', ['my.dir'])
})();
しかし、今はwebpackを使用してes6モジュールをバンドルしています。このIIFEとexport
はどのように使用するのですか?エクスポートは最上位のコマンドでなければならないため、export default angular.module('my-dir', [])
は実行できません。また、モジュール名の文字列を返すだけですか?したがって、それはapp
モジュールの必須として含めることができます。ベストプラクティスとは何ですか?
これは動作しますが、あなたは、モジュール名を再入力する必要があり、かつWebPACKのモジュールに移動した後(Iは大文字である必要がありますと仮定)生命維持の外輸出
(function() {
angular.module('my.dir', [])
.controller('MyDirController', MyDirController)
.directive('my-dir', MyDirDirective);
function MyDirDirective(appPath) {
return {
restrict: 'E',
scope: {},
bindToController: {},
controllerAs: '$ctrl',
template: '<div ng-bind="$ctrl.msg"></div>',
controller: MyDirController
};
}
function MyDirController() {
var self = this;
self.msg = "Hello World";
}
})();
export default 'my.dir'
構築する場合、今すべてが、デフォルトではモジュールであるとして必要はなくなりました。これらのツールは、あなたの懸念事項も解決します。 webpack/babelを使用すると、コードを書くための他のアプローチをとることができます:上記のコードをcommonjsモジュール(IIFEなし)で記述し、上記をTypescriptまたはES6クラスに変換します。あなたのコードベースが、長期的な利点は十分に価値がある:) –