前言:用vue作后台管理系统作了半年,最近element-ui升级到2了,因此决定搭建一个基于ele2的后台模版,在这我将手把手javascript:void(null)分享一下如何从0搭建一个后台系统模版。本模版将会长期更新,之后维护中会把经常使用结局方案经常使用组件封装在另一个系统中,模版保障:方便快速开发,极易扩展的一个模版,基于此模版,您只须要修改少许的代码,就能进行开发。 分享开发过程,待续未完......javascript
github地址 项目在线预览 我的博客地址 此模板内涵盖:css
等等包含后台系统经常使用功能,方便快速开发,极易扩展的一个模版,基于此模版,您只须要修改少许的代码,就能进行开发。html
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BASE_API: '"http://www.easy-mock.com/mock/59dc61571de3d46fa94cebc7/lolapp"' // 这里换成您的请求地址便可
})
复制代码
2.接口约定。通常在项目中先后端联系的接口都会有固定的约定,虽然本项目是模拟数据,可是为了作到规范,先简单约定好接口格式,方便后面请求拦截的时候判断,接口约定规则以下前端
一、数据交互统一为JSON格式
二、出参通用格式相似
{
"code": "H0000",
"data": "88888888"
}
其中:code指返回码,有具体业务含义,如:
S0000 系统错误!
B0000 未登陆或登陆失效!
H0000 执行成功
首字母
S: 系统错误
B: 业务异常
H: 提示
M: 消息
data指返回的json数据。
三、登录后返回session_key,后续每次请求时都须将此做为token加入在header的Authorization信息中。
复制代码
1.Element-ui里面自带的图标在实际项目中确定不够用,我是使用的阿里iconfont字体图标库,注册一个账号,建立一个项目添加你想要的字体图标,会生成一个cdn的css连接,而后在你的head 里面 link这个样式便可。当你增长新图标的时候更新这个地址就行了。 vue
并非每一个项目都必须使用vuex,根据项目须要来使用。对于数据流不复杂的项目,彻底能够讲数据保存在本地,也能达到相似的效果也不影响项目需求,vuex我我的感受使用很繁琐,根据你的项目来进行使用。 仍是借用官方文档的术语: 虽然 Vuex 能够帮助咱们管理共享状态,但也附带了更多的概念和框架。这须要对短时间和长期效益进行权衡。 若是您不打算开发大型单页应用,使用 Vuex 多是繁琐冗余的。确实是如此——若是您的应用够简单,您最好不要使用 Vuex。一个简单的 global event bus 就足够您所需了java
使用vue官方脚手架生成项目,生成的时候最好选择webpack模版,单元测试,根据你的需求是否安装。node
├── build // 构建相关
├── config // 配置相关
├── src // 源代码
│ ├── api // 全部请求
│ ├── assets // 图片 字体等静态资源
│ ├── components // 全局公用组件
│ ├── directive // 全局指令
│ ├── filtres // 全局filter
│ ├── mock // mock数据
│ ├── router // 路由
│ ├── store // 全局store管理
│ ├── styles // 全局样式
│ ├── utils // 全局公用方法
│ ├── views // view
│ ├── App.vue // 入口页面
│ ├── main.js // 入口 加载组件 初始化等
│ └── permission.js // 权限控制 初始用户数据等
├── static // 第三方不打包资源
│ ├── img // 第三方不打包图片
│ └── theme // 主题包
├── .babelrc // babel-loader 配置
├── eslintrc.js // eslint 配置项
├── .gitignore // git 忽略项
├── .fjpublish.config.js // 自动化发布服务器 配置
├── index.html // html模板
└── package.json // package.json
复制代码
在./config文件夹下新建一个sit.env.js 的文件webpack
// 测试仿真环境
module.exports = {
NODE_ENV: '"production"',
BASE_API: '"http://120.55.169.121:8888/index"',
CRM_PATH: '"http://120.55.169.121:8083"', // 其余配置
};
复制代码
dev.env.js 、prode.env.js 也可进行相似的配置,把各个环境请求的不一样端口配置在这ios
后面在你的程序中,若是要使用这些变量可参考下例git
let baseUrl = process.env.BASE_API;
let crmPath = process.env.CRM_PATH;
// 建立axios实例
const service = axios.create({
baseURL: BASE_API, // api的base_url
})
复制代码
修改./config/index.js文件,将 sit.env.js 在 index.js 的 build 对象中引入:如图
修改./build/build.js 文件,将 process.env.NODE_ENV = 'production' 注释或者删除,由于咱们在后面须要动态配置NODE_ENV,此步骤如图
修改./build/webpack.prod.conf.js 文件 修改 evn,不BB直接上图
这样webpack 的配置就修改完了。 在这里能够顺便修改一下这个文件下 UglifyJsPlugin,打包构建的时候能够去除console.log,debugger。配置以下。(此步骤和多环境配置无关)
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
drop_debugger: true, // 去除构建的 debugger
drop_console: true // 去除构建的 console
},
sourceMap: true
}),
复制代码
咱们须要修改 package.json 的script 语句来增长命令启动咱们新增的服务
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build:sit": "NODE_ENV=sit node build/build.js",
"build:prod": NODE_ENV=production node build/build.js"
},
复制代码
而后启动 run run build:sit,但是这个时候报错了,NODE_ENV不被识别,这是因为 windows 不支持 NODE_ENV=sit 设置的方式。咱们只须要安装一个 cross-env 的插件便可
yarn add cross-env -D // 或者你使用npm 也可
npm install cross-env -dev--save
复制代码
接下来 继续修改一个 script 语句启动便可
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build:sit": "cross-env NODE_ENV=sit node build/build.js",
"build:prod": "cross-env NODE_ENV=production node build/build.js"
},
复制代码
这样 你启动 npm run build:sit 将构建打包测试环境的代码 生成在 dist 文件目录下 启动 npm run build:prod 将构建打包生产环境的代码 生成在 dist 文件目录下
安装 fjpublish
npm install fjpublish -g
复制代码
在项目根目录下创建一个 fjpublish.config.js 文件(为fjpublish配置文件)
module.exports = {
modules: [{
name: '测试环境',
env: 'sit',
ssh: {
host: '11.11.111.11', // 服务器地址
port: 22, // 端口
username: 'root', // 用户名
password: 'XXXX' // 密码
},
buildCommand: 'build:sit', // 构建命令 === npm run build:sit
localPath: 'dist', // 构建后上传文件
remotePath: '/test/xx', // 服务端路径
},{
name: '其余环境',
env: 'other',
....
}]
}
复制代码
一样的为了方便咱们须要修改 package.json 的script mode
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build:sit": "cross-env NODE_ENV=sit node build/build.js",
"build:prod": "cross-env NODE_ENV=production node build/build.js"
"public:sit": "fjpublish env sit"
},
复制代码
运行命令 npm run public:sit 确认后就会自动打包build:sit的代码,而且压缩后发布带你指定的服务器上,而且执行你的相应配置,若是须要多环境同时发布,只须要在fjpublish.config.js里面的modules里面增长一个对象进行相关配置便可。
至此 Vue-cli 项目的前端自动化已经配置好了