vue-element-admin技术栈
基础概念
vue-cli
vue-cli 俗称vue脚手架,是一个vue开发的环境,将你写的vue文件、sass文件等静态资源进行编译压缩,生成浏览器能访问的html页面, vue-cli里面运用的是vue单文件组件的写法。
element
element是基于vue语法的UI库,组件丰富,交互体验好,适用于做后台应用
vue-element-admin
vue-element-admin 是基于vue-cli和element做成的一个后台应用的模板,里面封装了很多实用的方法和UI(图表,上传组件,接口请求的封装等等),让你能把更多的精力放到功能流程的完成上。
应用基础
es6 语法
vue是基于es6的,所以如果对es6不熟悉,应该先看一下es6的文档,至少知道下面几个写法
面向对象
写一个module.js
const obj = {test:1}
export default obj
引用
import {test} from module.js
上面这句等于下面这两句
import module from module.js
let test = module.test
对象定义时
data() {} = data: function(){}
components: { cateAdd } = components: { cateAdd:cateAdd}
箭头回调
test().then(res => {
console.log('这里是成功的回调')
}).catch(
error => { console.log('这里是失败的回调')
})
vue语法和单文件组件
对于vue,需要先了解三块,基本语法,单文件组件,生命周期函数
-
基本语法
看文档,vue的思路和写法看一遍文档基本上就可以了 -
单文件组件
一个.vue的文件被输出为一个对象import testCate from 'test.vue' // 使用的时候 <test-cate></test-cate>
一个vue文件从生成-渲染-更新-直到销毁,有对应的生命周期函数
使用element组件
element组件本质上就是一个一个的单文件vue组件,引入后,即可使用,然后定义了各种参数,属性和方法 用法比较简单element文档
了解vue-element-admin基本结构
在vue-element-admin中,大多数代码都是写在src中, api中写接口请求,view中写vue文件,store中写数据管理,其他的用法看文档
实际应用
vue-router
vue-router是定义前端的路由和对应显示页面的管理工具,vue-element-admin集成了vue-router, 并且写好了路由文件对应左侧列表的渲染方法,所以我们只需要在/src/router/index.js中定义好路由就行了,所以写这个项目对vue-router使用水平的要求不高,如果想了解的更透彻一点,可以看文档
vue-axios
vue-axios是接口请求的工具,同样的vue-element-admin也封装了,写成了request.js
import request from '@/utils/request'
request({
url: '/category',
method: 'post',
params: param
})
这里有个坑,接口给过来的报错信息,都会被axios默认处理,舍弃接口抛出的信息,这就需要在封装的地方进行修改,但是error对象打印不出来,看不到里面的信息,通过找文档看到,error确实是一个对象,包含了所有信息,只是直接打印打不出来,error.response.data.message即可拿到接口的错误信息
文档
状态存储 vuex
状态存储用到的就比较多了,什么叫状态存储呢,其实是一个数据层,很多时候,我们需要子组件中触发父组件的数据改变,但是vue对于这一点的支持很差,所以,有了这个数据处理的工具,我们无论在哪里,直接修改这个数据仓库中的值即可,而绑定了这个数据的地方,就会随之全部改变。所以这个组件要看文档详细的了解,不用要求看一遍什么都懂,大概了解一下,就可以先看项目中的使用方法,main.js /src/store /src/views/cate.vue
从引入到使用看一遍就可以了。
遇到的语法总结
- 项目中引用了eslint代码检测工具,所以加入你的写法不对 会报红警告,哪怕是多一个或少一个空格
- js全部不要加分号
- 定义变量时 用let代码提示有时候会报错,用const就好了,这两者的区别我还没有了解清楚
- @ 指的是src目录 比如 '@/api' 指的就是 '/src/api'
- store的使用, 可以在 vue组件中 this.$store.state. 也可以引入 @/src/index.js store.state.
- 列表获取的全局数据,不能是直接定义数据 而是要定义成计算属性,比如,定义了一个data:test vue能监测到data的改变,从而修改视图和对应的数据,但是,如果是test变了,这样定义是监测不到的
- 一个vue文件的顺序应该是 template script style 这样方便维护
开发配置+打包发布
在/config中,有三个env文件,
- dev.env.js是本地开发环境的配置
- prod.env.js是是线上生产环境的配置
- sit.env.js 是线上测试环境的配置
开发过程中 npm run dev 程序会默认读取dev.env.js中的配置进行编译
打包时候 npm run build:prod 会读取prod.env.js中的配置进行编译,并在/dist中生成打包文件,生成的文件很简单,静态资源文件+ index.html 中是一个css和四个js文件,导致特别慢,需要12.5秒才能打开,所以需要把这五个文件进行cdn加速,加速之后是300ms-800ms,但是等项目大了之后,还是会慢,这个是最大的问题。