百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

从零到一:独立运行若依框架系统并进行本地二次开发

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跟大家讲了三期太阳星座,也许有很多不热心的小伙伴并不知道是什么东西,今天就小科普一番~在出生的那一天,太阳所落的那个星座,就是每个人的太阳星座,而这恰好就是大家的性格中心,是权势驱力、人格的...

取消回复欢迎 发表评论: