4

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

我不确定如何构建我的代码库。有几种方法我考虑

  • 后端和前端有单独的项目——这意味着后端部分是纯 java 的,带有 maven 和所有这些东西,并且有单独的前端和所有特定于 js 的构建工具等。
  • 将所有东西都放在一个项目中,这样我就可以在服务器上部署一个存档(战争),其中包含所有前端的东西。我真的不喜欢这种方法...

如果我使用第一个部署,该怎么办?我必须从这个前端部分构建另一个“战争”档案并将其放到服务器上吗?

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

4

1 回答 1

4

我会将您的 Javascript 和 CSS 包留在 WAR 中,并使用Wro4J之类的东西(我有自己的资产管道代码,我可以在某个时候分享)。

原因如下:

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

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

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

这里有两个选项:

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

实际上,我在之前工作的一家公司中已经完成了第 2 项(笑那个)。它工作得很好。但是现在我更喜欢#1,因为它的快速和轻松(笑那个)。

于 2012-12-16T00:25:53.507 回答