在实际开发和部署过程中,将前端静态资源整合到后端进行访问可以简化部署流程,并减少跨域问题。本文将详细介绍如何在 RuoYi
前后端分离框架中将前端静态资源整合到后端进行访问。
在开始本教程之前,确保已经在本地成功运行了 RuoYi
前后端分离项目。如果还未运行,可以参考之前的教程:手把手教你启动 RuoYi 前后端分离项目
。
ruoyi-ui
中的 .env.production
文件首先,需要修改前端的配置文件 .env.production
,选择合适的访问路径。以下提供两种配置方式:
VUE_APP_BASE_API = '/'
VUE_APP_BASE_API = '//localhost:8080'
ruoyi-ui
中的路由配置接下来,打开 router/index.js
文件,将路由的模式设置为 hash
模式。这可以避免路由路径问题导致的页面加载错误。
export default new Router({
mode: 'hash',
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes
});
build.bat
脚本进行打包在 bin
目录下找到 build.bat
文件,双击运行该脚本,它会自动执行打包操作并生成前端静态资源文件。
打开终端,导航到前端项目的根目录,执行以下命令来打包前端资源:
npm run build:prod
打包完成后,将在项目目录中生成一个 dist
目录,其中包含打包好的静态资源文件。
在后端 resources
目录下的 application.yml
文件中,添加 Thymeleaf 模板引擎的相关配置,以支持静态资源的解析。
spring:
thymeleaf:
mode: HTML
encoding: utf-8
cache: false
在 ruoyi-admin
模块的 pom.xml
文件中,添加 Thymeleaf 模板引擎的依赖。注意:不要将此依赖添加到项目的根目录下,否则可能会导致打包错误。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
在 ResourcesConfig.java
文件中的 addResourceHandlers
方法中,添加静态资源的映射路径:
/** 前端静态资源配置 */
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
在 SecurityConfig.java
文件中的 configure
方法中,添加允许访问的静态资源路径:
.antMatchers(
HttpMethod.GET,
"/*.html",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/profile/**",
"/static/**",
"/",
"/index"
).permitAll()
在后端新建一个 IndexController.java
控制器,用于处理首页访问请求:
package com.ruoyi.web.controller.system;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController
{
// 系统首页
@GetMapping(value = { "/", "/index", "/login" })
public String index()
{
return "index";
}
}
将打包生成的 dist
目录中的静态资源整合到后端项目中:
resources
目录下新建 templates
目录,并将 dist
目录中的 index.html
文件复制到该目录中。dist
目录中的 static
文件夹复制到 resources
目录下。最终目录结构如下图所示:
现在,您可以启动项目了。运行 RuoYiApplication.java
主类,项目将会启动。然后在浏览器中访问:http://localhost:8080/,您应该能够看到 RuoYi 项目的登录页面。
测试登录功能,确保整合后的项目可以正常工作。
为了方便发布项目,您可以将项目打包为 JAR 文件。这里演示了两种打包方法:
在 IDEA 中,选择 package
命令来打包项目。可以在执行该命令时选择需要打包的模块。
在项目的 bin
目录中找到 package.bat
文件,双击执行该脚本,它会自动进行打包。
打包完成后,您可以在 ruoyi-admin
模块的 target
目录中找到打包好的文件。
至此,您已成功将前端静态资源整合到后端项目中,并通过后端进行访问。
powered by kaifamiao