Vue框架--Ruoyi解析(前端)

路由router注册

router目录下的 index.js 配合 permission.js 是整套vue前端项目的权限判断核心. index.js 里面的path 配置都是一些不会与权限挂钩的路由,例如: 404、登录页面路径等. permission.js 中的 router.beforeEach 是路由拦截,在访问某个链接之前会进行权限判断,但是如果你注释掉这部分代码,然后再去访问某个路径(假如该路径没有被注入到router中),那么也是不能访问的.

 路由拦截是对访问路径的第一道校验,控制着整个前端页面的访问权限,把用户当前登录状态、用户当前登录状态、权限和能访问该项目的路径绑定在一起死死的.

登录的重定向

假设在A页面登录超时,然后重新登录,会自动跳转到上次你退出登录时的页面,这个很银杏,但是对于一些公司项目的要求(每次登录之后要跳到首页),我这里的首页是写到router目录先的index.js文件中.

 登录时走的流程

在执行 handleGoLogin() 方法时,会调用state中的自定义方法 Login 来实现登录验证和token值的记录.

 在 store-->modules-->user.js中,调用封装好的网络请求方法进行登录验证

 注意: 上面这一步操作是在 state 中进行的, vue-element-admin中对各个层级有比较严格的规定,比如缓存层就做记录缓存和取缓存的操作,api层就做接口层的操作,顶级层之间相互调用.

上面的代码你可能有点疑问,为什么 store 可以直接调用 user.js中的 Login() 方法呢.首先 main.js中已经声明并使用了 store  .

 store 文件中的index.js是默认调用的

 到了调用接口 api 这一步,上面说到登录动作是先调用了 store 的Login()方法,先走store而不是直接走api是为了对登录成功后返回的token直接记录到缓存中,不在 api层额外操作缓存.

api的方法封装

.

 这一层只需要会用就行,重点关注的是已经封装好的 request.js ,因为之后不管什么接口方法都需要用到 request.js ,之后如果对接口入参和出参有调整都需要去修改该文件.

 

 其实 request.js 就是配置一下vue的axios参数,对入参和出参进行判断、封装和处理,对于一些共通错误进行统一抛出,这里有人注意到一个方法: getToken()

 直接从浏览器cookie中去token值(有取就有存,存当然是在登录成功之后的处理)

登录成功时处理

回到一开始的登录页login.vue以及对应的store中的modules模块==>user.js :

 login.vue

 登录成功之后,就会有一个新的url,所以会再走一遍 permission.js的路由拦截:

 其中非常关键的一步就会执行了:

 

 拿到token,就会去获取该用户权限信息,根据权限信息生成动态路由,最后通过 addRouters方法注册路由 rewriteRoutes

 前端权限控制粒度

 user对象无非就是包含了部门 dept和角色roles信息,但有个permissions: 就拿system:user:resetPwd 来说,system代表一级路由的关键词(也就是路由地址),user是二级路由的关键词,resetPwd是对这个页面中某些操作的描述关键词:

 

 这套权限控制前端是否有按钮粒度级别的程度,把握的死死的,前端根据 permissions控制的,随便拉一个代码:

 有个自定义方法 hasPerm ,看一下 hasPerm.js :

 权限数据解析

看生成动态路由的部分:

 看一下这个路由内部是个什么东西:

 其他都还好理解,这个component怎么会是这么多年内容:

 可以看到如果入参component那么会被替换成一个Layout组件,这个组件来自 : 

import Layout from '@/layout/index'  ,是决定整个前端布局的页面组件

 

 前端打包

框架里面有三个配置文件

 (1) .env.development

(2) .env.staging

(3) .env.production

打包的时候 package.json 会根据指令不同加载对应的配置文件:

 其中一个变量 VUE_APP_BASE_API, 会自动拼接到服务器访问地址上去,比如: http://[你的服务器ip+端口号]/prod-api ; http://[你的服务器ip+端口号]/stage-api/ ;  nginx的配置就是围绕他做展开,可以不动,改一些文本信息就行了.

/store/modules/permission.js

这个文件里有一段代码:

export const loadView = (view) => {
  if (process.env.NODE_ENV === 'development') {
    return (resolve) => require([`@/views/${view}`], resolve)
  } else {
    // 使用 import 实现生产环境的路由懒加载
    return () => import(`@/views/${view}`)
  }
}

这里的return () => import(`@/views/${view}`)要根据你打包环境的webpack版本改成对应的语法,在webpack4中动态import不支持变量方式,所以统一改成 return (resolve) => require([`@/views/${view}`], resolve)一种方式就行了.

/router/index.js

动态路由中有一段代码:

