我正在开发一个具有 jee6 后端(仅基于 json 的 api)和大量客户端代码的应用程序。它看起来像单页应用程序(最近这个很酷的流行词)。
我不确定如何构建我的代码库。我考虑了一些方法
- 有独立的后端和前端项目——这意味着后端部分是纯 java,有 maven 和所有东西,有独立的前端和所有特定于 js 的构建工具等。
- 将所有内容都集中在一个项目中,这样我就可以获得一个存档(war)来部署在服务器上,其中包含所有前端内容。我不太喜欢这种方法...
如果我选择第一个,部署会怎么样?我必须从这个前端部分构建另一个“ war ”存档并将其放到服务器上吗?
我找不到人们使用的任何做法。
最佳答案
我会将您的 Javascript 和 CSS 包与 WAR 一起使用,并使用类似 Wro4J 的东西(我有自己的 Assets 管道代码,我可以在某个时候分享)。
原因:
- 为了简化开发,您需要在运行 servlet 容器时编辑 Javascript/CSS 时刷新它们。 Maven、Eclipse(和/或 JRebel)资源刷新器不适用于奇怪的包管理。
- 实际上并没有像 WAR/JAR 那样仅用于 Javascript/CSS 缩小的东西(Require.js 和 JAM 更多用于依赖项加载)。
在单独的项目/jar 中使用单独的 Java 代码的原因是为了避免耦合、提高重用和增加内聚性。你试图为分离做的主要是为了凝聚。在很大程度上,您不需要将 Javascript 与您的 Web 应用程序分开,因为它可能已经与 Java 非常分离,并且是一种完全不同的语言/运行时。
但是,如果您说想要 CDN 您的 JS/CSS,以及为什么分离代码可能更容易进行实验,我可以理解。
这里有两个选项:
- Git's submodules并将 Javascripts 和 CSS 作为单独的项目作为 WAR 项目的子模块。
- 有两个 WAR 项目。一个包含您的后端 Java 代码,另一个包含您的前端代码。您将需要一个支持多个 WARS 的容器,并且您将担心管理可怕的 servlet 容器上下文路径。
实际上,我曾在我之前工作的一家公司做过第二项(笑那个)。它工作得很好。但是现在我更喜欢 #1,因为它的快速和轻松(笑那个)。
关于java - java后端单页应用打包部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880421/