尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

若依Ruoyi-Vue快速上手:10分钟本地运行Spring Boot+Vue权限管理系统

若依Ruoyi-Vue快速上手:10分钟本地运行Spring Boot+Vue权限管理系统 1. 项目初探若依Ruoyi-Vue是什么为什么值得你花10分钟如果你是一名Java后端开发者或者正带领一个小团队从零开始一个管理后台项目那么“若依”这个名字你大概率听过。它不是一个新潮的前端框架而是一个基于Spring Boot和Vue.js的开源权限管理系统用我们行内的话说它是一个“脚手架”或者说“种子项目”。简单讲它把企业级后台管理系统里那些繁琐但又必须有的东西——比如用户管理、角色权限、菜单管理、部门管理——全都给你做好了并且用了一套经过大量项目验证的、相对优雅的架构整合在一起。你可能会问市面上类似的开源后台模板不少为什么若依特别值得提我接触过不少这类项目若依给我的最深印象是它的“完整性”和“工程化”。它不仅仅是一堆功能的堆砌而是提供了一整套从前端到后端、从开发到部署的最佳实践范例。它的代码结构清晰文档虽然有些地方可以更详细相对齐全社区活跃遇到问题比较容易找到解决方案。对于新手而言它能让你跳过从零搭建权限系统这个最痛苦的阶段直接基于一个稳健的底盘开始业务开发对于有经验的开发者它的设计思路和实现细节也有很多可借鉴之处。所以这“10分钟快速上手”的目标不是让你精通若依的每一个源码细节而是让你在最短时间内完成从“下载代码”到“本地成功运行并登录系统”的全过程。你会看到一个完整的管理后台界面能操作内置的功能理解它的基本数据流。这十分钟的体验足以让你判断这个技术选型是否适合你的下一个项目。下面我就带你一步步走通这个流程并分享一些初次接触时容易踩的坑和技巧。2. 环境准备与项目获取避开第一个坑万事开头难对于若依这样的全栈项目环境配置是第一个门槛。很多新手在这里耗费的时间远超十分钟问题往往出在环境版本不匹配上。2.1 核心环境清单与版本选择若依是一个前后端分离项目这意味着你需要分别准备后端和前端的环境。以下是经过大量项目验证的、与若依最新稳定版兼容的推荐环境清单后端 (Java) 环境JDK:版本1.8。这是最稳妥、兼容性最好的选择。虽然若依也支持更高版本如JDK 11, 17但为了确保所有依赖和插件正常工作初次上手强烈建议使用 JDK 1.8。你可以在命令行输入java -version来确认。Maven:版本3.6。用于管理Java项目的依赖和构建。安装后通过mvn -v检查。MySQL:版本5.7或8.0。若依的SQL脚本对这两个版本都有很好的支持。我个人更推荐MySQL 8.0性能和新特性更好但需要注意若依默认的数据库驱动配置可能针对5.7使用8.0时需要稍作调整后面会讲。前端 (Vue) 环境Node.js:版本14.x或16.x。这是运行Vue项目构建工具的基础。不推荐使用太新的版本如18.x、20.x可能会遇到node-sass等依赖编译问题。安装后通过node -v和npm -v检查。注意版本号是最大的“坑”。我见过太多因为JDK用了11或17Node用了最新版而导致各种诡异编译错误的案例。对于学习和新项目尝试保守的版本选择能为你节省大量排错时间。2.2 获取项目代码的两种可靠途径若依的代码托管在Gitee和Github上。考虑到国内网络访问的稳定性Gitee是首选。直接下载压缩包最快访问若依的Gitee主页https://gitee.com/y_project/RuoYi-Vue。找到页面上的“克隆/下载”按钮选择“下载ZIP”。将ZIP包解压到你本地的工作目录例如D:\Projects\RuoYi-Vue。优点无需安装Git速度最快。缺点后续无法通过git命令更新。使用Git克隆推荐确保你已安装Git。在命令行中进入你的工作目录执行git clone https://gitee.com/y_project/RuoYi-Vue.git克隆完成后进入RuoYi-Vue文件夹。优点便于后续同步官方更新是标准的协作开发方式。解压或克隆后你会看到类似这样的目录结构RuoYi-Vue/ ├── ruoyi-admin/ # 后端Spring Boot主模块 ├── ruoyi-common/ # 后端通用工具模块 ├── ruoyi-framework/ # 后端核心框架模块 ├── ruoyi-system/ # 后端系统功能模块 ├── ruoyi-ui/ # 前端Vue项目目录 ├── sql/ # 数据库初始化脚本 └── pom.xml # 后端Maven总配置文件这个结构清晰地展示了前后端分离的形态ruoyi-ui是独立的前端项目其他以ruoyi-开头的都是后端模块。3. 后端启动配置数据库与运行Spring Boot后端是整个系统的引擎我们先把它启动起来。3.1 数据库初始化与关键配置修改首先打开你的MySQL数据库管理工具如Navicat、MySQL Workbench或命令行创建一个新的数据库名字可以叫ry-vue或你喜欢的任何名字字符集建议设为utf8mb4排序规则为utf8mb4_general_ci。接着找到项目根目录下的sql文件夹。里面通常会有两个SQL脚本quartz.sql: 用于定时任务功能的表结构如果不需要定时任务可暂不执行。ry_xxxx.sql: 主SQL脚本包含了系统核心表结构和初始数据如管理员账号。执行顺序先执行ry_xxxx.sql再执行quartz.sql。现在需要让后端Spring Boot应用知道如何连接你刚创建的数据库。配置文件位于RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml找到datasource配置部分关键修改如下# 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver # 如果使用MySQL 8.0必须是这个驱动 url: jdbc:mysql://localhost:3306/ry-vue?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: root # 你的数据库用户名 password: 123456 # 你的数据库密码关键点解析driverClassName: 如果你用的是MySQL 8.0这里必须是com.mysql.cj.jdbc.Driver。如果是MySQL 5.7可以是com.mysql.jdbc.Driver。用错驱动是连接失败的常见原因。url中的serverTimezoneGMT%2B8这里设置了服务器时区为东八区北京时间避免时间数据入库时出现时区错误。%2B是号的URL编码。useSSLtrue: 如果本地MySQL未配置SSL且出现连接警告可以将其改为false。3.2 启动后端服务与验证配置好后就可以启动后端了。这里推荐使用IDE如 IntelliJ IDEA 或 Eclipse来运行比命令行更直观。用IDE打开整个RuoYi-Vue项目文件夹注意是根目录因为它是Maven多模块项目。IDE会自动识别为Maven项目并加载依赖。等待右下角的进度条完成。找到主启动类ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java。右键点击这个类选择Run ‘RuoYiApplication.main()‘。如果一切顺利你将在控制台看到Spring Boot的启动日志最后会出现类似Started RuoYiApplication in 8.456 seconds (JVM running for 9.789)的信息并打印出访问端口默认是8080。验证后端是否启动成功打开浏览器访问http://localhost:8080。如果看到返回一个简单的页面或JSON数据可能是404页面因为默认请求到了后端但没有对应路由这其实是正常的说明后端服务已经运行。更准确的验证方式是访问其内置的Swagger API文档地址http://localhost:8080/swagger-ui.html。如果能打开一个API调试界面说明后端已完全就绪。实操心得第一次启动时Maven下载依赖可能会比较慢耐心等待。如果某个依赖下载失败可以尝试清理本地Maven仓库~/.m2/repository中对应的文件夹或者配置阿里云的Maven镜像源速度会快很多。4. 前端启动安装依赖与运行Vue项目后端服务在8080端口跑起来后我们再来启动前端。前端项目独立在ruoyi-ui目录中。4.1 安装Node依赖与解决网络问题打开命令行终端如CMD、PowerShell或终端进入前端项目目录cd [你的项目路径]/RuoYi-Vue/ruoyi-ui接下来安装项目依赖这是前端项目的标准步骤npm install # 或者使用淘宝镜像加速国内推荐 cnpm installnpm install会根据package.json文件下载所有必需的库到本地的node_modules文件夹。这里有一个高频“坑”问题执行npm install时卡住或报错特别是与node-sass、chromedriver相关的错误。原因这些依赖需要从国外源下载二进制包网络不稳定或Node.js版本过高都可能导致失败。解决方案换源使用cnpm淘宝镜像命令或者设置npm的registry为淘宝源npm config set registry https://registry.npmmirror.com清理缓存执行npm cache clean --force然后重试。版本锁定确保你的Node.js版本在推荐范围内14.x或16.x。终极方案如果node-sass一直安装失败可以尝试先单独安装它并指定镜像源npm install node-sass --sass_binary_sitehttps://npmmirror.com/mirrors/node-sass/4.2 启动前端开发服务器依赖安装成功后运行启动命令npm run dev这个命令会启动一个本地开发服务器并开始编译Vue项目。编译完成后控制台会输出类似如下信息App running at: - Local: http://localhost:80 - Network: http://192.168.1.xxx:80注意若依-Vue的前端默认运行在80端口而不是常见的8080。这是为了在生产环境部署时前端可以直接用域名访问无需加端口号。现在打开浏览器访问http://localhost。你应该能看到若依系统的登录界面了4.3 首次登录与系统概览在登录界面使用系统内置的默认账号登录用户名admin密码admin123登录成功后你将进入若依的主控制台。左侧是功能菜单栏包含了系统管理用户、角色、菜单、部门等、系统监控、系统工具等模块。中间是主工作区默认可能是一个数据概览的仪表盘。花两分钟快速浏览一下系统管理 - 用户管理可以看到当前用户列表可以在这里添加新用户。系统管理 - 角色管理定义了不同的权限集合比如“普通角色”、“管理员”。系统管理 - 菜单管理整个系统左侧导航栏的菜单都在这里配置可以新增、修改、隐藏菜单项。系统管理 - 部门管理树形结构的组织架构管理。至此你已经完成了“10分钟快速上手”的核心目标——让若依Ruoyi-Vue项目在你的本地环境中完整地运行起来了。你看到了一个功能完备的后台管理系统界面并且理解了它是前后端分离的架构。5. 核心功能初体验与数据流理解仅仅看到界面还不够我们需要理解一次简单的操作背后数据是如何在前端和后端之间流动的。我们以“查询用户列表”这个最简单的操作为例来拆解这个过程。5.1 从前端点击到后端接口当你在“用户管理”页面点击查询或者页面加载时自动触发查询前端Vue会发生以下事情API调用前端代码通常位于ruoyi-ui/src/api/system/user.js中会定义一个名为listUser的函数里面使用Axios库发起一个HTTP GET请求。请求地址请求的URL会指向后端的某个接口例如/system/user/list。请求拦截在请求发出前前端的请求拦截器在ruoyi-ui/src/utils/request.js中会自动为请求头Header加上Authorization字段其值是登录成功后后端返回的Token令牌。这是实现权限认证的关键。发送请求携带了Token和查询参数的请求被发送到http://localhost:80前端服务器但注意前端开发服务器配置了代理。关键机制代理Proxy在ruoyi-ui/vue.config.js配置文件中你会找到类似下面的配置devServer: { port: port, open: true, overlay: { warnings: false, errors: true }, proxy: { [process.env.VUE_APP_BASE_API]: { target: http://localhost:8080, // 后端地址 changeOrigin: true, pathRewrite: { [^ process.env.VUE_APP_BASE_API]: } } } }这个配置的意思是所有以/dev-apiVUE_APP_BASE_API的默认值开头的请求都会被前端开发服务器转发到http://localhost:8080我们后端Spring Boot的地址。这样前端运行在80端口后端运行在8080端口完美解决了开发时的跨域问题而前端代码中无需写死后端IP和端口。所以前端对/dev-api/system/user/list的请求实际被转发到了http://localhost:8080/system/user/list。5.2 后端处理与返回数据请求到达后端Spring Boot应用后权限拦截请求首先会经过Spring Security的过滤器链。过滤器会检查请求头中的Token是否有效、是否过期以及当前用户是否有权限访问/system/user/list这个接口路径。控制器处理通过权限校验后请求到达对应的Controller控制器。用户列表的Controller可能在ruoyi-system模块下的UserController中里面有一个方法映射了GetMapping(/list)。服务层与数据层Controller调用Service服务层Service再调用Mapper数据访问层基于MyBatis最终执行SQL语句SELECT * FROM sys_user WHERE ...从数据库查询数据。统一响应查询到的数据被封装成一个统一的结果对象如AjaxResult或TableDataInfo里面包含状态码、消息和真正的数据列表。返回JSON这个对象被Spring MVC转换为JSON格式通过HTTP响应返回给前端。5.3 前端渲染页面前端收到后端返回的JSON响应后响应拦截响应先经过前端的响应拦截器同样在request.js这里可以处理通用的错误比如Token过期状态码401会自动跳转到登录页。更新数据如果请求成功listUser函数返回数据。Vue组件页面会接收到这些数据并赋值给组件内部的一个响应式变量例如this.userList。视图更新由于Vue的响应式系统当userList数据发生变化时模板中绑定该数据的表格例如使用了Element UI的el-table会自动重新渲染用户就看到最新的列表数据了。这个过程就是典型的前后端分离协作模式。若依的代码清晰地展示了每一层的职责对于初学者理解这种架构非常有帮助。6. 代码结构导读找到你要改的地方对于一个新项目快速定位功能对应的代码位置是至关重要的。若依的代码结构遵循了经典的分层架构非常规整。6.1 后端代码结构解析打开后端模块如ruoyi-system你会看到类似下面的包结构com.ruoyi.system ├── controller # 控制器层接收HTTP请求调用Service ├── domain # 实体类层对应数据库表 ├── mapper # 数据访问层MyBatis的接口和XML映射文件 ├── service # 服务层业务逻辑核心 │ ├── impl # 服务层的实现类 └── vo # 视图对象用于前后端数据交互如果你想新增一个API接口在controller包下新建一个类添加RestController和RequestMapping注解。如果你想写业务逻辑在service包下创建接口并在impl包下写实现。如果你想操作数据库在mapper包下创建接口并在resources/mapper下编写同名的.xml文件写SQL。如果你想新增一张表先在domain包下创建实体类然后在mapper和service层进行相应开发。6.2 前端代码结构解析打开ruoyi-ui目录核心结构如下src ├── api # 所有与后端交互的接口函数定义按模块划分 ├── assets # 静态资源如图片、样式 ├── components # 全局可复用的Vue组件 ├── layout # 布局组件如侧边栏、顶部导航 ├── router # 路由配置定义页面路径和组件映射 ├── store # Vuex状态管理用于全局状态如用户信息 ├── utils # 工具函数库请求封装、权限判断等 └── views # 页面视图组件最主要的开发目录 ├── system # 系统管理模块的页面 └── ... # 其他业务模块如果你想新增一个页面在views下创建对应模块的文件夹和.vue文件然后在router中配置路由。如果你想调用后端接口在api下对应模块的.js文件中新增一个函数。如果你想复用某个UI组件在components下创建全局组件或在页面同级目录下创建局部组件。这种结构分离了关注点让开发、维护和团队协作变得清晰。7. 常见问题与排查技巧实录即使按照步骤操作第一次运行也难免遇到问题。这里我整理了几个最常见的“拦路虎”及其解决方法。7.1 后端启动失败类问题问题1APPLICATION FAILED TO START提示数据库连接失败。排查步骤检查配置文件确认application-druid.yml中的数据库地址、端口、库名、用户名、密码完全正确。检查MySQL服务确保MySQL服务已启动。可以在命令行尝试mysql -u root -p登录。检查驱动类确认driverClassName与你的MySQL版本匹配5.7和8.0的驱动不同。检查时区如果错误信息包含时区在数据库连接URL中显式加上serverTimezoneAsia/Shanghai。检查网络权限确认MySQL是否允许从本地localhost或你的IP连接。问题2端口8080被占用。解决方案在application.yml中修改server.port为其他端口如8081。或者找到占用8080端口的进程并关闭它。在命令行执行Windows:netstat -ano | findstr :8080找到PID然后taskkill /PID [PID] /FLinux/Mac:lsof -i:8080找到PID然后kill -9 [PID]问题3Maven依赖下载失败或构建错误。解决方案检查网络尝试使用阿里云Maven镜像源。修改Maven的settings.xml文件。在IDE中执行mvn clean install -DskipTests命令跳过测试进行构建。删除本地Maven仓库~/.m2/repository中对应失败的依赖目录重新构建。7.2 前端启动失败类问题问题1npm install卡住或报错特别是node-sass。解决方案如前所述使用淘宝镜像cnpm或设置npm registry。对于node-sass可以尝试指定镜像源安装或者检查Node.js版本是否过高。问题2npm run dev启动失败提示‘webpack-dev-server‘ 不是内部或外部命令。原因依赖没有安装成功node_modules不完整。解决删除ruoyi-ui目录下的node_modules文件夹和package-lock.json文件重新执行npm install。问题3前端能访问但登录后页面空白或接口请求404。排查步骤检查后端是否运行确认http://localhost:8080可以访问如Swagger页面。检查代理配置确认vue.config.js中的target指向了正确的后端地址和端口。检查浏览器控制台F12查看Network网络标签页看请求是否发出响应状态码是什么。如果是404说明前端请求的路径后端不存在如果是500是后端服务器错误查看后端控制台日志。7.3 登录与权限类问题问题使用默认账号admin/admin123登录失败。排查步骤确认数据库已初始化检查sys_user表中是否存在用户名为admin的记录。检查密码加密若依的密码是加密存储的。确保你执行了正确的SQL脚本。初始密码admin123经过加密后存储在数据库里直接输入明文是匹配不上的。如果你手动修改了数据库密码需要使用BCryptPasswordEncoder工具类生成加密后的密码再存入。查看后端日志登录时后端控制台会打印详细的认证日志根据错误信息排查。问题登录成功但菜单不显示或提示无权限。原因用户角色没有分配对应的菜单权限。解决用admin账号登录进入“系统管理 - 角色管理”为你使用的角色如“管理员”分配菜单权限。或者进入“系统管理 - 用户管理”直接为用户分配角色。8. 下一步从“运行”到“开发”成功运行项目只是第一步。接下来你可以尝试进行一些简单的定制开发来巩固理解增删改查CRUD实践在数据库新增一张简单的表如test_demo然后使用若依代码生成器系统工具 - 代码生成一键生成该表对应的前端页面和后端代码。这是若依最强大的功能之一能让你瞬间理解整个数据流的代码是如何组织的。修改前端页面尝试修改views/system/user/index.vue用户管理页面比如在表格里增加一列或者修改查询条件。观察修改后前端热重载的效果。新增一个API接口在后端ruoyi-system模块中仿照现有的UserController新建一个TestController写一个简单的GetMapping(/hello)返回字符串。然后在前端api目录下新建对应的JS文件调用这个接口并在一个页面中显示结果。通过这些微小的改动你会对若依项目的血肉有更深刻的认识。它提供的是一套规范和基础设施真正的业务功能需要你在其上搭建。这十分钟的快速上手就是为你打开这扇门让你看到门后一个成熟、可用的后台系统样板间。剩下的就是根据你的业务需求在这个样板间里设计和装修你自己的房间了。
返回列表