export default new Router({
  mode: 'history', // 去掉url中的#
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

mode:'history'建议改成 mode: 'hash',不然服务器部署后登录失效重定向会404,而且hash模式不会有#这种比较碍眼的url地址.

nginx

部署的核心,静态资源直接放在nginx下运行,服务也用nginx反向代理到其他端口或者其他服务器ip

首先是静态资源文件,你可以把打包好的vue文件放到某个目录下,比如/home/project/stage/,那么你在nginx中可以这么配置(toolsweb是vue项目名,默认是你打包时候设置的outputDir名字)

# 通过80端口访问静态资源
server {
  listen       80;
  server_name  localhost;
  charset utf-8;

  location / {
    root   /home/project/stage/toolsweb;
    try_files $uri $uri/ /index.html;
    index  index.html index.htm;
  }

  # 这里的stage-api就是.env文件中设置的,打包的时候自动打进去,所以可以根据这个后缀重定向到新地址
  location /stage-api/ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8180/tools-back/;
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   html;
  }
}

你可能会有疑问,在想传统项目的api地址可以是直接url替换,能不能也做成这样,答案当然是可以的,直接在.env文件中把

VUE_APP_BASE_API改成 'http://[你的ip:端口]/tools-back' 就行了,这样就不需要配置nginx环境,而且这样有时候根据实际需要直接连接测试和正式api地址测试(虽然不建议)。第一种方式优雅点,不用在项目代码里关注服务器地址问题,看你喜好.

<think>好的,我现在需要帮用户查找Ruoyi框架的安装方法或教程。首先,我应该回顾用户提供的引用内容,看看里面有没有相关的安装步骤。根据引用[1],用户提到了从gitee获取代码,安装MySQL、node.js、Navicat/DataGrip、Redis等步骤。这可能就是安装若依框架的基本流程。 接下来,引用[2]提到从若依官网下载源码,使用git clone命令获取。引用[4]也提到git或码云上有1.6万star的Java开源后台管理系统,这应该是指若依框架的仓库。因此,安装的第一步应该是克隆或下载源码。 然后,安装依赖的环境。引用[1]详细列出了需要安装的组件:MySQL、node.js、Navicat或DataGrip、Redis。特别是Windows系统安装Redis的部分可能需要特别注意配置。引用[3]提到如果没有人指导,新手可能会遇到问题,比如自定义用户表或权限验证,但安装部分可能相对直接,只要按照步骤操作。 引用[5]虽然主要讲定时任务,但说明框架本身有内置功能,安装完成后可能需要配置这些模块。不过用户当前的问题集中在安装步骤,所以暂时不需要深入定时任务。 现在需要把这些信息整合成一个清晰的安装步骤。首先,从gitee或官网获取源码;然后安装必要的数据库、后端和前端依赖,比如MySQL和node.js;接着配置数据库和Redis;最后启动前后端服务。可能还需要注意版本兼容性,比如Java版本是否匹配,MySQL的版本是否合适,以及node.js的版本是否支持。 用户可能遇到的问题包括环境变量配置不正确,数据库连接失败,或者Redis服务未启动。需要提醒用户检查这些部分,或者参考具体的教程链接。例如,引用[1]和[4]可能提供了更详细的安装说明,但用户给出的引用中没有具体的URL,可能需要指导用户访问若依官网获取最新文档。 最后,生成相关问题时要考虑用户在安装后可能遇到的下一步问题,比如配置模块、代码生成器使用,或者常见错误的解决方法。这样能帮助用户更全面地了解后续步骤。</think>### Ruoyi框架安装教程分步说明 根据引用内容,Ruoyi框架的安装需要以下核心步骤: #### 一、环境准备(系统级依赖) 1. **Java环境**:要求JDK 1.8+,可通过命令`java -version`验证 2. **MySQL 5.7+**:用于存储系统数据[^1] 3. **Redis 3.0+**:Windows系统需单独安装服务 4. **Node.js 14+**:前端工程依赖环境[^1] 5. **开发工具**: - 后端:IntelliJ IDEA/Eclipse - 数据库:Navicat/DataGrip - 前端:WebStorm/VSCode #### 二、获取源码 1. 从官方仓库克隆代码(支持多版本): ```bash git clone https://gitee.com/y_project/RuoYi-Vue.git # 前后端分离版本[^2] ``` 或通过若依官网直接下载 #### 三、数据库配置 1. 创建数据库`ry-vue`,执行SQL脚本: - `/sql`目录下的`ry_2022xxxx.sql`(基础表结构) - `quartz.sql`(定时任务模块)[^5] 2. 修改配置文件: ```yaml # ruoyi-admin/src/main/resources/application-druid.yml url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true username: root password: 123456 ``` #### 四、Redis配置 1. 修改Redis连接参数: ```yaml # ruoyi-admin/src/main/resources/application.yml redis: host: localhost port: 6379 password: ``` #### 五、后端启动 1. 使用IDE导入Maven项目 2. 编译并运行`RuoYiApplication.java` #### 六、前端启动 1. 安装依赖: ```bash cd ruoyi-ui npm install --registry=https://registry.npmmirror.com ``` 2. 启动服务: ```bash npm run dev ``` #### 七、验证安装 访问`http://localhost:80`,默认账号`admin`/密码`admin123` ### 常见问题解决 - **数据库连接失败**:检查MySQL服务状态和用户权限 - **Redis启动异常**:Windows系统需手动启动`redis-server.exe` - **前端编译报错**:尝试清除缓存`npm cache clean --force`
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发那点事儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值