注意: 不包含Vuex,其他都包含
-- Vue前置知识
Es6模块化
默认导出
let n1 = 10
let n2 = 20
function show() {}
export default {
n1,
show
}
// export default {
// n2
// }
默认导入
import m1 from './01.默认导出.js'
console.log(m1)
Promise
async/await
EventLoop
宏任务和微任务
总结
- yarn 的安装
知识点自测
-- Webpack
为什么学习webpack
webpack概述
环境准备
webpack的基础使用
webpack再次打包
webpack配置入口与出口
yarn build 执行过程分析
隔行变色案例
html-webpack-plugin插件
webpack默认只能处理js文件
css-loader处理css文件,style-loader将css代码插入<style
>中
less-loader识别less文件,less模块包转换less文件
webpack处理图片
图片转base64优缺点
webpack处理字体图标
webpack-Es6转Es5语法降级
webpack开发服务器的优势
webpack-dev-server开发服务器
webpack配置服务器端口号
今日总结
-- Vue
为什么学习Vue
Vue框架的概念
Vue的学习方式
- Vue-cli脚手架的介绍
全局安装vue-cli脚手架
使用vue-cli创建项目和运行项目
vue-cli项目文件夹介绍
项目入口和文件夹的关系
在webpack.config.js中配置端口
lintOnSave关闭Eslint检查
Vue单文件的好处
清理Vue项目文件-并初始
- Vue基础指令
{{ }} 插值表达式
MVVM 设计模式
v-bind 属性绑定
v-on事件绑定
v-on事件对象 $event
v-on 事件修饰符
v-on 按键修饰符
v-model基础用法
v-model更多用法
v-model 修饰符
v-str 和 v-html
v-show 和 v-if
v-for 遍历
- Vue计算属性.侦听器.过滤器
v-for 数组变更方法和非变更方法
v-for 就地更新DOM结构
虚拟DOM是如何更新真实DOM的
- diff算法
diff算法比较新旧DOM
diff算法是如何对比的
无key更新,性能不高
有key值为index,就地更新
有key值为ID, 比较之后更新
- v-bind:class 和v-bind:style
v-bind:class 动态绑定类样式
v-bind:style 动态给属性设置样式
增删案例
- filter过滤器
filter 过滤器的基础使用
filter 过滤器传参
- computed计算属性
computed 计算属性的基本使用
computed和methods的区别与优势
案例 - 品牌统计
computed 完整写法
computed 全选和反选案例
- watch侦听器
wacth侦听器的基本使用
deep:true深度监听,immediate:true立即执行
案例-监听数据本地化储存
- Vue组件
component组件的基本使用
全局组件和局部组件
组件的概念
style上的scoped的具体作用
- 组件通信
父向子传值
循环创建多个子组件
单项数据流的弊端
子向父传值 - 通过自定义事件触发
EventBus事件中心
原理:事件中心本质就是一个空的vue对象,
A组件 - 事件发布方:通过EventBus.$emit发布自定义事件,给回事件中心
B组件 - 事件接收方:通过EventBus.$on接收自定义事件,来进行最终处理。
vue组件 - todo案例
- 生命周期
生命周期的概念
生命周期的各个阶段
created 初始化阶段
mounted 完成DOM挂载完成
update DOM更新完
destroyed 销毁阶段
- axios 数据请求库
最基础的GET 请求
GET携带参数 - params查询数据
在params中传递get查询参数, bookname是接口规定的,将自己双向数据绑定的书名传递,并查看查询结果
POST添加数据 - data中传递数据
POST与GET不同, GET是在params携带数据, 而POST是在data中,是一个请求对象
axios.defaults.baseURL请求根路径
$refs
1:在标签上使用 ref关键字指向='变量名' 2:在组件内使用this.$refs.变量名,就能获取该元素实例
$nextTick 会在DOM更新后执行
$nextTick实际使用场景
因为this.$nextTick返回的是promise对象,自然可以使用async方法来修饰
组件name的实际价值
- 组件化案例 - 购物车
项目初始化
模块化项目,下载第三方所需包,分析页面,抽离所需单独的组件,再导入组装成一个完整页面
自定义头部
请求首页数据
渲染商品列表数据
点击复选框被选中
商品数量修改功能
全选和复选功能
商品总数量
商品总价格
- 组件进阶
component 通过 :is动态切换组件
keep-alive 组件缓存
activated激活,deactived失去激活
-- slot 插槽
默认插槽
具名插槽
作用域插槽
表格案例,遍历数组中的对象
- 自定义指令 directives
自定义指令的update更新数据方法
tab案例
项目初始化
渲染tabbar页面样式
点击tab切换高亮效果
点击tab显示对应页面内容
渲染goodslist商品列表页面
mytable在goodslist页面导入并挂载,父向子传值,实现tr的表格行循环,然后使用作用域插槽向goodslist的td渲染对应的td单元格
使用作用域插槽提高组件复用性
在上一张《渲染goodslist商品列表页面》,我已经讲过作用域插槽了,具体分析请看上一张
二次循环数组展示tag标签
插槽事件之-删除一条数据
添加tag标签
- 总结
-- Vue Router 路由
什么是路由
什么是单页面应用
Vue-Router模块包介绍
组件分为2类:复用组件和页面组件
路由的基础使用以及配置规则
router-link的好处
声明式导航 - 跳转传参的两种方式
redirect 页面重定向
Not Found 404页面设置
mode:history 路由模式
this.$router.push 编程式导航
编程式导航 - 跳转传参
子路由 children
router-link 激活的2个类名区别
前置路由守卫 router.beforeEach
-- Vant 组件库
导入所有组件
按需导入组件
自动按需引入
Dialog 弹出框
form表单的基础使用
-- 网易云案例
- 项目初始化
该项目接口涉及跨域
测试网易云接口数据
克隆项目并安装依赖,启动测试数据的返回
开始 - 项目初始化
分析并创建对应的页面组件
配置路由,挂载路由,并设置router-view显示地方
实现点击tab切换路由页面功能
navbar 头部标题
动态设置页面标题
统一管理和设置axios数据请求,将请求逻辑与视图分离
首页推荐歌单的页面渲染
渲染最新音乐列表数据
完成搜索页面的开发
搜索结果页面的开发 - 和搜索页面的互斥显示
实现搜索功能
下拉加载更多数据
解决搜索结果页面的3个小bug
1: 如果搜索的歌曲不存在,会报错的问题
2:如果只有一页数据,下拉就不会显示加载更多,只会显示加载已完毕
3:如果有多页搜索结果,下拉就不会只显示1页,则会下拉就加载更多数据