在 AngularJS 中跨多个模块配置共享服务
Configuring shared services across multiple modules in AngularJS
我的应用程序在 AngularJS 应用程序中遵循 John Papa 的 styleguide:
样式指南强调使用高度模块化的方法来设计应用程序。我的问题是关于多个配置及其对共享服务的影响。
假设我有一个这样的主模块:
angular.module("app", ["app.feature1"])
.config(function() {
// do some configuration here
console.log("app configured");
});
以及配置共享 angular 服务的功能模块,假设 $http 服务:
angular.module("app.feature1", [])
.config(function($http) {
// configure the $http service
console.log("feature1 configured");
});
我的理解是否正确,"feature1" 的配置将转移到主模块,因为 $http 服务是单例的,因此跨模块共享?还是我必须在主模块中配置 $http 服务,因为每个模块都有自己的 $http 服务实例?
编辑:我可以确认依赖配置被继承并首先执行。请参阅 David 的 jsfiddle 示例。
作为最佳实践,您应该尽早配置服务,这通常是您的主模块(应用根目录),最好只配置一次以避免重叠更改。
由于 $http
是单例(正如您提到的),每次注入 $http
.
时,通过配置进行的任何更改都将传播到整个应用程序
还值得一提的是,对服务的配置是先进先出的,这意味着如果您有两个配置更改,最后访问的配置将是保留到服务的配置,因为以前的配置将被覆盖如果他们正在更改服务的相同组件。
在您的情况下,是的,您模块中对 $http
的更改将扩展到您的主应用程序和任何其他使用 $http
的模块。
最后,根据评论,子依赖配置在父配置之前解析,如这个简单的 fiddle 所示:
HTML:
<div ng-app="app"></div>
JS:
angular.module("app", ["app.feature1"])
.config(function() {
alert('main config');
});
angular.module("app.feature1", [])
.config(function() {
alert('child config');
});
每次加载时,子配置都会在主配置之前调用警报。
我的应用程序在 AngularJS 应用程序中遵循 John Papa 的 styleguide:
样式指南强调使用高度模块化的方法来设计应用程序。我的问题是关于多个配置及其对共享服务的影响。
假设我有一个这样的主模块:
angular.module("app", ["app.feature1"])
.config(function() {
// do some configuration here
console.log("app configured");
});
以及配置共享 angular 服务的功能模块,假设 $http 服务:
angular.module("app.feature1", [])
.config(function($http) {
// configure the $http service
console.log("feature1 configured");
});
我的理解是否正确,"feature1" 的配置将转移到主模块,因为 $http 服务是单例的,因此跨模块共享?还是我必须在主模块中配置 $http 服务,因为每个模块都有自己的 $http 服务实例?
编辑:我可以确认依赖配置被继承并首先执行。请参阅 David 的 jsfiddle 示例。
作为最佳实践,您应该尽早配置服务,这通常是您的主模块(应用根目录),最好只配置一次以避免重叠更改。
由于 $http
是单例(正如您提到的),每次注入 $http
.
还值得一提的是,对服务的配置是先进先出的,这意味着如果您有两个配置更改,最后访问的配置将是保留到服务的配置,因为以前的配置将被覆盖如果他们正在更改服务的相同组件。
在您的情况下,是的,您模块中对 $http
的更改将扩展到您的主应用程序和任何其他使用 $http
的模块。
最后,根据评论,子依赖配置在父配置之前解析,如这个简单的 fiddle 所示:
HTML:
<div ng-app="app"></div>
JS:
angular.module("app", ["app.feature1"])
.config(function() {
alert('main config');
});
angular.module("app.feature1", [])
.config(function() {
alert('child config');
});
每次加载时,子配置都会在主配置之前调用警报。