java - java后端单页应用打包部署

标签 java javascript build-process singlepage

我正在开发一个具有 jee6 后端(仅基于 json 的 api)和大量客户端代码的应用程序。它看起来像单页应用程序(最近这个很酷的流行词)。

我不确定如何构建我的代码库。我考虑了一些方法

  • 有独立的后端和前端项目——这意味着后端部分是纯 java,有 maven 和所有东西,有独立的前端和所有特定于 js 的构建工具等。
  • 将所有内容都集中在一个项目中,这样我就可以获得一个存档(war)来部署在服务器上,其中包含所有前端内容。我不太喜欢这种方法...

如果我选择第一个,部署会怎么样?我必须从这个前端部分构建另一个“ war ”存档并将其放到服务器上吗?

我找不到人们使用的任何做法。

最佳答案

我会将您的 Javascript 和 CSS 包与 WAR 一起使用,并使用类似 Wro4J 的东西(我有自己的 Assets 管道代码,我可以在某个时候分享)。

原因:

  1. 为了简化开发,您需要在运行 servlet 容器时编辑 Javascript/CSS 时刷新它们。 Maven、Eclipse(和/或 JRebel)资源刷新器不适用于奇怪的包管理。
  2. 实际上并没有像 WAR/JAR 那样仅用于 Javascript/CSS 缩小的东西(Require.jsJAM 更多用于依赖项加载)。

在单独的项目/jar 中使用单独的 Java 代码的原因是为了避免耦合、提高重用和增加内聚性。你试图为分离做的主要是为了凝聚。在很大程度上,您不需要将 Javascript 与您的 Web 应用程序分开,因为它可能已经与 Java 非常分离,并且是一种完全不同的语言/运行时。

但是,如果您说想要 CDN 您的 JS/CSS,以及为什么分离代码可能更容易进行实验,我可以理解。

这里有两个选项:

  1. Git's submodules并将 Javascripts 和 CSS 作为单独的项目作为 WAR 项目的子模块。
  2. 有两个 WAR 项目。一个包含您的后端 Java 代码,另一个包含您的前端代码。您将需要一个支持多个 WARS 的容器,并且您将担心管理可怕的 servlet 容器上下文路径。

实际上,我曾在我之前工作的一家公司做过第二项(笑那个)。它工作得很好。但是现在我更喜欢 #1,因为它的快速和轻松(笑那个)。

关于java - java后端单页应用打包部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880421/

相关文章:

java - 如何修复 Java webapp 中的地方性 XSS 漏洞

java - KeyListener编译问题中的doClick()

javascript - 如何使用 react typescript 在 Electron 中获取 Node 类型?

C++, "Old Fashioned"方式

maven-2 - 如何获取工件的依赖树?

java - glassfi下如何使用hornetq和struts2

java - 等宽窗扇

javascript - jQuery 元素完全加载后如何执行单击事件?

javascript - 我在使用 Javascript 或 Jquery 创建带有字符串计数的动态字段时遇到问题

vim - 使用 MinGW 构建 vim