我有一些angularjs文件,它具有对第三方服务的RESTAPI访问权限。 说,我有多个需要使用相同的angularjs文件的java应用程序。 分享文件的最佳方式是什么。
基本上,在过去的日子里(我在谈论后端代码),我们会编写一个部署为服务的应用程序,所有其他应用程序都使用此服务。我如何通过角度实现这一点..请记住,我主要是一个后端开发人员并进入新的前端世界
感谢
答案 0 :(得分:3)
我建议使用Bower来维护可重用的组件。在他们自己的模块中开发独立功能,无论它们是directive
,service
还是Angular组件都无关紧要,然后将它们作为Bower依赖项安装到任何单独的Angular应用程序中。< / p>
Bower有documentation on creating packages,Brian Ford写了一篇关于使用Bower编写可重复使用的Angular组件的nice (albeit a bit outdated at places) tutorial。
所以,基本上你的工作流程会是这样的:
开始开发您的模块。如果它已经存在,你可以把它拉出当前的位置。
mkdir your-component-name
cd your-component-name
$editor your-module.js
一旦你your-module.js
开始(不需要先完成开发,实际上最好不要,如果你正在开发一个全新的组件),是时候初始化你的{{3} } component。
bower init
您将被要求进行一些初始设置,例如组件名称(目录名称的默认值,例如your-component-name
),初始版本号,主文件(最有可能是your-module.js
)等。大多数情况下默认值都很好。成功运行bower init
后,您的bower.json
可能看起来像这样:
{
"name": "your-component-name",
"version": "0.0.0",
"main": 'your-module.js',
"license": "MIT",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
]
}
当然你可以手动完成所有这些操作,但使用bower init
帮助工具很好。
继续发展。如果您有任何外部依赖项,您也可以使用Bower添加它们:
bower install external-dependency --save
完成开发?是时候发布您的组件,以便它可以在您的应用程序中使用。如果您尚未初始化Bower存储库,请从它开始:
git init .
添加你的作品,提交并标记它:
git add <your-component-contents>
git commit -m "v0.0.0"
git tag v0.0.0
除了version
中的bower.json
属性值之外,这是此部分(注意:Git正在谈论component.json
- 这是不幸的过时的东西),您将能够在所有应用程序中轻松维护您的组件。需要改变吗?只需这样做,提高版本号,提交,标记并在需要时运行bower update
。
下一步是将您的代码发布到Git存储库中,例如Brian Ford's tutorial
git remote add origin git@github.com:your-github-user-name/angular-your-component-name.git
git push -u origin master
然后可以安装组件:
bower install your-github-user-name/angular-your-component-name
甚至可以从私人仓库安装该组件,例如,如果您不想在公司外部发布该组件(请参阅GitHub中标题“Bower Package Stewardship”标题下的内容更多细节):
bower install git@github.com:your-github-user-name/angular-your-component-name.git
# or from any other arbitrary git repo
另一方面,如果你做希望发布新创建的组件,你应该考虑注册它:
bower register angular-your-component-name git@github.com:your-github-user-name/angular-your-component-name.git
因此可以搜索它,并且更容易安装:
bower install angular-your-component-name
开始在Angular应用程序中使用您的组件。每当您发现某个应用程序出现错误/缺失功能时,您就可以修复组件,执行新版本,然后逐个更新应用程序。
然后您还可以使用Brian Ford's tutorial代替npm。工作流程也几乎相同,当然不同于工具特定部分,但没有大的差异。我现在不会进入Bower包装细节,只是想提一下作为替代工具。
答案 1 :(得分:1)
解决方案1:
这可以完全按照你描述的方式实现。
部署服务AngularJS应用程序(包含所有服务)
例如:tomcat7/www/myServiceApp
因此,您所需的所有内容都将分配到myServiceApp/js/myShareService.js
在需要访问它的应用上,您可以引用所有JS文件(和其他文件),例如<script src="../myServiceApp/js/myShareService.js"></script>
当然,使用该解决方案,两个服务都应部署在同一WebServer上
解决方案2:
我个人更喜欢这个解决方案,涉及持续集成。 我将持续集成的第一步中的所有共享资源复制到我的应用程序目录,以便每个应用程序都是独立的。
答案 2 :(得分:1)
在Angular中,我们将应用程序与modules
分开,这相当于Java中的package
。假设您想要创建一个可以重用于其他Angular JS应用程序的包。
样品
外部套餐
angular.module('my-awesome-app', [])
.service('FooService', function () {
// Awesome code(s) here
});
应用套餐
angular.module('another-app', ['my-awesome-app'])
.controller('AppController', function (FooService) {
// Awesome code(s) here
});
而不是使用import
我们将my-awesome-app
设置为another-app
的依赖项(这就是为什么我们将它放在数组上),以便您可以调用它的服务。
答案 3 :(得分:0)
创建包含Angular Module的JS文件,而Angular Module又包含Factory以公开API。缩小文件并通过URL或直接包含在项目中使用它。