vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台

摘要:
一.前言本篇基于有来商城youlai-mall微服务项目搭建的后台前端管理平台,技术选型Vue+Element-UI实现前后端分离,解决方案选型vue-element-admin。希望通过本篇你可以改造vue-element-admin工程接入到自己的平台。
一. 前言

本篇基于有来商城youlai-mall 微服务项目搭建的后台前端管理平台,技术选型Vue+Element-UI实现前后端分离,解决方案选型vue-element-admin。希望通过本篇你可以改造vue-element-admin工程接入到自己的平台。

二. 工程改造

1.导入vue-element-admin

导入vue-element-admin至IDEA,直接使用git导入的地址: https://gitee.com/panjiachen/vue-element-admin.git

2.设置vue-element-admin中文语言

切换到分支i18n支持国际化分支

git checkout i18n

安装依赖包

npm install --registry=https://registry.npm.taobao.org

启动项目

npm run dev

此时默认浏览器会自动打开,也可在浏览器地址栏输入 http://localhost:9527 直接访问

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第1张

3.移除mock接入后台接口

vue-element-admin项目默认走的是本地mock接口数据,那怎么接入到自己平台的后台接口呢?

3.1 mock接口信息

先看下vue-element-admin登录进入平台所需要的接口信息,如下图所示,是有两个关键接口
vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第2张

接口一:/user/login 登录认证获取token

{
	"code": 20000,
	"data": {
		"token": "admin-token"
	}
}

接口二:/user/info?token=admin-token 根据token获取用户信息

{
	"code": 20000,
	"data": {
		"roles": ["admin"],
		"introduction": "I am a super administrator",
		"avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
		"name": "Super Admin"
	}
}

3.2 后台接口信息

关于后台接口首先对youlai-mall开源项目有些了解,详情请拉取下项目,依次启动nacos-server,youlai-admin,youlai-auth,youlai-gateway项目启动有啥问题请下方留言,见到第一时间回复。

接口一:登录认证获取token

youlai-mall整合SpringCloud Gateway+Spring Security OAuth2+JWT技术实现的登录认证接口,调用信息如下:

http://localhost:9999/youlai-auth/oauth/token

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第3张

接口二:获取用户信息

http://localhost:9999/youlai-admin/users/current

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第4张

以上就是两个接口的请求以及响应信息,暂先可以不用顾及其内部实现。本篇侧重接入后台youlai-mall,最好拉取youlai-mall代码在本地启动跑一下流程。

如果想自定义接口,只要按照特定数据格式返回即可。

3.3 vue-element-admin移除mock

1. vue.config.js

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第5张

至于为什么添加配置devServer.proxy进行代理转发?

因为前后端分离,就算是本地开发,也会因为端口不同而满足 跨域请求条件的。

一般跨域是浏览器禁止的,服务器端之间并不禁止跨域(可以配置禁止)。

配置好代理之后,在项目启动时本地会启动一个node服务,浏览器先将请求发送到本地node服务,然后经由node服务将请求代理转发到后台服务器,这样就可以避开浏览器禁止跨域的问题。

具体原理详情可参照:node中跨域代理 proxyTable的原理是什么?

2. src/main.js

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第6张

3.4 vue-element-admin接入后台接口

1. src/api/user.js

接口URL替换: 完成1,2步骤即移除了mock接入到了后台,修改登录认证和获取用户信息两个接口的后台请求路径,替换后如下图:

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第7张

2. src/store/modules/user.js

认证接口参数: 首先看下登录入口: src/views/login/index.vue的handleLogin方法

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第8张

this.$store.dispatch是Vuex状态管理中调用方式,具体操作是分发actions->调用mutations->改变state,其中action包含了异步操做,这是action与mutation的区别,也是dispatch和commit的区别。

// dispatch 异步操作 
this.$store.dispatch('actions的方法',args)

// commit 同步操作
this.$store.commit('mutations的方法',args)

明白this.$store.dispatch是做actions的分发,分发路径是/user/login,找到user模块文件src/store/modules/user.js,在文件中actions找到login方法,详情如下图:

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第9张

对比3.2后台接口,发现OAuth2认证还少了3个参数:

参数值参数名参数描述
grant_typepasswordOAuth2授权方式:密码式
client_idclient客户端ID
client_secret123456客户端密钥

补全参数后如下:

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第10张

3.src/utils/request.js

修改数据上传默认为JSON格式

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第11张

修改请求头

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第12张

修改成功响应状态码

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第13张

3.5 接入后台登录测试

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第14张

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第15张

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第16张

到这里就完成了vue-element-admin移除mock接入到后台的功能

三. 搭建有来商城管理平台

通过上面步骤,我们已成功改造vue-element-admin接入到后台接口,接下来我们以管理平台的用户管理功能为例讲述如何使用vue-element-admin搭建我们自己的管理平台。

1. 删除多余文件

删除mock文件夹

删除views下除了dashboard、error-page、login、profile、redirect之外的文件夹

2. 引入用户管理

