尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

若依(RuoYi)前后端分离版本地环境配置与部署全攻略

若依(RuoYi)前后端分离版本地环境配置与部署全攻略 1. 项目概述为什么若依RuoYi值得你花时间配置如果你是一名Java开发者或者正在负责一个中小型管理后台的快速搭建那么“若依RuoYi”这个名字你大概率不会陌生。它不是一个新潮的玩具而是一个在开源社区里经过多年实战检验、拥有庞大用户基数的后台管理系统解决方案。简单来说若依帮你把用户管理、角色权限、菜单配置、日志监控这些后台系统的“基础设施”都预制好了你只需要专注于自己的核心业务逻辑开发。这听起来很美好对吧但很多新手开发者拿到若依源码后面对那一堆配置文件、数据库脚本和前后端分离的架构常常会卡在第一步——环境配置上。我见过不少团队因为初始配置没搞明白导致后续开发、部署问题不断白白浪费了大量时间。所以这篇教程的目的非常直接带你从零开始手把手、无死角地完成一个标准若依前后端分离版RuoYi-Vue的本地开发环境配置。我不会只给你一串命令而是会解释清楚每一步在做什么、为什么要这么做以及如果出错了该怎么排查。这不仅仅是“安装教程”更是一份“避坑指南”。无论你是刚接触若依的新手还是想系统梳理配置流程的老手这篇文章都能让你对若依的骨架有一个清晰的认识为后续的深度定制和业务开发打下坚实的基础。2. 环境准备搭建稳固的开发地基配置若依的第一步不是急着去下载代码而是确保你的本地开发环境“五脏俱全”。一个稳定、版本匹配的环境能避免90%的诡异问题。若依这里以最流行的前后端分离版RuoYi-Vue为例是一个典型的Spring Boot Vue.js项目因此我们需要准备后端和前端两套环境。2.1 后端环境Java与数据库的基石后端是若依的核心它依赖于Java运行环境、项目管理工具和数据库。1. JDK 安装与配置若依官方推荐使用 JDK 1.8 或更高版本。我强烈建议你使用 JDK 8 或 JDK 11LTS长期支持版它们在稳定性和社区支持上最好。安装从Oracle官网或AdoptOpenJDK等开源站点下载对应你操作系统的安装包。安装过程很简单一路“下一步”即可。关键在配置。配置环境变量这是新手最容易出错的地方。JAVA_HOME这个变量指向你的JDK安装目录例如C:\Program Files\Java\jdk1.8.0_301。很多工具如Maven、IDEA都依赖这个变量来找到Java。Path在Path变量中新增一项%JAVA_HOME%\bin。这让你能在命令行任何位置直接使用java、javac等命令。验证打开命令行CMD或PowerShell输入java -version和javac -version。如果正确显示版本号说明配置成功。注意如果你的电脑上安装了多个JDK版本JAVA_HOME变量的值决定了当前生效的是哪个。可以通过命令行echo %JAVA_HOME%Windows或echo $JAVA_HOMEMac/Linux来检查。2. Maven 安装与配置Maven是Java项目的依赖管理和构建工具。若依通过pom.xml文件管理所有第三方库Jar包。安装从Apache Maven官网下载二进制压缩包解压到任意目录例如D:\apache-maven-3.8.6。配置环境变量MAVEN_HOME指向你的Maven解压目录。Path新增%MAVEN_HOME%\bin。配置本地仓库和镜像关键优化步骤Maven默认从中央仓库下载依赖在国内速度可能很慢。我们需要修改Maven安装目录下conf/settings.xml文件。本地仓库路径找到localRepository标签可以设置一个自定义路径如localRepositoryD:\maven-repository/localRepository避免所有依赖都堆在C盘。镜像源在mirrors标签内添加阿里云镜像大幅提升下载速度。mirror idaliyunmaven/id mirrorOf*/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror验证命令行输入mvn -v显示版本信息即成功。3. MySQL 安装与初始化若依使用MySQL作为默认数据库。你需要安装MySQL5.7或8.0版本均可并创建一个空的数据库。安装可以从MySQL官网下载社区版安装包。安装过程中会提示你设置root用户的密码务必牢记。创建数据库安装完成后使用命令行或MySQL客户端如Navicat、MySQL Workbench连接数据库然后执行以下SQL语句CREATE DATABASE IF NOT EXISTS ry-vue DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;这里创建了一个名为ry-vue的数据库并设置了utf8mb4字符集以支持存储Emoji等四字节字符。注意记住你设置的数据库连接信息主机通常是localhost、端口默认3306、数据库名ry-vue、用户名如root和密码。稍后我们需要在若依的配置文件中填写这些信息。2.2 前端环境Node.js与包管理器前端部分基于Vue.js需要Node.js运行环境。1. Node.js 安装下载从Node.js官网下载LTS长期支持版本安装包。安装过程同样简单。验证安装完成后命令行输入node -v和npm -v应分别显示Node.js和npmNode包管理器的版本号。关于版本若依-Vue对Node.js版本有一定要求太老的版本可能无法构建。使用官网推荐的LTS版本是最稳妥的选择。2. 配置npm镜像源npm默认源在国外下载速度慢且容易失败。我们需要将其替换为国内镜像。命令行配置在命令行中执行以下命令将npm registry设置为淘宝镜像。npm config set registry https://registry.npmmirror.com/验证执行npm config get registry检查是否已切换成功。可选使用yarn或pnpm如果你觉得npm速度仍不理想可以安装yarn或pnpm作为替代的包管理器它们通常有更好的性能和缓存机制。安装后同样需要配置国内镜像源。3. 安装Vue CLI可选但推荐Vue CLI是一个官方脚手架工具虽然若依前端已经是一个完整的项目不需要用它来初始化但安装它有助于你理解Vue的生态并且其内置的vue-ui图形化界面在管理项目依赖时非常方便。安装在命令行中执行npm install -g vue/cli。验证执行vue --version。至此你的开发环境已经准备就绪。这就像盖房子前打好了地基、备齐了砖瓦水泥。接下来我们就要开始“施工”了。3. 项目获取与基础配置有了环境下一步就是把若依的“蓝图”拿到手并根据我们的本地环境进行初步调整。3.1 获取项目源码官方源码托管在Gitee和GitHub上。对于国内用户从Gitee克隆速度更快。克隆项目打开命令行切换到你希望存放项目的目录如D:\projects执行克隆命令git clone https://gitee.com/y_project/RuoYi-Vue.git这条命令会将整个RuoYi-Vue项目下载到当前目录下的RuoYi-Vue文件夹中。关于分支默认克隆的是master分支这是稳定版。如果你需要微服务版RuoYi-Cloud需要克隆对应的仓库。本篇我们聚焦于单体应用版RuoYi-Vue。3.2 后端配置详解连接数据库与调整参数后端配置的核心是application.yml文件它位于ruoyi-admin模块的src/main/resources目录下。这个文件决定了Spring Boot应用的行为。1. 数据库连接配置找到spring.datasource配置节修改为你本地MySQL的信息。spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ry-vue?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: root password: 你的数据库密码driver-class-nameMySQL 8.0 驱动是com.mysql.cj.jdbc.Driver如果是5.x版本可能是com.mysql.jdbc.Driver。若依默认配置通常已适配。urllocalhost:3306是数据库地址和端口ry-vue是数据库名后面的参数是连接选项如编码、时区处理、SSL等。特别注意时区serverTimezoneGMT%2B8表示东八区北京时间这对于避免时间字段存储错误至关重要。username/password填写你安装MySQL时设置的用户名和密码。2. Redis配置可选但推荐若依使用Redis来管理会话Session、缓存数据如验证码、字典数据。如果你不配置RedisSpring Boot会使用内存存储Session这在单机开发时没问题但重启应用会导致登录状态丢失。配置Redis能获得更好的体验。安装Redis从Redis官网下载Windows版本或使用Docker快速启动一个Redis实例。Linux/Mac下安装也很方便。修改配置在application.yml中找到Redis配置部分。redis: host: localhost port: 6379 password: # 如果你设置了Redis密码就填默认空 database: 0 # 使用的数据库编号确保这里的host和port与你运行的Redis服务一致。3. 其他关键配置服务器端口server.port默认为8080。如果8080端口被占用可以修改为其他端口如8081。日志级别开发阶段可以将相关包的日志级别调整为DEBUG方便排查问题但上线前记得改回INFO或WARN。3.3 前端配置解析对接后端API前端配置的核心是设置API请求的基地址告诉Vue应用去哪里找后端服务。进入RuoYi-Vue项目根目录下的ruoyi-ui文件夹这是前端项目所在。找到配置文件配置文件通常位于ruoyi-ui/.env.development开发环境和ruoyi-ui/.env.production生产环境。我们修改开发环境的即可。修改API地址打开.env.development文件你会看到类似下面的内容# 开发环境配置 ENV development # 开发环境API请求地址 VUE_APP_BASE_API /dev-api这里的VUE_APP_BASE_API是一个会在Vue代码中全局访问的变量。它的值/dev-api是一个代理路径。理解代理在开发时前端运行在独立的服务器如localhost:80后端运行在另一个端口如localhost:8080。由于浏览器同源策略的限制直接跨端口请求API会有问题。因此Vue CLI或Webpack提供了代理功能所有以前缀/dev-api开头的请求都会被转发到我们指定的后端地址。配置代理代理规则在ruoyi-ui/vue.config.js文件中定义。找到devServer.proxy配置devServer: { host: 0.0.0.0, port: port, open: true, proxy: { [process.env.VUE_APP_BASE_API]: { target: http://localhost:8080, // 这里指向你的后端服务地址和端口 changeOrigin: true, pathRewrite: { [^ process.env.VUE_APP_BASE_API]: } } } }target: 这是最重要的配置必须确保它指向你后端Spring Boot应用启动的地址和端口默认http://localhost:8080。如果后端端口改了这里也要同步修改。pathRewrite: 这个配置会把请求路径中的/dev-api前缀重写为空字符串这样转发到后端的请求就是干净的路径例如前端请求/dev-api/login实际后端收到的是/login。实操心得前后端联调时90%的“404”或“连接失败”问题都是因为这个代理配置的target地址不对或者后端服务根本没启动。养成习惯启动项目前先双击检查这两个配置文件的端口和地址是否匹配。4. 数据库初始化与项目启动配置完成后我们需要用若依的“设计图”SQL脚本来构建数据库表然后让整个项目运行起来。4.1 执行SQL脚本创建表结构在克隆下来的项目根目录RuoYi-Vue下找到sql文件夹。里面通常会有多个SQL文件。主要脚本quartz.sql: 定时任务相关表如果不用定时任务功能可不执行。ry_202xxxxx.sql: 这是核心脚本文件名带日期包含了系统运行必需的所有表结构用户、角色、菜单、部门等以及初始数据默认管理员账号admin/123456。执行方法使用客户端工具打开Navicat或MySQL Workbench连接到你的ry-vue数据库然后直接打开这个SQL文件并执行。这是最直观的方式。命令行执行在MySQL安装目录的bin文件夹下打开命令行或使用已配置环境变量的命令行mysql -u root -p ry-vue D:\projects\RuoYi-Vue\sql\ry_202xxxxx.sql输入密码后执行。验证执行成功后在数据库客户端中刷新应该能看到多出了几十张以sys_,gen_,qrtz_等为前缀的表。4.2 后端启动与验证后端是一个标准的Spring Boot项目有多种启动方式。使用IDE启动推荐用IntelliJ IDEA或Eclipse打开整个RuoYi-Vue项目。IDE会自动识别为Maven项目。找到主启动类RuoYiApplication通常位于ruoyi-admin/src/main/java/com/ruoyi包下。直接右键点击这个类选择Run ‘RuoYiApplication‘。IDE会自动编译并启动应用。命令行启动在项目根目录下打开命令行执行Maven命令mvn clean package -Dmaven.test.skiptrue # 跳过测试打包项目 cd ruoyi-admin/target # 进入打包输出目录 java -jar ruoyi-admin.jar # 运行生成的jar包启动验证看到控制台输出包含“Started RuoYiApplication in X.XXX seconds”的字样并且没有大量ERROR日志说明启动成功。此时你可以在浏览器访问http://localhost:8080如果你改了端口则访问对应的端口。正常情况下你会看到一个简单的提示页或者直接跳转到/login页面如果前端尚未启动可能显示Whitelabel Error Page这是正常的说明后端服务在运行。4.3 前端启动与登录前端需要独立启动一个开发服务器。安装依赖在命令行中进入前端目录ruoyi-ui执行npm install这个过程会根据package.json文件下载所有依赖包到node_modules文件夹。网络状况好的话几分钟就能完成如果卡住请检查npm镜像源是否配置正确。启动开发服务器依赖安装完成后执行npm run dev这个命令会启动Vue的开发服务器并自动打开浏览器。如果没自动打开命令行会输出访问地址通常是http://localhost:80。登录系统浏览器打开前端地址后你会看到若依的登录界面。使用SQL脚本中初始化的默认账号用户名admin密码123456进行登录。验证前后端联通登录成功后你应该能看到完整的管理后台界面左侧有菜单栏。点击任意菜单如“系统监控”-“在线用户”如果能够正常加载数据说明前后端通信完全正常整个若依系统已经成功在你的本地跑起来了5. 核心配置项深度解析与定制系统跑起来只是第一步。若依的强大之处在于其高度的可配置性。理解这些配置你才能随心所欲地定制它。5.1 应用配置application.yml进阶除了基础的数据库和Redisapplication.yml里还有很多宝藏配置。1. 文件上传路径配置若依内置了文件上传功能。默认配置可能将文件上传到系统临时目录重启后丢失。你需要将其改为一个固定路径。# 文件上传配置 file: path: /home/ruoyi/uploadPath # Linux示例 # path: D:/ruoyi/uploadPath # Windows示例同时你需要确保这个路径在服务器上真实存在并且应用有读写权限。这个路径也用于存储用户头像、导入导出的Excel文件等。2. 日志配置若依使用Logback记录日志。默认配置可能将日志输出到控制台和文件。你可以调整日志级别、文件滚动策略和存储路径。logging: level: com.ruoyi: debug # 将若依自身包的日志级别调高方便调试 file: name: logs/ruoyi-admin.log # 日志文件路径 logback: rollingpolicy: max-file-size: 10MB # 单个日志文件最大大小 max-history: 30 # 保留的日志文件天数合理的日志配置是线上问题排查的生命线。3. 跨域配置CORS在前后端分离部署时即前端和后端不在同一个域名/端口下浏览器会因同源策略阻止请求。虽然开发时我们用了代理但生产环境需要后端配置CORS。 在application.yml中若依通常通过ruoyi.cors或自定义配置项来管理。确保生产环境下allowed-origins配置正确指向你的前端域名。ruoyi: cors: allowed-origins: “http://your-frontend-domain.com“ # 生产环境前端地址5.2 前端工程配置vue.config.js定制vue.config.js是Vue CLI项目的核心配置文件若依前端基于此做了大量定制。1. 打包输出配置publicPath这个配置决定了打包后静态资源JS、CSS、图片的引用路径。如果你打算将前端部署在非根路径下例如http://yourdomain.com/admin/就需要修改它。module.exports { publicPath: process.env.NODE_ENV production ? /admin/ : /, // 生产环境部署在/admin子路径下 // ... 其他配置 }输出目录outputDir可以指定打包生成的文件存放的目录默认是dist。2. 开发服务器配置除了代理你还可以配置host:‘0.0.0.0‘允许通过本地IP访问方便手机等设备测试。port: 开发服务器的端口默认80如果被占用可以修改。open: 设为true会在启动时自动打开浏览器。3. 插件与链式配置若依集成了很多插件比如svg-sprite-loader用于图标、compression-webpack-pluginGzip压缩。在vue.config.js中可以看到对这些插件的配置。除非有特殊需求一般不需要修改但了解它们的存在有助于你未来进行性能优化或功能扩展。5.3 权限与安全配置初探若依的权限控制是其核心功能之一主要基于Spring Security或Shiro取决于版本和自研的权限注解。1. 权限注解在后端Controller的方法上你会看到如PreAuthorize(“ss.hasPermi(‘system:user:list’)”)这样的注解。这表示调用此接口需要拥有system:user:list这个权限标识符。这个标识符与数据库sys_menu表中的perms字段对应。你可以在系统管理的“菜单管理”中为菜单配置对应的权限标识符。2. 安全框架配置配置类通常位于com.ruoyi.framework.config包下如SecurityConfig。在这里你可以配置哪些路径可以匿名访问如登录接口、验证码接口。配置密码加密方式。配置会话管理策略结合Redis实现分布式会话。自定义登录成功/失败的处理逻辑。3. 数据权限这是若依的高级特性。通过DataScope注解可以实现基于用户部门的数据行级过滤。例如部门经理只能看到本部门的数据。这部分的配置相对复杂涉及到自定义注解、AOP切面和SQL解析在初期可以暂不深入但需要知道它的存在和基本原理。6. 部署上线配置要点本地开发完成后最终需要将项目部署到服务器。部署配置与开发配置有显著区别。6.1 后端部署配置1. 打包为可执行JAR使用Maven命令进行打包并跳过测试以加快速度mvn clean package -Dmaven.test.skiptrue -P prod这里的-P prod表示激活prod这个Maven profile。在pom.xml或application-prod.yml中你可以为生产环境定义特定的配置比如连接生产数据库、关闭调试信息等。2. 调整生产环境配置文件在src/main/resources下创建或修改application-prod.yml。这个文件的配置会覆盖application.yml中的默认值。数据库将连接信息改为生产服务器的数据库地址、用户名和密码。Redis同样改为生产环境的Redis地址。日志调整日志输出路径为服务器上的固定目录如/app/logs。关闭Swagger生产环境一定要关闭API文档工具Swagger避免暴露接口信息。springfox: documentation: enabled: false3. 启动脚本在服务器上推荐使用脚本或系统服务如systemd来管理Spring Boot应用实现优雅启停和日志管理。一个简单的启动脚本start.sh可能如下#!/bin/bash APP_NAMEruoyi-admin.jar # 使用生产环境配置文件启动 nohup java -Xms512m -Xmx1024m -jar $APP_NAME --spring.profiles.activeprod app.log 21 echo $! pid.txt这个脚本设置了JVM堆内存参数指定了使用prod配置文件并将日志输出到app.log文件。6.2 前端部署配置1. 构建生产版本在前端目录ruoyi-ui下执行构建命令npm run build:prod这个命令会使用生产环境配置.env.production进行构建并对代码进行压缩、优化生成的文件位于dist目录。2. 配置生产环境API地址修改.env.production文件# 生产环境配置 ENV production # 生产环境API请求地址 VUE_APP_BASE_API /prod-api这里的/prod-api是一个约定你需要在前端部署的Web服务器如Nginx上配置反向代理将所有/prod-api的请求转发到后端服务。3. Web服务器配置以Nginx为例将dist目录下的所有文件上传到服务器例如/usr/share/nginx/html。 然后配置Nginx主要做两件事1. 托管前端静态文件2. 代理API请求到后端。server { listen 80; server_name yourdomain.com; # 你的域名 # 前端静态资源 location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; # 支持Vue Router的history模式 } # 代理后端API请求 location /prod-api/ { proxy_pass http://localhost:8080/; # 后端服务地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 可以再配置一个用于直接访问后端例如管理后台直接访问后端端口 # location /admin/ { # proxy_pass http://localhost:8080/; # ... 其他proxy设置 # } }配置完成后重启Nginx。现在访问你的域名就应该能看到部署好的若依系统了。7. 常见问题与排查技巧实录即使按照教程一步步来也难免会遇到问题。这里我整理了一些最常见的“坑”和解决方法。7.1 后端启动失败类问题问题1端口被占用现象启动时报Web server failed to start. Port XXXX was already in use.解决修改application.yml中的server.port为其他端口。或者找到占用端口的进程并结束它。在命令行中Windows:netstat -ano | findstr :8080找到PID然后taskkill /PID [PID] /FLinux/Mac:lsof -i:8080找到PID然后kill -9 [PID]问题2数据库连接失败现象启动时报Communications link failure或Access denied for user。排查步骤检查配置核对application.yml中的url,username,password是否百分百正确注意密码是否有特殊字符需要转义。检查MySQL服务确保MySQL服务正在运行。检查网络与权限尝试用命令行或客户端工具使用配置文件中的信息手动连接数据库看是否能成功。如果失败可能是用户权限问题需要授权远程或本地连接或者防火墙阻止了3306端口。问题3Redis连接失败现象启动时警告或报错连接Redis失败但应用仍能启动。登录时验证码不显示或登录状态无法保持。解决确认Redis服务已启动。检查application.yml中的Redishost和port。如果Redis设置了密码确保配置文件中password项已填写。如果是Linux服务器检查防火墙是否开放了6379端口。7.2 前端启动与编译问题问题1npm install 失败或极慢现象卡在node-sass等包或直接报网络错误。解决换源再次确认已执行npm config set registry https://registry.npmmirror.com/。清理缓存执行npm cache clean --force然后重试。使用cnpm如果npm问题依旧可以安装淘宝的cnpmnpm install -g cnpm --registryhttps://registry.npmmirror.com然后用cnpm install代替npm install。问题2npm run dev 启动后页面空白或报错现象浏览器控制台报Failed to load resource: net::ERR_CONNECTION_REFUSED或类似的网络错误。排查检查后端是否启动首先确认你的后端Spring Boot应用已经成功启动在localhost:8080或你配置的端口。检查代理配置核对vue.config.js中devServer.proxy的target地址必须和后端服务地址完全一致。检查前端服务端口如果80端口被占用npm run dev可能会启动在其他端口如8081。注意看命令行启动成功的输出信息访问正确的地址。问题3打包npm run build:prod时报内存溢出现象报JavaScript heap out of memory。解决Node.js默认内存限制可能不够。可以通过设置环境变量临时增加内存# Linux/Mac export NODE_OPTIONS--max-old-space-size4096 npm run build:prod # Windows (PowerShell) $env:NODE_OPTIONS--max-old-space-size4096 npm run build:prod这里的4096表示分配4GB内存可以根据你的机器配置调整。7.3 系统运行类问题问题1登录成功但菜单加载不出来或页面空白现象登录后左侧菜单栏为空或点击菜单没反应。排查F12看网络请求打开浏览器开发者工具切换到Network网络标签页查看点击菜单时是否有API请求发出请求的URL和响应状态码是什么。如果请求404大概率是前后端路径没对上。检查用户权限用默认的admin/123456登录。如果用了自己创建的用户确认该用户是否被分配了角色以及角色是否关联了菜单权限。检查前端路由如果是部署后出现此问题检查Nginx配置中try_files $uri $uri/ /index.html;这一行是否存在这是支持Vue Router history模式的关键。问题2验证码不显示现象登录页面验证码区域显示一个裂图图标。解决首选检查Redis验证码是存储在Redis中的。确保Redis配置正确且服务可用。检查Kaptcha配置若依使用Kaptcha生成验证码。检查application.yml中关于Kaptcha的配置如长、宽、字符数是否异常。查看浏览器控制台看验证码图片的请求是否成功如果请求地址错误或返回500根据错误信息进一步排查。问题3文件上传失败现象上传头像或导入Excel时失败。排查检查上传路径确认file.path配置的目录在服务器上存在并且运行Java应用的用户如www-data,tomcat用户或你自己对该目录有读写权限。检查文件大小限制Spring Boot默认对上传文件大小有限制通常1MB。如果上传大文件需要在application.yml中调整spring: servlet: multipart: max-file-size: 10MB max-request-size: 100MB配置若依就像组装一台精密的仪器每一步的严丝合缝决定了最终运行的顺畅度。这份教程涵盖了从环境准备到部署上线的完整链路并重点解释了配置背后的逻辑和常见问题的根因。我的建议是第一次配置时严格遵循步骤确保基础环境JDK, Maven, MySQL, Node.js版本匹配且安装正确。遇到问题时不要慌张多查看控制台日志和浏览器开发者工具的控制台Console与网络Network标签那里藏着绝大部分问题的答案。当你成功在本地跑起若依并完成一次简单的定制比如修改登录页Logo或增加一个测试菜单后你对这套框架的理解就会深刻得多。剩下的就是深入其业务代码去实现你真正的业务逻辑了。
返回列表