我有Web应用程序的两个不同部分,即公共站点和管理站点。我想为他们两个创建不同的独立React应用程序。对于API,我使用Spring-Boot。 我可以这样做吗? 以及我需要添加到webpack.config.js文件中的内容?
我试图再创建一个HTML页面并呈现给该应用程序。但这不起作用。因为一个React应用程序只渲染一次。
我希望使用一个API运行两个不同的React应用程序。
答案 0 :(得分:0)
有2个主要选项:
我将从您的问题中假设您要执行选项2。
在这种情况下,请创建如下结构:
+ project
| - backend-api
| - frontend-public
| - frontend-admin
父级pom.xml
应该引用3个模块:
<modules>
<module>backend-api</module>
<module>frontend-public</module>
<module>frontend-admin</module>
</modules>
每个模块都应参考父pom:
<parent>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
您的Spring Boot项目将不再能够使用Spring Boot父级,因此您需要导入BOM依赖项:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在frontend- *模块中,您应该创建一个zip文件,然后可以使用maven-dependency-plugin
将其拉入Spring Boot模块:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unzip-webapp-public</id>
<phase>process-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.mycompany.myproject</groupId>
<artifactId>frontend-public</artifactId>
<version>${project.parent.version}</version>
<classifier>distribution</classifier>
<type>zip</type>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/classes/static/public</outputDirectory>
</configuration>
</execution>
解压webapp-admin 流程资源 打开包装 com.mycompany.myproject 前端管理员 $ {project.parent.version} 分配 压缩 $ {project.build.directory} / classes / static / admin
这会将React应用程序解压缩到/static/public
和/static/admin
。结果,Spring Boot将在应用程序中的/public
和/admin
处为它们提供服务。