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