使用单独的Spring后端构建Angular应用时的不同项目结构

时间:2018-11-11 11:43:04

标签: spring angular maven spring-boot

我想建立一个网页,在其中我将数据库,后端和前端分开,然后通过REST进行通信。我对如何构造项目感到很困惑。据我了解,有以下几种方法:

  1. 进行不同的项目:一个用于前端(例如Angular),另一个用于后端(Spring),包括数据库连接。它们彼此完全分开,可以使用不同的IDE。

  2. 在一个大项目中构建它,但仍使用REST进行通信(请参见下图)。

现在我想知道这两种方法之间的区别是什么?我不知道(也不问)哪个是更好的一个,但是我什至无法找出理由来选择一个高于或低于另一个。

Approach 2

1 个答案:

答案 0 :(得分:1)

这实际上是关于个人喜好的问题,但是您要让它们处于完全不同的项目中,同时您可以将JS软件包(来自ng build)放置在(Spring应用程序的)资源/静态文件夹中,并且如果您想在同一服务器上运行它们,它将可以完美地工作。

您可以设置代理配置以使其变得更简单,例如:

{
  "/api": {
    "target": "http://localhost:8080",
    "secure": false
  }
}

通过这种方式,只要您使用Angulars HttpClient之类的代码进行休息呼叫,只要将/api放在url之前,它就会称为您的spring后端。

示例:

  public fetchResource(id: number): Observable<Resource> {
    return this.http.get(`/api/resources/${id}`);
  }

我更喜欢将客户端和api放在不同的项目中。

无论何时要将JS捆绑包添加到资源/静态文件夹中,都可以在package.json中创建一个NPM脚本来为您完成。