14万字手把手教你做vue电商后台管理(全)——技术栈(vue全家桶 Webpack Git axios Element-ui)

  • Post author:
  • Post category:vue


该项目是在年初的时候学习黑马程序员vue项目实战整理的笔记,自用的所有比较乱

文章比较长但省去了看视频的时间,适合初学vue的同学

部分章节还没完善,会持续更新

如果你还没有vue基础知识,看这篇文章:


vue.js基础还不会?——看这篇文章就够了

接口文档地址:

前有反馈官网黑马头条跟VUE电商项目接口不能用,目前已更新:

1、vue电商后台管理系统接口地址:https://www.liulongbin.top:8888/ 老师已经测试没有问题哈,如果后期有问题,可以使用备用接口:http://itcgq.com:8888;

黑马头条项目接口目前已经修复,可以使用接口文档中的接口地址:http://ttapi.research.itcast.cn/,

如果后期有问题,可以使用备用接口:http://toutiao-app.itheima.net/ 。

此接口不要公布告知其他人,不然官方又会没事关掉。切记!!!

文章每节目录:


vue电商后台管理系统保姆级教程(导航目录)——找到比这更详细的算我输

文章视频链接:


【2020年黑马最新】Vue实战项目:电商管理系统

需要源代码和接口文档软件的同学可私聊我!!

更新与2021.11.28

前有反馈官网黑马头条跟VUE电商项目接口不能用,目前已更新:

1、vue电商后台管理系统接口地址:https://www.liulongbin.top:8888/ 已经测试没有问题哈,如果后期有问题,可以使用备用接口:http://itcgq.com:8888;

黑马头条项目接口目前已经修复,可以使用接口文档中的接口地址:http://ttapi.research.itcast.cn/,

如果后期有问题,可以使用备用接口:http://toutiao-app.itheima.net/ 。

此接口不要公布告知其他人,不然官方又会没事关掉。切记!!!

项目结构 :

1.项目初始化

2.登录和退出功能

3.主页布局和功能实现

4.用户列表布局和功能实现

5.用户添加,修改删除功能

6.权限列表

7.角色列表

8.分配权限,角色

9.分类参数

10.商品列表

11.商品添加

12.订单列表

13.Echarts数据统计

14.项目优化

15.项目上线

项目总结:

在这里插入图片描述



1、项目概述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

jwt:状态保持



2、项目初始化



2.1使用vue-cli脚手架搭建项目

在这里插入图片描述

脚手架全局安装一次就ok了。不用重复安装

安装node后运行

npm install @vue/cli

//检查是否安装成功
vue -V
出现版本号就安装成功了


vue-cli安装


安装完成vue-cli3.0之后可以用可视化面板来创建项目,

在可视化面板中安装element-ui和axios依赖



2.2配置码云

注册账号,

添加公钥


gitee添加公钥方法


将本地项目托管到码云

在码云中新建仓库


gitee创建仓库


建立好仓库之后输入如下代码



在码云中刷新就能看到本地仓库。



2.3后台项目环境安装配置

在这里插入图片描述



3、主页布局,登录和退出功能



3.1登录概述

在这里插入图片描述

http无状态:

如果 前端和后台接口不存在跨域问题,那么使用cookie和session来保持登录状态

如果存在跨域问题,使用token维持状态。



3.2 token原理分析

在这里插入图片描述



3.3登录功能实现

在这里插入图片描述

步骤:

1、打开项目文件后在控制台创建一个新的分支,当这个分支完成之后,在合并到master分支上

创建分支:

在这里插入图片描述



3.4梳理项目结构

在可视化面板中启动app

在这里插入图片描述

在这里插入图片描述

main.js是整个项目的入口文件

路由写在router.js中

需要导入的文件都在此导入

页面内容写在app.vue中,初始化的时候需要把app.vue中默认的内容删了。后面我们自己写。清空路由中不需要的规则。

在完成上面的步骤之后就可以有一个干净的页面进行开发了、



3.5 渲染登录组件并实现路由重定向

1、在components组件中新建login.vue文件(单文件组件)(有三类组成 )

在这里插入图片描述

template是结构

script是行为

style是样式,

scoped是一个vue的组件,用来控制组件的样式生效区间,存在表示样式只在当前页面生效,没有写的话就是在所有页面生效(建议使用)

/2、在路由中导入app.vue

在这里插入图片描述

3、在app根组件中放一个路由占位符

在这里插入图片描述

4、路由重定向

在这里插入图片描述



3.6 背景色和登录图标

1、在login.vue中给div绑定class类

在style里加样式

在这里插入图片描述

注:此处高度设置成100%

然后报错:

在这里插入图片描述

原因是没有安装less工具

在可视化面板中依赖安装less(下面两个都需要安装)

在这里插入图片描述

在这里插入图片描述

在面板中重新启动app

背景色生效

2、全局样式表

设置在scr中,新建css文件夹,新建global.css文件。定义相关的样式
在这里插入图片描述

在这里插入图片描述

3、在main.js中导入全局样式表

在这里插入图片描述

接下来就是写登录logo的 样式了

在这里插入图片描述

在这里插入图片描述

此时页面成功了:

在这里插入图片描述



3.7 绘制默认头像

在刚刚登录盒子中绘制图片及样式

在这里插入图片描述

效果:

在这里插入图片描述



3.8 绘制登录表单区域

使用element表单组件

打开element官网。找到对应组件

加入到app.vue对应的结构中。

在这里插入图片描述

出现报错:原因是element我们在采用的时候是按需导入(在使用vue-cli搭建的时候也可以使用全部导入,但是不建议)

import导入 vue.use注册为全局可用的组件

在这里插入图片描述

优化页面内容和样式;

在这里插入图片描述

页面效果:

在这里插入图片描述

优化样式:

在这里插入图片描述

页面效果:

在这里插入图片描述



3.9 绘制登录框中的小图标

使用element中带icon的输入框

使用阿里图标库导入

fonts放到src中。在main.js中导入

在这里插入图片描述



3.10 实现表单的数据绑定

element组件可以绑定form

第一步:

在这里插入图片描述

第二步:

在script中

在这里插入图片描述

第三步:定义数据

在这里插入图片描述

第四步:为每一个输入框天添加v-model属性

在这里插入图片描述

第五步:密码框隐藏

type:password

在这里插入图片描述



3.11 登录前表单预验证

点击登录的时候调用表单的函数进行校验

element组件有自带的表单校验(ref)

只需要把item项数据和表单进行绑定即可

在这里插入图片描述

1、为el-form通过:rules绑定验证对象

在这里插入图片描述

2、在date中定义验证对象

在这里插入图片描述

3、不同的表单使用prop验证不同的规则

