Vue-Element-Admin目录结构
前言:
刚接触到项目,我来负责写后台管理界面,所谓不要重复造轮子,自然就有了后续了…
读完这个框架的源码后,感觉受益匪浅,对我以后写项目有了更多。
Vue-Elment-Admin
vue-element-admin
是一个后台前端解决方案,它基于 vue
和 element-ui
实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件。对于经常使用 vue
和 element-ui
开发的 uu 们,使用这个框架比较容易点。
目录结构
+ src |
api
这是框架本身推荐我们使用的方法,封装性也非常强,也推荐uu们使用这种方法import request from '@/utils/request'
export function functionName(name) {
return request({
url: '/vue-element-admin/search/user',
method: 'get',
params: { name }
})
}
export function transactionList(query) {
return request({
url: '/vue-element-admin/transaction/list',
method: 'get',
params: query
})
}
...
不过由于我的后端总有自己的想法,而且我并不想每次请求完后都要去判断一下状态(每次传参是否有问题什么的),他会返回code给我,只有0才是正确,所以我在框架的基础上再封装了一层Promise。这样抽离解耦的话,会让我们的逻辑更加清晰,页面更加优雅。不至于一个文件下面什么代码都有,一个地方动了,其他地方也要跟着动,极其不利于我们开发import request from '@/utils/request'
// 修改用户密码
export const updataUserPassword = (update_id, password) => {
return new Promise((resolve, reject) => {
req({
url: 'url',
method: 'post',
data: JSON.stringify({
update_id,
password
})
}).then(res => {
if (res.code !== 0) reject(res.msg) // 在这里判断是否成功
resolve(res)
})
})
}
...
api文件夹中的文件基本上都是这么写的了,管理员的写一个文件,用户的写一个文件,机器人的写一个文件….
utils
request
因为写网页总要与后端交互,更何况我们这个后台管理呢。
所以我们将基本网络请求封装到这个文件中,然后将封装好的对象抛出去,给上面的 api 文件使用。
import axios from 'axios' // 引用 axios 请求 |
当然这里只有一个后端,如果有多个后端的话(IP
地址不相同),我这个项目就是如此(请外援).可以创建多个request,在api中引用的时候import
对应的路径即可.import { req } from '@/utils/BotRequest'
如此一来我们就将网路请求相关的代码差不多封装完了
auth (后面与vuex交互需要,可先跳过)
这个文件更多的是与浏览器缓存的交互,在页面刷新后,页面不会让我们重新登录等信息。但是在浏览器关闭后,我们就不能让用户直接登录进来了,所以我们采用js-cookie
来存浏览器缓存
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
export function getToken() {
return Cookies.get(TokenKey)
}
export function setToken(token) {
return Cookies.set(TokenKey, token)
}
export function removeToken() {
return Cookies.remove(TokenKey)
}
import Cookies from 'js-cookie' |