新增user.js接口、user/index.vue用户页面,完整代码文章结尾获取,结构如下图所示:

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第17张

3. 路由配置

修改路由配置文件 src/router/index.js,其中有静态路由constantRoutes和权限路由asyncRoutes需要修改。

静态路由删减保留如下:

export const constantRoutes = [
  {
    path: '/redirect',
    component: Layout,
    hidden: true,
    children: [
      {
        path: '/redirect/:path(.*)',
        component: () => import('@/views/redirect/index')
      }
    ]
  },
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },
  {
    path: '/auth-redirect',
    component: () => import('@/views/login/auth-redirect'),
    hidden: true
  },
  {
    path: '/404',
    component: () => import('@/views/error-page/404'),
    hidden: true
  },
  {
    path: '/401',
    component: () => import('@/views/error-page/401'),
    hidden: true
  },
  {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    children: [
      {
        path: 'dashboard',
        component: () => import('@/views/dashboard/index'),
        name: 'Dashboard',
        meta: { title: 'Dashboard', icon: 'dashboard', affix: true }
      }
    ]
  },
  {
    path: '/profile',
    component: Layout,
    redirect: '/profile/index',
    hidden: true,
    children: [
      {
        path: 'index',
        component: () => import('@/views/profile/index'),
        name: 'Profile',
        meta: { title: 'Profile', icon: 'user', noCache: true }
      }
    ]
  }
]

权限路由删减,并新增用户管理路由如下:

export const asyncRoutes = [
  {
    path: '/admin',
    component: Layout,
    redirect: '/admin/user',
    alwaysShow: true, // will always show the root menu
    name: 'Admin',
    meta: {
      title: '系统管理',
      icon: 'documentation',
      roles: ['admin', 'editor'] // you can set roles in root nav
    },
    children: [
      {
        path: 'user',
        component: () => import('@/views/admin/user'),
        name: 'User',
        meta: {
          title: '用户管理',
          roles: ['admin'] // or you can only set roles in sub nav
        }
      }
    ]
  },
  // 404 page must be placed at the end !!!
  { path: '*', redirect: '/404', hidden: true }
]

4. 验证用户管理

执行npm run dev再次打开系统,登录后界面如下:

vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台第18张

可以看到,管理平台中的用户管理已成功集成到我们改造后的vue-element-admin工程,其他功能搭建按照同样方法即可。

四. 结语

本篇就如何改造vue-element-admin接入到后台实现youlai-mall后台前端管理平台的搭建。其中涉及的前后端分离解决浏览器跨域问题的解决原理,vuex、vue-router的应用,觉得很有意义去亲手实践一下,如果有问题下方留言即可。最后附上完整代码下载地址:

youlai-mall

youlai-mall-admin

免责声明:文章转载自《vue-element-admin实战 | 第一篇: 移除mock接入后台,搭建微服务和前后端分离的管理平台》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇layer弹出层框架alert与msg详解Vue中引入TradingView制作K线图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VUE SSR 服务端渲染模式下, axios interceptors执行两次/多次的问题

随手记录一下吧。 具体的 node端渲染原理懒得去探求究竟了。 根据debug跟踪发现,是axios配置reques的时候,没有通过create实例化,而是直接修改了axios的interceptors,因此导致服务端运行出现异常。服务端渲染模式下, 每个请求interceptors 里面的内容都会打印两次。 尝试将request的封装,改为先实例化axi...

C#接口(interface)与类(class)的实例互相转换深度解析

接口就是类(事物)的标准,它规定了类(事物)的方法和属性.一个类(事物)要实现一个接口的话,就必须实现它里面的方法和属性.单一类(事物)我们就可以这样简单的理解,对于多个类(事物),接口不仅为这些类(事物)提供一个标准,而且还为他们之间的关系进行了约束,相当于契约。我们通常的做法是:类实现接口-》对该类进行实例化-》把类的实例转换成实现的接口-》通过接口进...

Vue搭建脚手架2

Vue2.0搭建Vue脚手架(vue-cli) 在网上找了很多的搭建脚手架教程,但都不求甚解。终于找到2个比较好的教程,读者可对比阅读1和2,在这里分享给大家,希望对初学者有所帮助。ps:高手请绕道。 1.使用npm全局安装vue-cli(前提是你已经安装了nodejs,否则你连npm都用不了),在cmd中输入一下命令 npm install --glo...

vite vue插件打包配置

import { defineConfig, UserConfigExport, ConfigEnv } from "vite"; import externalGlobals from "rollup-plugin-external-globals"; import vue from "@vitejs/plugin-vue"; import dts f...

优秀的API接口设计原则及方法(转)

一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的。如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大。如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务。 但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供...

VUE自学之路7-vue模版语法(双向数据绑定)

MVVM 含义:数据变化影响视图,视图变化反过来又影响数据。  M(model):即data中的数据变量 V(view):即所写的模块(dom元素) VM(view-model):实现model和view的控制逻辑  实现过程: DOM listeners:监听View的变化,及时告知给Model。 Data Bindings:绑定Model到View,模...