在这里插入图片描述



3.12 表单重置功能

点击重置按钮重置表单中的数据

restFields方法:

在这里插入图片描述

拿到表单实例对象:

给组件加 ref=引用名称

只要获取到ref 就拿到了表单的实例对象

拿到之后就可以进行表单重置

在这里插入图片描述

为按钮绑定重置事件

在这里插入图片描述

定义函数:

在这里插入图片描述



3.13 表单登录时的数据验证

1.先为登录按钮绑定点击事件
在这里插入图片描述

2、定义登录函数:

在这里插入图片描述



3.14 配置axios发起请求

上节中对登录数据进行了验证,验证之后判断是否发起服务器请求

1、配置axios:在main.js中导入并挂载到vue的原型对象上(每一个vue的组件都可一通过this访问到$http),设置axios根路径

在这里插入图片描述

注:这里的接口地址已近改变,最新地址为:

https://www.liulongbin.top:8888/

2、在反复中通过this访问$http发起post请求

在这里插入图片描述

注:先启动mysql数据库,运行node app

3、接收回调函数
在这里插入图片描述

4返回的对象是 promise时,使用await来返回具体的数据

在这里插入图片描述

最后返回对象:

在这里插入图片描述

data才是服务器返回的真正数据

所以我们需要在对象上使用{} 把date对象解构赋值出来

在这里插入图片描述

这样就省略其他数据

5、返回状态码显示登录情况

在这里插入图片描述



3.15 配置Message全局弹框组件

登录成功失败后页面弹框提示用户状态

利用element弹框组件

element.js中导入组件 全局挂载原型上(this直接访问)

在这里插入图片描述

把console.log换成Message组件:

在这里插入图片描述



3.16 登录之后的操作

在这里插入图片描述

第一步:

在这里插入图片描述

第二步:

通过编程式导航跳转页面

在这里插入图片描述

新建一个hone.vue(登录成功后跳转的页面)

路由中导入,挂载,地址

在这里插入图片描述



3.17 登录后退出功能

在这里插入图片描述

第一步:

在home页总新增退出按钮,增加样式和事件

在这里插入图片描述



3.18 项目中ESLint语法报错处理

格式化和eslint产生语法冲突

在scr中新建 .pretterrc

在这里插入图片描述

然后到每个页面格式化代码,这样就拿捏了。


eslintrc.js配置文件详解及参考文档



3.19 优化按需导入的element组件

可以把导入的组件进行合并

优化前:

在这里插入图片描述

优化后:

在这里插入图片描述



3.20 本地代码提交到码云

vscode打开终端。新建终端,

1、Git status 查看情况

在这里插入图片描述

上面的文件是修改了的文件,下面的文件时新增的文件

2、 Git add. 添加到暂存区

git status 检查如下添加暂存区成功

在这里插入图片描述

3. Git commit -m “登录功能完成 ”

如图已提交到本地分支
在这里插入图片描述

4、git branch查看分支

在这里插入图片描述

5、把login代码合并到master分支

先使用Git checkout master切换到master分支

Git merge login 合并login分支

在这里插入图片描述

6.把本地仓库推送到码云中

Git push

在这里插入图片描述

打开码云查看ok:

在这里插入图片描述

7.把login分支也推送到码云中

先切换到login分支,

然后使用:Git push -u origin login(把本地子分支推送到云端)



4、主页布局和功能实现



4.1基本的主页布局

在这里插入图片描述

1.在home.vue组件中使用element组件页面布局容器直接使用:

先在element.js中注册组件

在这里插入图片描述

在这里插入图片描述

在home.vue中写结构和样式

在这里插入图片描述

在这里插入图片描述

效果图:

在这里插入图片描述



4.2 美化header区域

使用flex布局:

这些就比较容易了我不详细写了

最终效果:

在这里插入图片描述



4.3 实现导航栏的基本结构

效果图:
在这里插入图片描述



4.3 通过axios拦截器添加token验证

通过接口获取菜单的数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



4.4 获取左侧菜单栏数据

在接口文档中查看接口属性,如下

在这里插入图片描述

childern:二级菜单。

定义生命周期函数:

在这里插入图片描述

获取所有的菜单:
在这里插入图片描述

渲染左侧菜单数据:
在这里插入图片描述



4.5 通过双层for循环渲染左侧菜单

外层for循环渲染一级菜单

动态绑定id 动态绑定key值,v-for循环item,

在文本span中动态填充内容

在这里插入图片描述

第二层循环二级菜单:

循环item.children



4.6 为选中字体设置颜色,添加分类图标

把默认选中颜色黄色变成蓝色,

在这里插入图片描述

把默认图标改变

在这里插入图片描述

一级图标element-ui中没有,用阿里图标库中找,在数据中定义icon对象,然后动态填充进去:
在这里插入图片描述

接下来动态循环渲染进结构里:

在这里插入图片描述

添加文本和图标间距:

最终效果:

在这里插入图片描述



4.7 解决每次只能打开一个菜单栏和边框问题

利用element-ui的属性:

在这里插入图片描述

在这里插入图片描述

右侧突出是因为默认有边框,去除即可:

在这里插入图片描述



4.8 实现侧边栏的折叠与展开效果

1、添加折叠按钮,样式

在这里插入图片描述

在这里插入图片描述

给按钮绑定点击事件:

在这里插入图片描述

在mathods中定义方法:

element-ui提供:collapse方法,

在这里插入图片描述

定义iscollapse方法为true,点击按钮时调用此方法。

2、默认的动画很丑,element-ui中有关闭动画的属性:

在这里插入图片描述

动态绑定即可:

在这里插入图片描述

3、隐藏后的侧边栏背景色不变,原因是写的时候被width写死了

在这里插入图片描述

解决办法:

动态赋值,默认值为200px,点击后为64px

在这里插入图片描述

然后对应的方法:

利用三元表达式进行判断:

在这里插入图片描述



4.9实现首页路由重定向(子路由)

在前面的章节中我们也实现了重定向的功能,

需求是在home页面中实现welcome组件

