Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建一个共享实用程序,用于两个不同的AngularJS应用程序(在不同的html页面上)?_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 如何创建一个共享实用程序,用于两个不同的AngularJS应用程序(在不同的html页面上)?

Javascript 如何创建一个共享实用程序,用于两个不同的AngularJS应用程序(在不同的html页面上)?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,(长期潜伏者,首次发布) 我正在使用AngularJS开发一个多页面网站,我想编写一个可以包含在多个页面中的实用程序。我已经研究了服务和提供者,我找到的所有示例都是单页示例。我不知道如何将其推广到不同页面上使用的多个应用程序 这就是我想要的两个不同页面/应用程序 在app1.js中: 在app2.js中: 在myUtil.js中: 我为提供商和服务找到的所有示例都显示它们连接到单个应用程序。AngularJS可以这样做吗?如果是这样,我遗漏了什么?这可能有点太宽泛了。但是,我建议您创建一个库模块

(长期潜伏者,首次发布)

我正在使用AngularJS开发一个多页面网站,我想编写一个可以包含在多个页面中的实用程序。我已经研究了服务和提供者,我找到的所有示例都是单页示例。我不知道如何将其推广到不同页面上使用的多个应用程序

这就是我想要的两个不同页面/应用程序

在app1.js中: 在app2.js中: 在myUtil.js中:
我为提供商和服务找到的所有示例都显示它们连接到单个应用程序。AngularJS可以这样做吗?如果是这样,我遗漏了什么?

这可能有点太宽泛了。但是,我建议您创建一个库模块,专门用于您希望为您的项目提供的功能/实用程序

我建议使用来组织所有这些。为该功能模块提供自己的
package.json
,并添加使其运行所需的任何代码。在使用者项目中,将库模块作为依赖项添加

在本地(以及快速地,因为您不必不断地推送到npm注册表)使其工作的一个好方法是使用该实用程序

如果您的消费者项目已经面向npm,则工作流如下所示:

  • 创建一个新目录以包含实用程序库模块,让我们将其称为“我的实用程序”
  • cd
    到新目录
  • npm init
    在此库中创建
    package.json
  • npm链接
    使库在本地可用
  • cd
    到任何消费者项目
  • npm link my utility
    ,以便使用者项目创建一个符号链接,指向包含实用程序模块的本地文件夹

  • 设置完成后,根据用户项目构建或使用依赖项的方式,您可以在顶级项目中使用新的实用程序库。

    zero298的答案是一个不错的答案,因为它是组织和重用您创建的实用程序模块的好方法

    如果你想得到一个不那么宽泛、更“规范”的答案,那么一种方法是使用某种实用模块,其中包含你想放入的任何服务,然后你可以将其作为所有使用它的应用程序的依赖项传递进来。这一切都取决于您的构建过程,取决于您如何导入/组织文件,但作为一个非常基本的示例,您可以使用带有“utils”服务的“utilsmodule”模块:

    myUtils.js:

    angular.module('utilsmodule', []);
    
    // Service could be in another file
    angular.module('utilsmodule').service('myutil', function() {
      return {
        myUtilFunction : function() {
          return "This is from myutil";
        }
      };
    });
    
    然后在应用程序文件中,您可以按名称传入模块,这将使应用程序能够访问“myutil”服务

    app1.js:

    var app1 = angular.module('app1',['utilsmodule'])
    app1.controller('ctrl1',function ctrl1($scope,myutil){...})
    
    然后在app1.js文件之前导入myUtils.js文件,以便在创建应用程序之前向angular注册“utilsmodule”模块。您可以对app2执行相同的操作,实用程序模块应该对这两个应用程序都可用


    谢谢,这正是我想要的。
    ??? Provider? Service? Module?
    
    angular.module('utilsmodule', []);
    
    // Service could be in another file
    angular.module('utilsmodule').service('myutil', function() {
      return {
        myUtilFunction : function() {
          return "This is from myutil";
        }
      };
    });
    
    var app1 = angular.module('app1',['utilsmodule'])
    app1.controller('ctrl1',function ctrl1($scope,myutil){...})