从零到一:独立运行若依框架系统并进行本地二次开发
ccwgpt 2025-07-27 19:15 2 浏览 0 评论
#### 一、环境准备
1. **基础环境**:
- JDK 1.8+(推荐 JDK 17)
- Maven 3.6+
- MySQL 5.7+(推荐 8.0)
- Redis 5.0+
- Node.js 16+(前端依赖)
- IDE:IntelliJ IDEA(后端)、VSCode(前端)
2. **开发工具**:
```bash
# 验证环境
java -version
mvn -v
mysql --version
redis-server --version
node -v
```
#### 二、项目获取与初始化
1. **克隆代码**:
```bash
git clone https://gitee.com/y_project/RuoYi-Vue.git
cd RuoYi-Vue
```
2. **数据库初始化**:
- 创建数据库 `ry-vue`
- 执行 SQL 文件:
- `/sql/ry_2023xxxx.sql`(主业务表)
- `/sql/quartz.sql`(定时任务表)
- 修改后端配置:`
ruoyi-admin/src/main/resources/application-druid.yml`
```yaml
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true
username: root
password: 你的密码
```
3. **Redis配置**:
```yaml
# ruoyi-admin/src/main/resources/application.yml
redis:
host: localhost
port: 6379
password:
database: 0
```
#### 三、启动项目
1. **后端启动**:
```bash
# 在项目根目录
mvn clean install
cd ruoyi-admin
mvn spring-boot:run
```
- 访问 `http://localhost:8080` 查看后台API文档
2. **前端启动**:
```bash
cd ruoyi-ui
npm install --registry=https://registry.npmmirror.com
npm run dev
```
- 访问 `http://localhost:80`
- 默认账号:`admin` 密码:`admin123`
#### 四、核心目录结构解析
```markdown
├── ruoyi-admin # 后台核心模块
│ ├── src/main
│ │ ├── java/com/ruoyi
│ │ │ ├── common # 通用组件
│ │ │ ├── system # 系统模块(核心)
│ │ │ └── project # 业务模块(二次开发区域)
│ │ └── resources
│ │ ├── mapper # MyBatis XML
│ │ └── static # 静态资源
│
├── ruoyi-ui # 前端Vue项目
│ ├── src
│ │ ├── api # 接口定义
│ │ ├── views # 页面组件(二次开发重点)
│ │ └── store # 状态管理
│
├── sql # 数据库脚本
└── ruoyi-generator # 代码生成器模块
```
#### 五、二次开发实战(示例:新增公告模块)
1. **数据库操作**:
```sql
CREATE TABLE sys_notice (
notice_id BIGINT AUTO_INCREMENT COMMENT '公告ID',
notice_title VARCHAR(100) NOT NULL COMMENT '公告标题',
notice_content TEXT NOT NULL COMMENT '公告内容',
status CHAR(1) DEFAULT '0' COMMENT '状态(0正常 1关闭)',
PRIMARY KEY (notice_id)
) COMMENT = '公告表';
```
2. **代码生成器**:
- 访问 `系统工具 → 代码生成`
- 导入 `sys_notice` 表
- 生成代码(ZIP包),解压到对应模块:
- Java 文件 → `ruoyi-admin/src/main/java`
- XML 文件 → `
ruoyi-admin/src/main/resources/mapper`
- Vue 文件 → `
ruoyi-ui/src/views/system/notice`
3. **后端开发**:
- 业务层扩展:`NoticeServiceImpl.java`
```java
@Service
public class NoticeServiceImpl implements INoticeService {
// 自定义公告状态切换方法
public int toggleNoticeStatus(Long noticeId) {
SysNotice notice = noticeMapper.selectNoticeById(noticeId);
notice.setStatus("1".equals(notice.getStatus()) ? "0" : "1");
return noticeMapper.updateNotice(notice);
}
}
```
4. **前端开发**:
- 在 `notice.vue` 中添加状态切换按钮:
```vue
<el-button @click="handleToggleStatus(scope.row)">
{{ scope.row.status === '0' ? '禁用' : '启用' }}
</el-button>
```
- API 对接:
```javascript
// src/api/system/notice.js
export function toggleNoticeStatus(noticeId) {
return request({
url: '/system/notice/toggleStatus/' + noticeId,
method: 'post'
})
}
```
#### 六、权限配置
1. **菜单管理**:
- `系统管理 → 菜单管理 → 新增`
- 路由地址:`/system/notice`
- 权限标识:`system:notice:list`
2. **角色授权**:
- `系统管理 → 角色管理 → 修改权限`
- 勾选新添加的公告菜单权限
#### 七、定制化开发技巧
1. **修改系统主题**:
- 前端路径:`
ruoyi-ui/src/styles/variables.scss`
```scss
$--color-primary: #FF6A00; // 主色调改为橙色
$--sidebar-bg-color: #304156; // 侧边栏背景
```
2. **自定义登录页**:
- 修改 `
ruoyi-ui/src/views/login.vue`
- 添加背景图:
```vue
<div class="login-bg" :style="{backgroundImage: 'url(' + require('@/assets/login-bg.jpg') + ')'}"></div>
```
3. **接口拦截扩展**:
```java
// ruoyi-framework/src/main/java/com/ruoyi/framework/web/controller/BaseController.java
protected void startPage() {
// 自定义分页参数接收逻辑
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
PageHelper.startPage(pageNum, pageSize);
}
```
#### 八、部署上线
1. **后端打包**:
```bash
mvn clean package -DskipTests
# 生成 target/ruoyi-admin.jar
```
2. **前端打包**:
```bash
cd ruoyi-ui
npm run build:prod
# 生成 dist 文件夹
```
3. **生产启动**:
```bash
nohup java -jar ruoyi-admin.jar > app.log 2>&1 &
# 前端使用Nginx部署:
location / {
root /home/ruoyi/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
```
#### 九、开发建议
1. **安全规范**:
- 密码加密:`BCryptPasswordEncoder`
- XSS过滤:`@Xss` 注解
- 权限校验:`@PreAuthorize(hasPermi = "system:user:list")`
2. **性能优化**:
- 启用二级缓存:`redis: true`
- 分页拦截器:`PageHelper.startPage()`
- 异步日志:`@Async`
3. **扩展机制**:
- 自定义注解:`@DataScope` 数据权限
- 监听器:`ApplicationListener` 系统启动任务
- 自定义Starter:封装通用模块
> 完整文档参考:[若依官方文档](https://doc.ruoyi.vip/)
> 常见问题解决方案:
> 1. 端口冲突:修改 `application.yml` 的 `server.port`
> 2. 跨域问题:配置 `ruoyi-gateway` 的 CorsFilter
> 3. 页面缓存:清理浏览器缓存或使用 `Ctrl+F5` 强制刷新
相关推荐
- Spring框架基础知识-第四节内容(Spring基础配置)
-
Spring基础配置Spring框架本身有四大原则:(1)使用POJO进行轻量级和最小侵入式开发。(2)通过依赖注入和基于接口编程实现松耦合。(3)通过AOP和默认习惯进行声明式编程。(4)使...
- SpringBoot项目开发实战销售管理系统——项目框架搭建!
-
项目框架搭建在完成项目的分析和数据库设计后,一般由架构师完成项目框架的搭建,包括项目依赖的添加、项目的配置和项目日志的配置,完成后再开始业务代码的编写。技术栈的搭建新建一个SpringBoot项目,...
- 从零到一:独立运行若依框架系统并进行本地二次开发
-
####一、环境准备1.**基础环境**:-JDK1.8+(推荐JDK17)-Maven3.6+-MySQL5.7+(推荐8.0)-Redis5.0+-Node.js16...
- 单片机时间片轮询程序架构(单片机如何实现精准的时间周期)
-
时间片轮询法有很多时候都是与操作系统一起被提到,也就是说很多时候是操作系统中使用了这一方法:STM32单片机开发中的RTOS。下文将参考别人的代码,演示建立的一个时间片轮询架构程序的...
- Netty主要组件和服务器启动源码分析
-
1.Netty服务端启动代码publicclassNettyServer{publicstaticvoidmain(String[]args)throwsInterrup...
- 前端定时任务的神库!快把它加到你的项目中去!
-
我们常会遇到定时刷新数据、轮询接口、发送提醒等场景,我们常会遇到定时刷新数据、轮询接口、发送提醒等场景。为什么选择cron库?定时任务开发痛点原生setInterval的时间误差累积难以实现复杂的...
- 如何正确实现一个后台(定时)任务(后台定时任务怎么实现)
-
相信大家都知道如何在.NET中执行后台(定时)任务。首先我们会选择实现IHostedService接口或者继承BackgroundService来实现后台任务。然后注册到容器内,然后注册到容...
- 秒杀传统的Linux Crontab,这款开源的定时任务管理系统绝了!
-
Gocron是一款开源的定时任务管理系统,基于Go语言开发,旨在替代传统的LinuxCrontab。它通过Web界面提供直观的任务管理功能,支持精确到秒的Crontab时间表达式,并具备任务重试、超...
- Python 定时任务:schedule 自动执行脚本太方便。
-
2025年了,还在为Python定时任务头疼?轻量级需求搞什么Celery,schedule三行代码就搞定。这库把定时任务简化到像说人话,但新手直接抄文档容易踩坑。文档只会告诉你怎么设置每10分钟执行...
- SpringBoot扩展——定时任务!(基于springboot的校园宿舍管理系统的设计与实现)
-
定时任务项目开发中会涉及很多需要定时执行的代码,如每日凌晨对前一日的数据进行汇总,或者系统缓存的清理、对每日的数据进行分析和总结等需求,这些都是定时任务。单体系统和分布式系统的分布式任务有很大的区别,...
- 适合普通开发者和产品经理的PHP应用模板开发AI的SaaS应用框架
-
简单到傻!Liang_SaaS适合普通开发者和产品经理的PHP应用模板开发AI的SaaS应用框架,利用Php开发AI的SaaS应用框架,是一个强大的内容管理仪表板模板,基于Bootstrap和...
- 非常实用的15款开源PHP类库(php开源管理系统)
-
PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程。这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互。此外,开发者使用这些类库还可以简...
- 蜂神榜苹果商店也凑热闹:“520”我爱玩家!
-
各位看官,今天被朋友圈各类“520”刷屏呢?有没有给你亲爱的家人一份“520”模式的红包呢?苹果商店也给了玩家一个“520”模式的惊喜---再一次提供了多款“1元”价格的游戏!并且此次降价的游戏品质都...
- 变成气球的猫咪《气球》十一正式推出
-
墨西哥游戏公司NoodlecakeGames曾开发过《致命框架》、《阿尔托冒险》等优秀佳作,而它旗下的最新游戏《气球》(TheBalloons)在十一的时候就要和大家见面了。游戏中,玩家要操控娃娃...
- 星座超游爱:狮子遇挑战,处女手抓牢~
-
teemo跟大家讲了三期太阳星座,也许有很多不热心的小伙伴并不知道是什么东西,今天就小科普一番~在出生的那一天,太阳所落的那个星座,就是每个人的太阳星座,而这恰好就是大家的性格中心,是权势驱力、人格的...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Spring框架基础知识-第四节内容(Spring基础配置)
- SpringBoot项目开发实战销售管理系统——项目框架搭建!
- 从零到一:独立运行若依框架系统并进行本地二次开发
- 单片机时间片轮询程序架构(单片机如何实现精准的时间周期)
- Netty主要组件和服务器启动源码分析
- 前端定时任务的神库!快把它加到你的项目中去!
- 如何正确实现一个后台(定时)任务(后台定时任务怎么实现)
- 秒杀传统的Linux Crontab,这款开源的定时任务管理系统绝了!
- Python 定时任务:schedule 自动执行脚本太方便。
- SpringBoot扩展——定时任务!(基于springboot的校园宿舍管理系统的设计与实现)
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)