在多个 angularjs 项目之间共享通用功能/配置

Sharing common functionality/configuration across multiple angularjs projects

本文关键字:功能 配置 共享 之间 angularjs 项目      更新时间:2023-09-26

我有多个angularjs项目,每个项目都包含多个页面。我需要为$http共享一些通用配置,其中包含一些通用配置设置和跨这些项目的响应拦截器。我如何在多个 angularjs 项目中共享这个共同的部分。每个项目都加载 angularjs,并且是通过获取bower_dependencies来构建的。

我不会知道每个项目中模块存在的绝对路径。

具体来说,我需要将withCredentials设置为true,并在请求中设置一些公共标头,并为所有项目设置公共响应拦截器。有没有办法分享这个?

我可以从中构建一个通用的angularjs模块吗,如果是,那么它将如何与bower_dependencies一起工作?

你可以在配置阶段做到这一点

app.config(['$httpProvider',function ($httpProvider) {
     $httpProvider.defaults.withCredentials = true;
     // REST OF DEFAULTS
}]);

在此处和此处阅读有关$httpProvider的更多信息

你描述的是为什么模块如此方便

每个模块都可以有自己的配置或运行阶段、服务等,因此将您需要的内容包装到一个模块中并将该模块注入多个项目与您已经使用的其他第三方模块没有什么不同。

angular.module('myUniversalModule', [])
  .constant('someconstant',123)
  .factory('myUniversalInterceptor', function() {
    var myInterceptor = {
      ....      
    };
    return myInterceptor;
  }).config(['$httpProvider', function($httpProvider) {
      $httpProvider.interceptors.push('myUniversalInterceptor');
      $httpProvider.defaults.withCredentials = true;
    }
  ]);

然后注入任何应用

angular.module('thisMainApp', ['myUniversalModule'])
       .config(....
       .run(....
       .factory(....
       .constant(...
       .controller(...