这是一个 极简的 vue admin 管理后台 它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。
如果你想要根据用户角色来动态生成侧边栏和 router,你可以使用该分支permission-control
本项目基于webpack4开发,若还想使用webpack3开发,请使用该分支webpack3
如果你想使用基于 vue + typescript 的管理后台, 可以看看这个项目: vue-typescript-admin-template (鸣谢: @Armour)
写了一个系列的教程配套文章,如何从零构建后一个完整的后台项目:
# Clone project
git clone https://github.com/PanJiaChen/vue-admin-template.git
# Install dependencies
npm install
# 建议不要用cnpm 安装有各种诡异的bug 可以通过如下操作解决npm速度慢的问题
npm install --registry=https://registry.npm.taobao.org
# Serve with hot reload at localhost:9528
npm run dev
# Build for production with minification
npm run build
# Build for production and view the bundle analyzer report
npm run build --report
首先找到 index.html (根目录下)
引入 Element 的 css 和 js ,并且引入 vue 。因为 Element-Ui 是依赖 vue 的,所以必须在它之前引入 vue 。
之后找到 webpack.base.conf.js 加入 externals 让 webpack 不打包 vue 和 element
externals: {
vue: 'Vue',
'element-ui':'ELEMENT'
}
之后还有一个小细节是如果你用了全局对象方式引入 vue,就不需要 手动 Vue.use(Vuex) ,它会自动挂载,具体见 issue
最终你可以使用 npm run build --report 查看效果
如图:

Modern browsers and Internet Explorer 10+.
IE / Edge |
Firefox |
Chrome |
Safari |
|---|---|---|---|
| IE10, IE11, Edge | last 2 versions | last 2 versions | last 2 versions |
MIT license.
Copyright (c) 2017-present PanJiaChen
contentStyle: function () {
//return {
// height: parseInt(this.options.area[1]) - 50 + "px",
// minHeight: "inherit",
// overflow: "auto"
//}
//解决 area 设置% 无效的bug
var h = parseInt(this.options.area[1]) - 50 + 'px';
if(this.options.area[1].indexOf('%') > -1){
h = 'calc(100% - 37px)'
}
return {
height: h,
minHeight: "inherit",
overflow: "auto"
}
resetZIndex: function() {
//修改t的值 500 =》 1500 t+1 => t+2 增加了给遮罩层添加 z-index
var doms = document.querySelectorAll(".vl-notify-mask")
for (var t = 1500, e = document.querySelectorAll(".vl-notify-iframe"), n = 0, o = 0, r = e.length; o < r; o++) {
var i = parseInt(this.getStyle(e[o].id, "z-index"));
this.options.id == e[o].id && (n = i), t < i && (t = i)
var ms = document.getElementById(doms[o].id)
}
n == t && 1500 != t || (this.zindex = t + 2)
ms.style.zIndex = this.zindex - 1
},
ReferenceError: deepClone is not defined
deepClone 修改成 this.deepClone