php启动element,GitHub - waniot/thinkphp5.1-vue-element-admin

这篇博客介绍了如何构建一个基于ThinkPHP5.1、Vue和Element的后台管理系统,包括异常处理、目录结构、安装步骤和权限控制。在安装过程中可能出现的错误如路由报错和npm异常也给出了解决方案。对于权限控制,文章提到了两种方法,一种是通过Vue-Router的meta元信息,另一种是利用name属性,并提供了相应的实现方式。
摘要由CSDN通过智能技术生成

thinkphp5.1-vue-element-admin

介绍

基于thinkphp5.1、vue、element做的一个后台管理系统,默认打包出的是异步加载

还有一点需要注意的是,如果使用本项目的ThinkPHP5.1进行接口开发,值得注意的一点是,我已经封装好接管异常的处理了,只需要创建异常类文件继承封装的异常就可以了。异常目录 app/lib/excption 目录,这个异常类分两种,一种是客户端异常(BaseException),一种服务器异常(不需要管,接管的异常会自动处理),当需要在不同功能接口返回异常时,只需要创建对应的异常类来继承客户端异常(即 BaseException)即可。

架构

架构说明

目录结构

ThinkPHP的目录结构就不用多说了,要说的是结合Vue后的目录

public目录

├─preview 预览目录(安装之后直接删除)

├─static 应用目录

│ ├─admin 后台目录(本后台管理系统主目录)

│ ├─home 前台目录

│ ├─src 模块目录

│ │ ├─api 接口请求目录

│ │ ├─assets 静态资源目录

│ │ ├─common 公共目录(如:公共函数,可直接修改,不影响打包后的文件)

│ │ ├─components 组件目录

│ │ ├─config 配置目录

│ │ ├─lib 核心库目录

│ │ ├─router 路由目录

│ │ ├─store vuex目录

│ │ ├─views 视图目录

│ │ ├─App.vue 根组件

│ │ ├─index.html 主页

│ │ ├─main.js 入口文件

│ │ └─ ...

Getting started

# clone the project

git clone https://github.com/chichengyu/thinkphp5.1-vue-element-admin.git

# install dependency

composer install

# install dependency

npm install

# test development build

npm run build:dev

# build

npm run build

# watch

npm run watch

Build

# Dev server

npm run dev

# test development build

npm run build:dev

# build

npm run build

# watch

npm run watch

安装异常

可能会出现的异常情况

路由报错

Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"},这是可能路由安装的是报错的版本,解决方法:

npm uninstall -S vue-router@3.0

重新安装一个稳定的版本,或者,在 main.js中,加上如下代码:

import VueRouter from 'vue-router'

// 解决路由报错 Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"}

const originalPush = VueRouter.prototype.push;

VueRouter.prototype.push = function push(location) {

return originalPush.call(this, location).catch(err => err)

};

该异常可能会出现

npm ERR! path C:\Users\admin\Desktop\abc\node_modules\less

npm ERR! code EISGIT

npm ERR! git C:\Users\admin\Desktop\abc\node_modules\less: Appears to be a git repo or submodule.

npm ERR! git C:\Users\admin\Desktop\abc\node_modules\less

npm ERR! git Refusing to remove it. Update manually,

npm ERR! git or move it out of the way first.

npm ERR! A complete log of this run can be found in:

npm ERR! C:\Users\admin\AppData\Roaming\npm-cache\_logs\2019-08-19T01_12_12_963Z-debug.log

‼ Command failed: C:\Users\admin\Desktop\www\element\node_modules\pngquant-bin\vendor\pngquant.exe --version

‼ pngquant pre-build test failed i compiling from source

× Error: pngquant failed to build, make sure that libpng-dev is installed

at Promise.all.then.arr (C:\Users\admin\Desktop\www\element\node_modules\bin-build\node_modules\execa\index.js:231:11)

at process._tickCallback (internal/process/next_tick.js:68:7)

npm WARN thinkphp5.1-vue-element-admin@1.0.0 No repository field.

去掉 image-webpack-loader在重新进行安装即可。

使用说明

ThinkPHP5.1、Vue、element的使用就不在此多说了,这里要说的是前后分离时的 权限控制,这里介绍两种方法,两种都需要前后配合

Vue-Router的meta元信息

在需要验证的路由中加入 meta 属性 meta:{rules:['admin','editor']},如下:

{

path:'index',

name:'adminIndex',

meta:{rules:['admin','editor']},// 如此这样

component: () => import(/* webpackChunkName: "login" */ '@/views/admin/components/index.vue')

}

admin、editor表示只有 admin/editor 两个用户组的用户能访问此条路由。

当用户登陆时返回的用户信息中需要有当前用户所属的用户组(键名:roles)

如:

{

username: 'admin',

token: ' 5bf4b1a323557c43607406bc',

roles: ['admin']

}

Vue-Router的name属性

在需要验证的路由中加入 name 属性,且每个路由的 name 值必须是独一无二的,不能有相同值的,后台需要返回一个以所有路由中 name 值的对象规则,

{

"rules": {

'index': true,

'adminIndex': true,

'table': true,

'form': true,

'keyboard': true,

'line': true,

'icons': true,

'mix': true,

'notAuth': false,

'found': false,

}

}

然后在路由守卫里进行判断筛选出当前登陆用户的菜单动态挂载到路由上。

这里使用的是 meta 属性进行权限控制的,当然两种各有优劣势

如果需要粒度更细的权限,如:按钮权限,这里我在 src\router\rules.js这个文件算是一个权限映射文件,只需要填写正确的权限id即可使用

License

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值