AngularJS和SpringMVC在同一个项目中

时间:2015-11-04 19:35:59

标签: javascript java angularjs jsp spring-mvc

我正在编写Java Web应用程序,并希望在前端使用AngularJS。 但是我不想将路由和安全性委托给角度,而是用spring来处理它。我在项目中的文件层次结构如下:

hierarchy

我编写了Angular控制器,服务等。只需在jsp页面上使用一些init参数即可。所有的jsp都是由Spring控制器加载的,我对这些页面有一些安全规则。 Angular还使用此应用程序的REST API。

问题在于这种方法的效率。事实上我在这里有一些SPA。每次加载页面时,Angular都会从头开始初始化(大约有10页)。

我想留在这个版本的原因是:

  • 已设置(路由,安全)
  • 好像我不需要在页面上加载所有脚本,但只需要加载

但我也觉得我做错了...... 我应该将Spring和Angular分开,并将Angular用于路由和安全处理,而不仅仅是DOM操作。

你怎么看?你有什么建议吗?

1 个答案:

答案 0 :(得分:3)

Angular不是另一个jQuery,它的单页面应用程序框架。 您可以在与您的后端通信的普通外部应用程序上查看SPA。所以服务器上没有视图或prezentation层,只有REST API。

Angular应用程序应该有自己的路由,将它与spring MVC结合起来没有意义。安全性主要依赖于REST,您可以使用弹簧安全性作为ussual。

最佳做法是将Angular应用程序创建为单独的JavaScript应用程序。您可以使用角度生态系统中的许多工具,这使您的工作非常舒适。

在开发过程中,您的后端运行,并使用javascript devstack单独开发Angular部分。之后,您可以将这两个部分打包成单战。

我在这里有一个很好的Spring和Angular集成的小例子:

https://github.com/Angular-cz/java-devstack

Unluckilly自述文件是用捷克文写的(美丽的语言:)但是如果你有Java和maven的经验,你可能会从代码中获取它,我也会尝试在这里描述它。

具有良好模块结构和jwt身份验证的更大的应用程序可以在这里看到: https://bitbucket.org/angular_cz/beerapp

它们都有类似的架构:

  • 单独的maven模块用于前端并分离后端。
  • javascript部分使用npm作为包管理器
  • 开发人员正在使用gulp任务运行器进行javascript开发(它在模块内运行,gulpfile.js所在的位置)。
  • 配置了karma runner和多个单元测试
  • 应用程序在开发过程中连接到后端,使用/ api上运行的代理,可以在生产中使用相同的配置)
  • 构建战争时,前端模块使用frontend-maven-plugin运行gulp构建任务,与javascript开发人员一样
  • 然后将构建的缩小资产放入资源
  • 下一部分只是普通的maven方式如何将资产放到/ static
  • 还有一个好处 - 集成测试配置文件下还集成了e2e测试。

随意询问您是否对此类架构感兴趣。