1、在component中新建welcome页面,写好![结构![在这里插入图片描述](https://img-blog.csdnimg.cn/2021050914365787.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg2NTQ1OA==,size_16,color_FFFFFF,t_70)

在路由中导入组件:

在这里插入图片描述

实现welcome作为home的子组件:

redirect属性为重定向

在这里插入图片描述

在home主体位置放路由占位符

在这里插入图片描述

在占位符的位置展示子组件:

最后效果:

在这里插入图片描述



4.10实现侧边栏路由链接的改造

点击不同的二级菜单,实现子组件的跳转展示:

利用element组件中router属性:

在这里插入图片描述

定义属性:router=“true” 可以直接简写为true

在这里插入图片描述
建议不用id跳转,使用path地址跳转。

在这里插入图片描述



5、用户列表布局和功能实现



5.1 通过路由的形式展示用户组件列表

1、点击用户列表,在home主体区域展示用户列表区域

效果图:

在这里插入图片描述

2、新建user.vue(用户列表页面)及结构样式行为区域



3、通过路由把页面展示出来:

导入user组件

在这里插入图片描述

在home组件中定义子组件,在home的路由规则中定义user子组件规则:

在这里插入图片描述



5.2 在sessionStorage中保存左侧菜单栏

利用到element中导航菜单的default-active组件:

在这里插入图片描述

这里是写死的。

在这里插入图片描述

那咱们把他动态写入呢?

把当前点击展开的页面保存到sessionStrage中,通过获取sessionStrage的值来动态改变此属性

先给二级菜单绑定一个点击事件:

在这里插入图片描述

定义事件函数:

第一个activePath是函数名字,第二个是函数值

在这里插入图片描述

此时sessionStrage里面就保存了

在date定义被激活的链接地址:activePath然后动态插入到结构中去:

在这里插入图片描述

创建一生命周期函数方便直接使用this调用地址:

在这里插入图片描述

动态改变path值:

在这里插入图片描述

总结:

先把点击的值使用sessionStorage保存,然后再取出来动态赋值给二级菜单,通过element-u属性实现高亮的改变



5.3 绘制用户列表组件的基础布局结构

使用element-ui组件中的面包屑组件:

在这里插入图片描述

在这里插入图片描述

由于面包屑组件是第一次使用,所以要在element.js中按需导入:

在这里插入图片描述

然后注册:

在这里插入图片描述

按需优化:

在这里插入图片描述

下面的卡片视图区域:

写入结构之后在element.js中按需导入和注册:

在这里插入图片描述

优化样式:

在这里插入图片描述

接下来就是从element中找到文本框:

在这里插入图片描述

优化样式:

使用element样式:

在这里插入图片描述

最终效果:
在这里插入图片描述

总结:

绘制样式使用的element组件,在element.js中按需导入,注册,然后根需求使用对应的样式和属性,

步骤和过程重复我就没有详细一步一步写,之间的章节里写到了



5.4 获取用户列表数据

查看api接口

在这里插入图片描述

定义一些基本结构:date created(生命周期函数) methods(自定义函数)

在这里插入图片描述

使用方法是先在methods中定义函数,然后再结构中绑定事件,添加函数,

使用内置函数$http请求发起get请求:

在这里插入图片描述

pramas里面包含三个参数,可以直接在中括号中写

但还是推荐定义到date中

在这里插入图片描述

这样就会发起ajax请求,接下来get函数会返回一个promise函数,可以使用async和await简化操作。得到一个数据对象, 可以解析这个数据对象使用const接收,从而调用const

在这里插入图片描述

打印结果:

在这里插入图片描述

现在拿到数据,可以做赋值、先进行判断:

在这里插入图片描述

userlist和total要在date中定义



5.5 利用el-table组件渲染基本用户列表

在这里插入图片描述

按需导入组件,全局注册,通过:date指定数据源,添加结构,

最后效果:

在这里插入图片描述



5.6 为表格添加索引列

每个表格之前的序号,

在表格头部加一列,设置type=index。就是索引列的意思

在这里插入图片描述



5.7 自定义状态列的显示效果

使用作用域插槽:

在列表内部放一个模板,使用switch组件(按需导入,注册)绑定数据的属性值
在这里插入图片描述



5.8 通过作用域插槽渲染操作列

自定义插槽三个功能:使用图标按钮

在这里插入图片描述

在这里插入图片描述

效果:

在这里插入图片描述



5.9 实现分页效果

element有现成的组件。其中有函数需要定义:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最终效果:

在这里插入图片描述

通过调用pagesize= newsize来实现功能

在这里插入图片描述

把下面行为区新获取的函数写到date中的死数据中

最终两个函数的写法:

在这里插入图片描述



5.10修改用户状态修改

修改用户页面的时候,没有保存到后台数据库中,所以操作没有被保存,利用switch 的change函数,可以产生回调值,
在这里插入图片描述

定义userStateChanged函数:

在这里插入图片描述

查看文档可发现接口:

在这里插入图片描述

通过axios发起一个put请求。来实现用户状态的改变。

在这里插入图片描述

同理返回promise,可以简化,使用async和await简化:

然后判断并返回消息,

在这里插入图片描述



5.11 实现搜索功能

在文本框中输入文字,可以搜索到对应的文字,把文本框和date中的数据做双向绑定,

在文本输入框中使用v-model绑 定

在这里插入图片描述

然后给搜索按钮绑定单击事件,点击按钮发起查询用户请求在事件处理函数中调用getueserlist函数:

在这里插入图片描述

清空优化:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

绑定事件,定义处理函数,



6、 用户添加,修改,删除功能



6.1 渲染添加用户的对话框

使用elementui中的dialog的对话框,按需导入,全局注册。把ui结构 放到页面中:

在这里插入图片描述

添加用户的对话框:

需要定义一个布尔值,addDialogVisible 在date中定义此数据

默认false为隐藏

在这里插入图片描述

为添加按钮点击添加单机事件,绑定addDialogVisible为true 点击后对话框展示出ture,

在这里插入图片描述



6.2 渲染添加用户的表单

总结:

写出ui结构,然后再数据中写数据,验证规则

:rules:验证规则

:model:数据绑定对象,

定义数据,定义验证规则

实现效果:

在这里插入图片描述

1、用户

使用form表单。

定义addform数据,添加用户的表单数据

在这里插入图片描述

验证规则有两项:
在这里插入图片描述

2、密码,邮箱,手机
在这里插入图片描述



6.3 自定义邮箱和手机号的校验规则

form表单验证没有手机号和邮箱验证,

先定义两个规则,
在这里插入图片描述

每个规则中有三个参数,rule valu,cb(callback)

使用正则表达式,
在这里插入图片描述

在这里插入图片描述

定义完成之后,在使用时使用validator来完成调用规则

trigger来实现什么时候点击调用

在这里插入图片描述



6.4 实现添加表单的重置操作

在对话框关闭之后重置对话框

给添加用户的对话框添加close事件

在这里插入图片描述

添加事件定义:

在这里插入图片描述

拿到表单的ref引用调用resetFields( )



6.5 实现添加用户前的表单预验证

在这里插入图片描述

在点击确定的时候对表单进行预验证,在确定按钮上绑定事件:

在这里插入图片描述

this.$refs.addformREef.表单的引用对象。

在这里插入图片描述



6.6 调用api接口完成添加用户的操作

API接口:

在这里插入图片描述

在这里插入图片描述

先用get发起请求,然后使用const接受发送回来的回调函数,判断服务器是否返回数据(通过201判断,)返回数据后隐藏对话框,重新获取用户列表刷新数据。



6.7 展示修改用户的对话框

效果图:

点击修改按钮后弹出对话框

在这里插入图片描述

找到修改按钮绑定事件:

在这里插入图片描述

定义事件:
在这里插入图片描述

写出对话框的结构:

在这里插入图片描述

定义其中属性的默认布尔值:

在这里插入图片描述

在编辑按钮定义点击事件,把布尔值赋值为ture,这样点击的时候才有效果



6.8 根据id查询对应的用户信息

先拿到用户的id,通过形参的方式,在修改按钮的单击事件中,通过作用域插槽,来拿到数据,

在这里插入图片描述

在修改按钮中有shoeEditDialog(scope.row.id)其中的形参就是拿到的id

在这里插入图片描述

在这里插入图片描述

发起get请求,

在这里插入图片描述

结构赋值简化promise,进行判断,显示提示消息:

在这里插入图片描述

定义对象:

在这里插入图片描述



6.9 渲染修改用户的表单

使用element表单验证,用户名,邮箱,手机号。按需要修改。

通过v-model双向绑定数据,:rules是验证规则, prop是校验规则,

先定义表单验证规则对象。

在这里插入图片描述

表单的验证规则:

在这里插入图片描述



6.10实现修改用户表单的重置操作

修改表单后,关闭应该重置,在修改用户事件上绑定函数:
在这里插入图片描述

定义函数:监听修改用户对话框的关闭事件,拿到表单的引用名称,然后关闭窗口。

在这里插入图片描述



6.11 完成提交修改前的表单预验证

点击确定之前,先对表单预验证。

确定按钮,绑定一个处理函数

在这里插入图片描述

定义函数:
在这里插入图片描述



6.12 提交表单完成用户信息的修改

API:

在这里插入图片描述

发起http请求,获取数据,关闭对话框,刷新数据列表

在这里插入图片描述



6.13 弹出询问框询问用户是确认删除数据

点击删除的时候需要弹出对话框是否需要删除数据
在这里插入图片描述

elementui里面有一个组件 message box组件

在element.js中导入message box 然后全局挂载,比较特殊:

在这里插入图片描述

为删除按钮绑定事件。

在这里插入图片描述

定义处理函数:

根据id删除对应的信息(先弹框提示)
在这里插入图片描述

然后使用const接受对象。优化promise

在这里插入图片描述

.catch 捕获错误,然后return出去

在这里插入图片描述

判断点击的是取消还是确定。最后弹出确认提示框

在这里插入图片描述



6.14 调用api完成删除用户的操作

API:

在这里插入图片描述
发起请求,删除,然后判断是否删除成功,成功之后刷新用户列表:

在这里插入图片描述



6.15 创建user子分支并把代码推送到码云

Git branch 查看当前分支

Git checkout -b user 切换到user分支上

git branch 查看代码 代码就被切换到user分支了

git status 检查当前分支状态、

git add. 添加到暂存区

git commit -m “完成用户列表功能的开发”

所有用户列表代码都提交到了user分支,

目前云端是没有user分支的,所以要把本地的分支推送到云端

Git push -u origin user 把本地user分支推送到origin上

用户名是邮箱,密码是账号密码

云端刷新之后就可以看到user

git checkout master 切换到主分支

Git merge user 把user的代码合并到主分支。

git push 把本地代码推送到云端



6.16 创建rights子分支并推送到码云

创建下一节的权限列表代码

Git branch检查当前分支

git checkout -b rights 创建right分支

Git branch 查看

git push -u origin rights 第一次把rights分支推送到云端。



7、权限列表



7.1通过路由展示权限列表组件

1、先创建 power文件夹里面写入Rights.vue 初始化代码结构

在这里插入图片描述

在路由中导入文件:

在这里插入图片描述

在home路由的子路由规则中定义子路由,组件就能通过路由的形式加载出来

在这里插入图片描述



7.2 绘制面包屑导航和卡片视图

效果图:

在这里插入图片描述

面包屑导航:

在这里插入图片描述

卡片视图:

在这里插入图片描述



7.3 调用API获取权限列表的数据

API接口:

在这里插入图片描述

先定义date数据,放一个rightsLists(权限列表)

在这里插入图片描述

定义方法:请求数据,判断是否成功,成功则返回数据

在这里插入图片描述

这样就获取到列表了,下节渲染列表



7.4 渲染权限列表UI结构

stripe隔行变色:

el-tag标签需要在element.js中注册,

按需展示,使用v-if判断。

在这里插入图片描述



7.5 角色,权限,用户 三者关系

在这里插入图片描述



8、角色列表



8.1 通过路由展示角色列表组件

在power中新建一个roles.vue(角色列表)初始化基本结构:

在这里插入图片描述

在路由中加载导入:

在这里插入图片描述

在这里插入图片描述



8.2 绘制基本布局结构并获取列表数据

效果图:

在这里插入图片描述

面包屑导航:

在这里插入图片描述

卡片视图:

在这里插入图片描述

API:

在这里插入图片描述

渲染数据:

定义数据date:

在这里插入图片描述

生命周期函数:

在这里插入图片描述



8.3 渲染角色列表数据

先渲染索引列:

在这里插入图片描述

优化样式:

在这里插入图片描述

在索列之前加和 展开列:

在这里插入图片描述



8.4 说明角色列表需要完成的功能模块


现在还没有具体的样式,后面会写

角色信息的添加,删除功能前面做了,所以这里就不写了


点击对应按钮出现对应的弹出层,然后执行对应的操作。



8.5 分析角色下权限渲染的思路

在展开行中拿到渲染的数据

在请求数据列表中返回了数据children,通过作用域插槽来拿

在这里插入图片描述

实现效果:

在这里插入图片描述

拿到数据之后通过三层for循环渲染出对应的ui结构



8.6 通过第一层for循环渲染一级权限

先做一下栅格布局,区分出三个区域用来放三层for循环:



scope.row是当前对象的数据。 .children 是一级权限的数据, :key每次循环绑定一个唯一的key值,通过插值表达式渲染出数据

在这里插入图片描述

放在el-tag标签中美化样式

在这里插入图片描述



8.7 美化一级权限

思路:

每行之间隔开距离,给每行放一个buttom的边框,第一行放一个top边框(这里使用三元表达判断) 加图标

在这里插入图片描述

每行都放buttom,利用三元表达式,如果i1===0.则bdtop否则空

在这里插入图片描述



8.8 通过二层for循环渲染二级权限

使用栅格布局分出2级权限和3级权限,,方法和之前的一样。

在这里插入图片描述

添加边框 线(上边框)第一个不添加,利用三元表达式判断:

在这里插入图片描述

动态绑定class类,然后判断

在这里插入图片描述

最终效果:

在这里插入图片描述



8.9 通过第三层for循环渲染三级权限

栅格布局:

注使用item2的children

在这里插入图片描述

通过作用域插槽拿到数据 children 拿到子组件数据,通过栅格分隔样式,动态绑定边框值。



8.10 美化角色权限下的UI结构

设置最小宽度:

设置body的最小宽度为1366px

在这里插入图片描述

角色列表设置居中:

定义一个类:哪里用到往哪里加

在这里插入图片描述

最后把代码插槽删了



8.11 点击删除权限按钮弹出确认提示框

使用element组件中的可移除标签属性:

在这里插入图片描述

closable属性:

在这里插入图片描述

绑定点击事件:

removeRightById:

在这里插入图片描述

定义事件:

在这里插入图片描述

然后弹框提示用户是否要删除,使用的还是element组件L

在这里插入图片描述

catch捕获错误:
在这里插入图片描述

结果判断用户操作:

在这里插入图片描述

这里只是打印了结果,没有向后端发起请求。



8.12 完成删除角色下指定权限的功能

上一节点击了删除按钮后需要向后端发起删除的请求,删除用户在数据库中的权限:

API:

在这里插入图片描述

发起delect请求:

先把item3.id传进去:

在这里插入图片描述

在处理函数的形参中j接收一下:

在这里插入图片描述

然后再发起delect请求的时候用之前的参数字符串拼接

然后进行判断:

在这里插入图片描述

有个缺点:删除之后展开栏就被关闭了 解决办法:

在这里插入图片描述

把close权限赋值给一级标签二级标签

在这里插入图片描述



9、分配权限 角色



9.1 弹出分配权限对话框并请求权限数据

点击按钮弹出分配权限。为分配权限按钮绑定click事件
在这里插入图片描述

定义事件:

在这里插入图片描述

写分配权限对话框的结构:

在

在date中定义数据布尔值:
在这里插入图片描述

api:

在这里插入图片描述

在这里插入图片描述



9.2 初步配置并使用el-tree树形控件

写出基本结构:使用el-tree组件,按需导入

在这里插入图片描述

需要在date中定义组件属性:

在这里插入图片描述



9.3 优化树形控件的展示效果

控件前面有一个复选框,使用树形控件的属性首位-checkbox和
在这里插入图片描述

默认展开所有节点:
在这里插入图片描述



9.4 分析已有权限默认勾选的实现思路

element-ui属性:

在这里插入图片描述

写入属性和定义数组

在这里插入图片描述



9.5 加载当前角色已有的权限

点击按钮的同时,把所有权限的三级权限获取出来,动态绑定到刚刚的数组上

定义一个递归函数,把三级权限的id保存到数组中,把数组赋值,

定义递归函数:
在这里插入图片描述

调用递归函数:在点击分配按钮中调用



9.6 在关闭对话框是重置defKEYS数组

监听对话框的关闭事件:

在这里插入图片描述

定义事件:

在这里插入图片描述



9.7 调用API完成分配权限功能

把勾选的状态都发送到服务器保存:

API:

在这里插入图片描述

两个函数:

在这里插入图片描述

绑定事件,确定函数:

在这里插入图片描述

… (展开运算符):

在这里插入图片描述

拼接字符串:

在这里插入图片描述

拿到角色的id保存到date中 :

在这里插入图片描述

在date中定义id:

在这里插入图片描述

动态写入id:

在这里插入图片描述

判断是否成功:刷新列表,隐藏对话框:

在这里插入图片描述



9.8 渲染分配角色对话框并请求角色

写出基本的对话框结构:

在这里插入图片描述

定义显示与隐藏的对话框:

在分配角色按钮绑定事件。n默认为false

把信息传进去用户信息

使用scope.row:

在这里插入图片描述

拿到userinfo后:

拿到

拿到之后在date中定义一个新的date对象:

在这里插入图片描述

把userinfo展示到页面上:通过插值表达式

在这里插入图片描述

点击按钮的时候把所有角色的对话列表展示出来

获取角色列表:

在这里插入图片描述

优化之后:判断渲染:在date中定义一个新的数据,

在这里插入图片描述

在这里插入图片描述



9.9 渲染角色列表的select下拉菜单

select组件:先在elemen.js中按需导入和注册js

在这里插入图片描述

for循环生成选项:
在这里插入图片描述

value是保存的实际值

定义数组:已选中的角色id值
在这里插入图片描述



9.10 完成分配角色的功能

为确定按钮绑定事件处理函数:
在这里插入图片描述

定义函数:判断用户是否分配新的角色

在这里插入图片描述

对话框关闭之后重置数据

在这里插入图片描述



9.11 提交本地代码到GIT仓库并推送代码

Git add。添加到暂存区

git commit -m “权限功能的开发

git push 推送代码

把 rights代码合并到主分支

Git checkout master 切换到主分支

Git merge rights 合并到主分支 ,云端检查。over



10、商品分类



10.1 介绍商品分类功能的作用

在这里插入图片描述

效果图:

在这里插入图片描述

三级子分类:可以添加和删除分类:

在这里插入图片描述



10.2 创建goods-cate子分支并push到码云

Git branch 查看当前分支

Git checkout -b doods_cate穿创建新分支

Git branch 查看当前分支

Git push -u orgin goods_cate 在云端中新建goods_date分支



10.3 通过路由加载商品分类组件

创建cate.vue,创建结构,行为,样式

在这里插入图片描述

在路由中加载,注册称为children子路由:
在这里插入图片描述



10.4 调用API获取商品分类列表数据

面包屑导航:
在这里插入图片描述

添加分类按钮:

在这里插入图片描述

效果:

在这里插入图片描述

通过api调用数据:


定义数组catslist数组 写函数,定义函数,created生命周期函数

在这里插入图片描述

queryInfo():查询条件

查询请求:

在这里插入图片描述

返回函数,判断请求:

在这里插入图片描述

total需要定义数组:

在这里插入图片描述



10.5 初步使用vue-table-with-tree-grid

利用第三方插件:

在这里插入图片描述

在main.js中导入第三方模块
在这里插入图片描述

全局注册:
在这里插入图片描述

columns:标题

prpo:具体的值

在这里插入图片描述

隐藏前面的复选框:

在这里插入图片描述

使用属性修改:



10.6 使用自定义模板列渲染表格数据

使用作用域插槽

在这里插入图片描述



10.7 渲染排序和操作对饮的ui结构

首先先定义数据:
在这里插入图片描述

在表格区域中定义模板:

然后渲染数据:

在这里插入图片描述

修改样式:

使用type属性

在vue中按需渲染使用v-if

在这里插入图片描述

美化图标:

在这里插入图片描述



10.8 实现分页功能

绑定事件处理函数:

在这里插入图片描述

在methods中绑定处理函数:

在date中赋值:
在这里插入图片描述

发起数据请求:

在这里插入图片描述

第二个函数:

在这里插入图片描述

第三个:当前页面的展示:

current-change:

在这里插入图片描述



10.9 渲染添加分类添加分类的对话框和表单

点击添加按钮弹出添加对话框:

在卡片视图区域:添加分类的对话框

ui结构:

在这里插入图片描述

优化之后:

添加date:
在这里插入图片描述

在这里插入图片描述

绑定点击事件:

在这里插入图片描述

新增事件处理函数:

在这里插入图片描述

描写弹出框的内容:

在这里插入图片描述

定义数据:

在这里插入图片描述

优化:
在这里插入图片描述

双向绑定数据:

在这里插入图片描述

定义验证对象规则:

在这里插入图片描述



10.10 获取父级分类数据列表

效果图:

在这里插入图片描述

API:
在这里插入图片描述

添加函数:

在这里插入图片描述

发起get请求:

在这里插入图片描述

在点击展开对话框的时候调用此函数:

在这里插入图片描述

简化异步操作:解构promise,判断验证。

在这里插入图片描述

成功之后就保存在date中

在这里插入图片描述

赋值到date中:

在这里插入图片描述



10.11 渲染级联选择器

使用组件:

在这里插入图片描述

按需导入,全局注册

先写入结构

在这里插入图片描述

在这里插入图片描述

使用其中属性:

props配置

在这里插入图片描述

在这里插入图片描述

在date中定义propes:
在这里插入图片描述

定义双向绑定函数:

在这里插入图片描述

改变之后需要在选择框中打印出来:

在这里插入图片描述

选中一级分类使用

在这里插入图片描述



10.12 根据父分类的变化,处理表单中的数据

输入数据的时候要监听下面是一级分类还是默认的,如果是一级分类添加的数据会是此一级分类下面的二级分类

判断:

在这里插入图片描述

在这里插入图片描述

点击确定按钮拿到数据

在这里插入图片描述

在这里插入图片描述



10.13 在对话框的close事件中重置表单数

对话框关闭,数据清空

绑定关闭函数:

在这里插入图片描述

定义函数:

重置表单:

清空数组:

在这里插入图片描述



10.14 完成添加分类的操作

api:

在这里插入图片描述

添加按钮的事件处理函数:

预验证:回调函数拿到数据

判断优化:

在这里插入图片描述

在这里插入图片描述



10.15 将goods-cate分支提交代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



10.16 创建goods-params分支

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



11、分类参数



11.1 介绍分类参数功能的作用

在这里插入图片描述

在这里插入图片描述

只允许选择三级分类:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



11.2 通过路由加载分类参数组件

新建组件页面,初始化:

在这里插入图片描述

在路由中导入:子路由组件规则:

在这里插入图片描述



11.3 渲染分类参数页面的基本ui结构

面包屑,卡片视图 table栏

在这里插入图片描述

面包屑:

在这里插入图片描述

黄色提示框:按需导入,全局注册

在这里插入图片描述

自定义关闭按钮:

在这里插入图片描述

带icon:

在这里插入图片描述

选择商品区域:

在这里插入图片描述

添加样式:

上下边框:



11.4 调用API获取商品分类数据列表

API:

在这里插入图片描述

get请求:

定义数组:

在这里插入图片描述

定义函数:

在这里插入图片描述

打印出来



11.5 渲染商品分类的级联选择框

options:数据属性

渲染结构:

在这里插入图片描述

在date中定义数据:

在这里插入图片描述

事件处理函数:

在这里插入图片描述



11.6 控制级联选择框的选中范围

只允许三级分类。监听选择器的change事件,判断长度,如果长度是3就是选择三级

在change中判断数组长度:
在这里插入图片描述



11.7 渲染分类参数的Tabs页签

tabs标签页:

在这里插入图片描述

全局注册,按需导入

在这里插入图片描述

注册数据:first:

在这里插入图片描述

定义事件:

在这里插入图片描述

修改名称:

在这里插入图片描述



11.8 渲染添加参数按钮并控制按钮的禁用

添加按钮:

在这里插入图片描述

如果商品分类选中则启用按钮框

在这里插入图片描述

定义函数:判断数组length===3

在这里插入图片描述

属性绑定:
在这里插入图片描述



11.9 获取参数列表数据

改变一下按钮的属性:only和many

在这里插入图片描述

在date定义many

在这里插入图片描述

在选择之后的change事件中发起数据请求:

选择三级分类之后获取参数:

在这里插入图片描述

在这里插入图片描述

判断:简化promise请求:

在这里插入图片描述



11.10 切换Tabs面板后重新获取参数列表

把获取数据单独定义一个函数:

在这里插入图片描述

在这里插入图片描述



11.11 将获取到的参数数据挂载到不同的数

获取到的数据只有一份,先判断是动态还是静态的数据:

在这里插入图片描述

定义两个date:

在这里插入图片描述



11.12 渲染动态参数和静态属性的Tables

刚刚拿到数据:

在动态参数里面拿到数据

展开行;索引列:名称列,操作列,

在这里插入图片描述

在这里插入图片描述

静态的复制就行:修改数据:

在这里插入图片描述



11.13 渲染添加数据的对话框

效果图:

在这里插入图片描述

这里因为动态面板和静态面板都是一样的,所以可以用一个结构

渲染结构:添加参数的对话框

在这里插入图片描述

优化后:

在这里插入图片描述

定义数据:

在这里插入图片描述

定义方法:
在这里插入图片描述

点击按钮之后,显示对话框。 绑定点击事件。

在这里插入图片描述

在这里插入图片描述

添加参数的对话框结构:

在这里插入图片描述

优化之后:

定义数据:

在这里插入图片描述

定义函数:
在这里插入图片描述

关闭对话框之后取消数据

绑定关闭事件:

在这里插入图片描述

定义事件:

重装方法:resetFields

在这里插入图片描述



11.14 完成动态参数和静态属性的添加操作

先进行表单的预校验,然后再提交数据请求:

API:

在这里插入图片描述

绑定事件处理函数:

在这里插入图片描述

定义函数:

在这里插入图片描述



11.15 渲染修改参数的对话框

效果图:

在这里插入图片描述

使用添加对话框赋值修改一些参数就是了

修改按钮绑定单机事件
在这里插入图片描述

在这里插入图片描述

定义此函数:

在这里插入图片描述

在这里插入图片描述

对话框ui结构:把addDialogvisible改成editdislogvisilbe

在这里插入图片描述

关闭之后函数:

在这里插入图片描述

添加率数据:

在这里插入图片描述

在这里插入图片描述

editparams点击按钮修改参数:

在这里插入图片描述



11.16 完成修改参数的操作

API:
在这里插入图片描述

编辑按钮传参:
在这里插入图片描述

点击按钮的时候发起请求:

在这里插入图片描述

然后解析。判断:

在这里插入图片描述

赋值:

在这里插入图片描述

在这里插入图片描述

点击确定时:获取数据,发起请求;

判断,优化promise
在这里插入图片描述

在这里插入图片描述



11.17 完成删除参数的业务逻辑

点击删除按钮,产生事件

先绑定事件:
在这里插入图片描述

定义事件处理函数:

根据id删除对应的数据

在这里插入图片描述

判断,优化:

在这里插入图片描述



11.18 渲染参数下的可选项

效果图:最下面一层数据项

在这里插入图片描述

服务器返回的数组是用空格隔开,我们需要把数组进行分隔,然后for循环遍历之后渲染在页面上

在这里插入图片描述

在这里插入图片描述

循环数组分隔:

在这里插入图片描述

在展开行中使用作用域插槽接受,for循环,插入数据:

在这里插入图片描述



11.19 解决attr -vals为空字符串时候的小问题

在for循环的时候数组分隔赋值了,应该判断一下:判断他是否为空字符串,如果是空字符串,不进行分隔,

在这里插入图片描述



11.20 控制按钮与文本框的切换显示

new tag :

在这里插入图片描述

利用element-tag标签:

在展开行中:

在这里插入图片描述

优化:v-if结构之后:

定义数据:

在这里插入图片描述

定义函数:

在这里插入图片描述

在这里插入图片描述



11.21 为每一行数据提供单独的inputVisib

点击添加按钮之后:两行都连动了
在这里插入图片描述

添加一个布尔值来控制框的显示与隐藏,

在这里插入图片描述

每一行数据都有自己的布尔值和

单独定义布尔值

在这里插入图片描述



11.22 让文本框自动获得焦点

在这里插入图片描述

$nexttick方法作用:

在这里插入图片描述



11.23 实现文本框与按钮的切换显示

把inputva变成false:

把获取的参数传进去:

在这里插入图片描述

在这里插入图片描述

然后再事件处理函数中接受参数:

在这里插入图片描述

清空内容:需要判断内容是否为空

在这里插入图片描述



11.24 完成参数可选项的添加操作

回车或者失去焦点的时候就会回调函数:

在这里插入图片描述
同时需要隐藏输入框,布尔值改为false

发起http请求:

API:

在这里插入图片描述

发起请求:

在这里插入图片描述

优化请求:

在这里插入图片描述

判断请求是否成功
在这里插入图片描述

监听文本输入框失去焦点的函数,

在输入框中没有return出去,就把输入框中的内容保存在一个数组中,然后就发起带参数的http请求:

把需要的参数提交到服务器



11.25 删除参数下的可选项

触发tag标签的close事件
在这里插入图片描述

定义函数:

在这里插入图片描述

把内容保存到数组中:

在这里插入图片描述

在这里插入图片描述

调用此函数:
在这里插入图片描述



11.26 清空表格数据

商品分类值允许选择三级分类,不能选择一级二级标签:

选中不是三级事件,清空选择器

在这里插入图片描述

优化此函数:

在这里插入图片描述



11.27 完成静态属性表格中展开行效果

静态属性表格复制动态的即可
在这里插入图片描述



11.28 将本地goods-params分支代码提交到码云

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

推送成功

在这里插入图片描述

合并注分支:

在这里插入图片描述

git push 推送主分支



11.29 创建goods-list子分支并推送到码云

创建分支:


在这里插入图片描述



12、商品列表



12.1 通过路由加载商品组件列表

新建list.vue:

初始化结构行为样式:
在这里插入图片描述

在router.js中导入组件:
在这里插入图片描述

然后全局注册:

在这里插入图片描述

效果图:

在这里插入图片描述

面包屑导航:
在这里插入图片描述

卡片视图区域结构:使用栅格布局

在这里插入图片描述

button按钮:

在这里插入图片描述

最后效果:

在这里插入图片描述



12.2 获取商品列表数据

API:

在这里插入图片描述

定义事件处理函数:

在这里插入图片描述

在这里插入图片描述

定义数据:
在这里插入图片描述

发起请求:

在这里插入图片描述

定义数组:

在这里插入图片描述

调用数据:

在这里插入图片描述



12.3 渲染商品表格数据

在这里插入图片描述

优化之后:

在这里插入图片描述



12.4 自定义格式时间的全局过滤器

在main.js中注册:

事件处理函数:

在这里插入图片描述

在这里插入图片描述

字符串用小括号包起来,然后调用方法:

拼接成一个字符串。
在这里插入图片描述

改造ui结构:

在这里插入图片描述



12.5 实现商品列表的分页功能

使用element-ui的分页功能:

在这里插入图片描述

先定义handleSiechange函数:

触发函数,可以拿到最新的页数:
在这里插入图片描述

优化之后:

在这里插入图片描述



12.6 实现搜索与清空的功能

点击搜索按钮,查询到对应内容:在输入框中双向绑定数据:
在这里插入图片描述

调用数据函数:

在这里插入图片描述

清空操作:使用clearable属性,并且清空所有数据操作
在这里插入图片描述



12.7 根据id删除商品数据

点击删除按钮弹出对话框

找到删除按钮绑定点击按钮事件
在这里插入图片描述

定义删除事件:
在这里插入图片描述

判断提示消息:
在这里插入图片描述

优化promise:

在这里插入图片描述



12.8 通过编程式

新建页面组件,初始化结构,
在这里插入图片描述

在路由中导入,注册:

点击添加按钮,跳转页面:添加事件:

在这里插入图片描述

在这里插入图片描述



13、商品添加

这部分和前面几章的思路是一样的,我就没有具体写了



13.1 渲染添加页面的基本结构



13.2 美化步骤条组件



13.3 渲染tab栏区域



13.4 实现步骤条和tab栏的数据联动效果



13.5 分析表单的组成部分



13.6 绘制基本信息面板的ui结构



13.7 获取商品分类数据



13.8 绘制商品分类的级联选择器



13.9 只允许选中三级商品分类



13.10 阻止页签切换



13.11 获取动态参数列表数据



13.12 绘制商品参数面板中的复选框组



13.13 优化复选框的样式



13.14 获取静态属性列表数据



13.15 渲染商品属性面板的ui结构



13.16 初步使用upload上传组件



13.17 手动为upload组件绑定headers请求



13.18 监听upload组件的on-success事件



13.19 监听upload组件的on-remove事件



13.20 实现图片的预览效果



13.21 安装并配置vue-quill-edito



13.22 实现表单数据的预验证



13.23 把goods-cat从数组转化为字符串



13.24 处理attrs数组



13.25 完成商品添加操作



13.26 将goods-list分支的代码合并推送



13.27 创建order子分支



14、订单列表

这部分和前面几章的思路是一样的,我就没有具体写了



14.1 通过路由渲染订单列表页面



14.2 根据分页获取订单数据列表



14.3 渲染订单table表格



14.4 实现分页功能



14.5 实现省市区数据联动效果



14.6 展示物流进度对话框并获取物流信息



14.7 手动导入Timeline组件



14.8 将本地的order分支的代码合并并且推送



14.9 创建report子分支



15、Echarts数据统计



15.1 通过路由架子啊数据报表组件

效果图:

在这里插入图片描述

新建vue ,在路由中导入注册:
在这里插入图片描述

在这里插入图片描述

注册为子路由:
在这里插入图片描述

面包屑导航和卡片视图:

在这里插入图片描述



15.2 安装Eharts并渲染Demo图表

在可视化面板中安装echarts组件:在官网中学习(安装)
在这里插入图片描述

1、导入echart
在这里插入图片描述

2、

在这里插入图片描述
3、调用init函数:

在monted函数中初始化init函数:此时页面上的函数已经被加载完毕

在这里插入图片描述

4、准备数据项:
在这里插入图片描述

5.把option数据设置为mychart的图形:
在这里插入图片描述

API:

在这里插入图片描述



15.3 获取折线图数据并渲染图表

发起get请求,简化异步操作,判断:
在这里插入图片描述

返回的res可以在下面直接调用;

需要合并options:
在这里插入图片描述

使用lodash合并两个对象:

lodash提供了一个merge对象可以合并两个参数

在这里插入图片描述



15.4 将本地的report分支合并并且推送到码云

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Git push



16、项目优化



16.1 介绍项目优化的策略

在这里插入图片描述



16.2 通过nprogress添加进度条效果

在这里插入图片描述

安装依赖:

在这里插入图片描述

按文档操作:

导入对应的包:

在这里插入图片描述

导入对应的js和css:

在这里插入图片描述

添加拦截器:隐藏进度条

在这里插入图片描述

在这里插入图片描述



16.3 解决serve命令中提示的ESLint语法错误

终端提示警告:

在这里插入图片描述

在这里插入图片描述

找到文件错误的路径,修改错误

定义之后没有使用会报错,删除即可

如果eslint和代码格式化出现冲突,可以修改eslint语法格式,在scr下:

在这里插入图片描述

新增配置:

每行最长字符:

在这里插入图片描述

eslint只能使用驼峰命名,不能使用下划线命名



16.4 在执行build命令期间移除所有的console

出现

出现警告12个,需要修改

在产品发布阶段不能出现consloe打印

单独配置一个插件

使用到插件:babel-plugin-transform-remove-console

在这里插入图片描述

打开npm:
在这里插入图片描述

在依赖中找到:

在这里插入图片描述

安装:

在babel。config中配置。在plugins中配置:

在这里插入图片描述

运行之后成功。

全局共享



16.5 只在发布阶段移除所有的console

上面的操作在开发阶段也会失去console

先定义一个数组:默认是空的

在这里插入图片描述

开发阶段会执行命令:

在这里插入图片描述

发布阶段会执行:

在这里插入图片描述

mode的值不同:

判断就ok:

上面写死的就用展开运算符:
在这里插入图片描述



16.6 生成打包报告

在这里插入图片描述

任务-bulid:

在这里插入图片描述

分析面板:

饼状图可以看出各部分的体积:
在这里插入图片描述

项目总体是2m,依赖包占1.9m
在这里插入图片描述

速度统计:

在这里插入图片描述

资源:

在这里插入图片描述

第一个太大了,



16.7通vue.config.js修改webpack的默认

在这里插入图片描述

在项目中找不到配置文件:

在这里插入图片描述

在这里插入图片描述

定义配置文件:vue.config,js 定义文件可以写在里面

在这里插入图片描述



16.8 介绍configureWebpack与chainWebpack

在这里插入图片描述

在这里插入图片描述



16.9 通过chainWebpack自定义打包入口

写在vue.config.js中

在这里插入图片描述

上三行是产品开发阶段后三段是发布阶段

把main.ji改成main-dev.js

把文件复制到main-prod.js中,就有两个默认入口

爱vue.config.js中调用config的函数判断处于什么模式:
在这里插入图片描述

执行对应情况:

开发阶段:

在这里插入图片描述

发布阶段:

在这里插入图片描述

在这里插入图片描述



16.10 通过extemals加载外部CDN资源

在这里插入图片描述

在这里插入图片描述

键值对的形式:在此处写的包,不会直接打包,会在window全局中找此对象,然后直接使用

在这里插入图片描述

在window全局中查找之后直接使用,不会放到打包的包里面

可以直接把样式放到index.html中
在这里插入图片描述

在这里插入图片描述

js文件也需要在index.html中应用
在这里插入图片描述



16.11 external的效果

依赖项明显减少:

在这里插入图片描述



16.12 通过CDN优化ElementUI的打包

在这里插入图片描述

在index.html中粘贴:

在这里插入图片描述

把mani.js中按需导入的js注释掉:

在这里插入图片描述

直接从全局加载。



16.13 自定制首页内容

在这里插入图片描述

在这里插入图片描述

模板结构:

在这里插入图片描述

使用三元表达式判断:

在这里插入图片描述



16.14 实现路由懒加载

在这里插入图片描述

使用方法:

在这里插入图片描述

使用方法:

在这里插入图片描述

安装插件:
在这里插入图片描述

配置插件:在babel.comfig.js中配置

在这里插入图片描述

每个组件都改造成懒加载的形式,第一个参数是用这个参数来接受

中间注释部分是合并之后的分组名称,最后面是路由地址

没有改造之前:

在这里插入图片描述

改造之后:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



17、项目部署上线



17.1 解决打包之后角色列表数据不显示的

在这里插入图片描述

运行链接,把项目跑起来

在这里插入图片描述

没有数据显示,在xhr中查看

在这里插入图片描述

已经拿到数据,没有渲染到页面中:具体错误

在这里插入图片描述

在这里插入图片描述



17.2 通过node创建web服务器



17.3 开启文件的Gzip网络传输压缩



17.4 配置HTTPS服务



17.5 使用pm2管理应用



版权声明:本文为weixin_44865458原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。