课程试听
                
        阶段一 前端开发基础
展开第一章 前端就业班课程导学
            1-1 前端就业班课程导学
            
        
        - 就业班导学 免费试学
 
第二章 HTML+CSS课前导学
            2-1 HTML+CSS课程导学
            
        
        - 01-阶段介绍
 
第三章 HTML
            3-1 HTML初识
            
        
        - 02-今日课程介绍
 - 03-初识-网页组成和本质
 - 04-了解-初识-浏览器
 - 05-初识-web标准
 - 06-HTML感知
 
            3-2 HTML注释和标签
            
        
        - 07-HTML骨架
 - 08-vscode-简介
 - 09-vscode-使用
 - 10-注释
 - 11-HTML标签组成
 - 12-HTML标签关系
 - 13-HTML标签学习路径
 
            3-3 HTML常用标签
            
        
        - 14-标题标签
 - 15-段落标签
 - 16-换行和水平线标签
 - 17-文本格式化标签
 - 18-图片-基本使用
 - 19-图片-属性
 
            3-4 绝对路径+相对路径
            
        
        - 20-绝对路径
 - 21-相对路径-同级
 - 22-相对路径-下级
 - 23-相对路径-上级
 
            3-5 HTML其它标签
            
        
        - 24-音频标签
 - 25-视频标签
 - 26-链接
 - 27-链接-新窗口
 - 28-综合案例-招聘
 - 29-综合案例-跳转-index
 - 30-综合案例-跳转-其他页面
 
            3-6 列表和表格
            
        
        - 01-课程介绍
 - 02-列表-使用场景
 - 03-列表-无序
 - 04-列表-有序
 - 05-列表-自定义
 - 06-表格-基本使用
 - 07-表格-属性
 - 08-表格-表格标题和表头单元格
 - 09-表格-结构标签
 - 10-表格-合并单元格
 
            3-7 表单
            
        
        - 11-表单-应用场景
 - 12-表单-input基本使用
 - 13-表单-input-占位符(提示信息)
 - 14-表单-单选功能和默认选中
 - 15-表单-上传多个文件
 - 16-表单-按钮-input
 - 17-表单-按钮button
 - 18-表单-下拉菜单
 - 19-表单-文本域
 - 20-表单-label标签
 
            3-8 综合案例
            
        
        - 21-没有语义div和span
 - 22-有语义-手机端常用标签
 - 23-字符实体
 - 24-综合案例-学生信息表
 - 25-综合案例-表单
 
第四章 CSS
            4-1 CSS初识和CSS基本选择器
            
        
        - 01-课程介绍
 - 02-体验css
 - 03-CSS引入方式
 - 04-选择器-标签
 - 05-选择器-类
 - 06-选择器-id
 - 07-选择器-通配符
 
            4-2 font字体
            
        
        - 08-文字-字号
 - 09-文字-粗细
 - 10-文字-倾斜
 - 11-文字-字体
 - 12-拓展-层叠性
 - 13-font复合属性
 
            4-3 文本样式和CSS样式表
            
        
        - 14-文本缩进
 - 15-水平对齐方式-文字
 - 16-水平对齐方式-图片
 - 17-文本修饰线
 - 18-行高-基本使用
 - 19-font复合属性-行高
 - 20-行高-垂直居中
 
            4-4 Chrome调试工具
            
        
        - 21-谷歌调试工具
 - 22-拓展-颜色取值
 - 23-拓展-标签居中
 
            4-5 综合案例【新闻页面】
            
        
        - 24-综合案例-div居中
 - 25-综合案例1-新闻-标题
 - 26-综合案例1-新闻-内容
 - 27-综合案例2-产品-div布局
 - 28-综合案例2-产品-图片效果
 - 29-综合案例2-产品-文字效果
 
            4-6 CSS复合选择器+emmet语法
            
        
        - 01-课程介绍
 - 02-选择器-后代
 - 03-选择器-子代
 - 04-选择器-并集
 - 05-选择器-交集
 - 06-选择器-伪类
 - 07-emmet语法
 
            4-7 CSS背景
            
        
        - 08-背景-背景色
 - 09-背景-背景图
 - 10-背景-背景平铺
 - 11-背景-背景位置
 - 12-背景-background
 - 13-背景图和img的区别
 
            4-8 元素显示模式及转换
            
        
        - 14-显示模式-块
 - 15-显示模式-行内
 - 16-显示模式-行内块
 - 17-显示模式-转换
 - 18-拓展-标签嵌套
 
            4-9 CSS三大特性+综合案例
            
        
        - 19-CSS特性-继承性
 - 20-CSS特性-继承性-注意点
 - 21-CSS特性-层叠性
 - 22-综合案例1
 - 23-综合案例2-思路
 - 24-综合案例2-实现
 
            4-10 CSS优先级
            
        
        - 01-课程介绍
 - 02-优先级-基本测试
 - 03-优先级-叠加计算
 - 04-优先级-计算题
 
            4-11 调试工具 + PxCook
            
        
        - 05-谷歌-排错
 - 06-PxCook
 
            4-12 CSS盒模型(上)
            
        
        - 07-盒子模型-组成
 - 08-盒子模型-浏览器效果
 - 09-盒子模型-内容width和height
 - 10-盒子模型-border-复合写法
 - 11-盒子模型-border-某个方向
 - 12-盒子模型-尺寸计算-border
 
            4-13 CSS盒模型+综合案例【新浪导航】
            
        
        - 13-盒子模型-案例
 - 14-新浪导航-布局div
 - 15-新浪导航-内容a
 - 16-盒子模型-padding-多值
 - 17-盒子模型-尺寸-border和padding
 - 18-新浪导航-padding优化
 
            4-14 CSS盒模型(下)
            
        
        - 19-盒子模型-內减模式
 - 20-盒子模型-外边距
 - 21-清除默认样式
 - 22-版心居中
 
            4-15 综合案例【新闻列表】
            
        
        - 23-综合案例-新闻列表-div布局
 - 24-综合案例-新闻列表-标题
 - 25-综合案例-新闻列表-内容
 
            4-16 外边距合并和塌陷
            
        
        - 26-外边距合并
 - 27-外边距-塌陷
 - 28-行内元素的垂直内外边距
 
            4-17 伪类和伪元素
            
        
        - 01-课程介绍
 - 02-结构伪类-基本用法
 - 03-结构伪类-公式
 - 04-结构伪类-易错点
 - 05-伪元素
 
            4-18 浮动
            
        
        - 06-标准流
 - 07-浮动-体验行内块问题
 - 08-浮动-作用
 - 09-浮动-特点
 
            4-19 综合案例
            
        
        - 10-综合案例-小米布局
 - 11-拓展-CSS属性顺序
 - 12-综合案例-小米产品-左右结构
 - 13-综合案例-小米产品-li
 - 14-综合案例-导航
 
            4-20 清除浮动
            
        
        - 15-清除浮动-场景搭建
 - 16-清除浮动-额外标签
 - 17-清除浮动-单伪元素
 - 18-清除浮动-双伪元素
 - 19-清除浮动-overflow
 
            4-21 学成在线项目
            
        
        - 01-准备工作
 - 02-版心效果
 - 03-清除工作
 - 04-header布局
 - 05-logo和nav布局
 - 06-nav-内容布局
 - 07-nav-文字样式
 - 08-搜索-布局和文本框
 - 09-搜索-按钮
 - 10-用户区域
 - 11-banner-布局
 - 12-banner-left完成
 - 13-banner-right-标题
 - 14-banner-right-内容
 - 15-banner-right-全部课程
 - 16-精品推荐-布局
 - 17-精品推荐-内容
 - 18-精品课程-标题
 - 19-精品课程-li布局
 - 20-精品课程-课程产品
 - 21-版权区域-布局
 - 22-版权区域-内容
 
            4-22 CSS定位(上)
            
        
        - 01-课程介绍
 - 02-定位的作用
 - 03-定位的使用步骤
 - 04-了解-定位-静态
 - 05-定位-相对relative
 - 06-了解-定位-注意事项
 - 07-定位-绝对absolute-参照浏览器
 - 08-定位-子绝父相
 
            4-23 CSS定位(下)
            
        
        - 09-案例-学成在线-hot
 - 10-定位-居中
 - 11-定位-位移居中
 - 12-案例-二维码
 - 13-案例-banner
 - 14-定位-固定
 - 15-定位-显示层级
 
            4-24 CSS进阶
            
        
        - 16-vertical-align-01
 - 17-vertical-align-02
 - 18-光标类型
 - 19-圆角边框-基本使用
 - 20-圆角边框-工作场景
 - 21-溢出显示效果-overflow
 - 22-显示隐藏-基本使用
 - 23-案例-二维码显示隐藏
 - 24-透明属性opacity
 - 25-表格-边框合并
 - 26-拓展-CSS-三角形
 - 27-拓展-获得焦点伪类选择器
 - 28-拓展-属性选择器
 
第五章 企业级小兔鲜儿电商项目首页制作
            5-1 精灵图
            
        
        - 01-课程介绍
 - 02-css精灵-作用
 - 03-css精灵-基本用法
 - 04-css精灵-灵活使用
 
            5-2 CSS样式补充
            
        
        - 05-背景图缩放
 - 06-拓展-背景图缩放-复合写法
 - 07-盒子阴影
 - 08-过渡
 
            5-3 项目前置知识
            
        
        - 09-网页与网站
 - 10-骨架标签
 - 11-SEO
 - 12-favicon-标题图标
 
            5-4 header区域布局
            
        
        - 13-项目目录
 - 14-项目代码准备
 - 15-快捷导航-布局
 - 16-快捷导航-内容
 - 17-header-布局
 - 18-logo-优化方案
 
            5-5 导航模块布局
            
        
        - 19-导航
 - 20-搜索-文本框
 - 21-搜索-放大镜
 - 22-购物车
 
            5-6 版权区域布局
            
        
        - 23-版权-布局
 - 24-版权-top列表-布局
 - 25-版权-li内容
 - 26-版权-li精灵图
 - 27-版权底部
 
            5-7 banner区域布局
            
        
        - 01-banner-图
 - 02-banner-侧导航-布局
 - 03-banner-侧导航-文字内容
 - 04-banner-箭头-布局
 - 05-banner-箭头-精灵图
 - 06-banner-圆点
 
            5-8 新鲜好物区域布局
            
        
        - 07-新鲜好物-标题
 - 08-新鲜好物-内容-布局
 - 09-新鲜好物-内容完成
 - 10-新鲜好物-新品文字
 
            5-9 生鲜区域布局
            
        
        - 11-生鲜-标题-布局
 - 12-生鲜-标题-h和more
 - 13-生鲜-标题-ul
 - 14-生鲜-内容-布局
 - 小兔鲜儿项目视频补充说明
 
阶段二 移动Web网页开发
展开第一章 移动web开发课前导学
            1-1 移动web阶段课前导学
            
        
        - 01-阶段课程介绍
 
第二章 2D&3D 转换与动画
            2-1 字体图标
            
        
        - 第二阶段课前导学
 - 02-今日课程介绍
 - 03-字体图标-简介
 - 04-字体图标-下载
 - 05-字体图标-基本使用
 - 06-字体图标-修改样式
 - 07-案例-购物车
 - 08-字体图标-svg-上传
 
            2-2 2D转换-位移
            
        
        - 08-平面转换-介绍
 - 09-平面转换-位移
 - 10-平面转换-位移-技巧
 - 11-平面转换-定位盒子居中
 - 12-案例-双开门-布局
 - 13-案例-双开门-hover效果
 
            2-3 2D转换-旋转+缩放
            
        
        - 14-平面转换旋转
 - 15-平面转换-转换原点
 - 16-平面转换-多重转换
 - 17-平面转换-缩放
 - 18-案例-缩放
 - 19-案例-缩放-注意点-层叠性
 
            2-4 渐变
            
        
        - 20-渐变
 - 21-案例-渐变
 - 22-综合案例-华为-结构分析
 - 23-综合案例-华为-mask
 - 24-综合案例-华为-hover效果
 
            2-5 3D转换-位移和透视
            
        
        - 01-今日课程介绍
 - 02-空间转换-简介
 - 03-空间转换-位移
 - 04-空间转换-透视属性
 - 05-空间转换-透视属性-原理
 
            2-6 3D转换-旋转+立体呈现
            
        
        - 06-空间转换-rotateZ
 - 07-空间转换-rotateX
 - 08-空间转换-rotateY
 - 09-空间转换-左手法则
 - 10-空间转换-rotate3d-了解
 - 11-空间转换-立体呈现
 
            2-7 3D导航案例
            
        
        - 12-3d导航-结构分析
 - 13-3d导航-搭建立方体
 - 14-3d导航-hover
 - 15-上午回顾
 - 16-空间转换-缩放
 
            2-8 CSS3动画
            
        
        - 17-动画-简介
 - 18-动画-from..to
 - 19-动画-百分比
 - 20-动画-animation复合属性01
 - 21-动画-animation复合属性02
 - 22-动画-animation拆分写法
 - 23-动画-逐帧动画-简介
 - 24-动画-逐帧动画-实现
 - 25-动画-多组动画
 
            2-9 CSS3动画案例
            
        
        - 26-综合案例-走马灯
 - 27-综合案例-全民出游-背景大图
 - 28-综合案例-全民出游-云彩-布局
 - 29-综合案例-全民出游-云彩-动画
 
第三章 移动端布局
            3-1 移动端基础知识
            
        
        - 01-课程介绍
 - 02-课程知识介绍
 - 03-PC和移动网页不同点
 - 04-谷歌模拟器
 - 05-分辨率
 - 06-代码参考分辨率-逻辑
 - 07-视口
 - 08-二倍图
 - 09-百分比布局
 
            3-2 Flex伸缩布局(一)
            
        
        - 11-Flex-体验
 - 12-Flex-简介
 - 13-Flex-组成
 - 14-Flex-主轴对齐方式
 - 15-Flex侧轴对齐方式
 - 16-Flex-单独控制某个盒子侧轴对齐方式
 - 17-Flex-弹性盒子尺寸特点
 - 18-Flex-弹性伸缩比
 
            3-3 小兔鲜儿移动端
            
        
        - 19-小兔鲜儿-确认订单-准备工作
 - 20-小兔鲜儿-确认订单-整体布局
 - 21-小兔鲜儿-确认订单-底部支付-布局
 - 22-小兔鲜儿-确认订单-底部支付-左侧
 - 23-小兔鲜儿-确认订单-底部支付-右侧
 - 24-小兔鲜儿-确认订单-用户信息-整体布局
 - 25-小兔鲜儿-确认订单-用户信息-内容布局
 - 26-小兔鲜儿-确认订单-用户信息-文字内容
 - 01-课程介绍
 - 02-小兔鲜儿-商品-布局
 - 03-小兔鲜儿-商品-数量
 - 04-小兔鲜儿-商品-描述
 - 05-小兔鲜儿-其他信息-布局
 - 06-小兔鲜儿-其他信息-内容
 
            3-4 Flex伸缩布局(二)
            
        
        - 07-Flex-修改主轴方向
 - 08-Flex-主轴方向和对齐方式
 - 09-Flex-弹性盒子换行
 - 10-Flex-调整行对齐方式
 
            3-5 小兔鲜儿PC端
            
        
        - 11-小兔鲜儿-pc-项目介绍
 - 12-小兔鲜儿-pc-背景
 - 13-小兔鲜儿-pc-内容布局
 - 14-小兔鲜儿-pc-账户概览-布局
 - 15-小兔鲜儿-pc-账户概览-内容
 - 16-小兔鲜儿-pc-账户概览-图片尺寸
 - 17-小兔鲜儿-pc-公共面板-布局
 - 18-小兔鲜儿-pc-公共面板-文字样式
 - 19-小兔鲜儿-pc-订单-li布局
 - 20-小兔鲜儿-pc-订单-内容布局
 - 21-小兔鲜儿-pc-订单-goods
 - 22-小兔鲜儿-pc-订单-goods-省略号
 - 23-小兔鲜儿-pc-订单-common
 
            3-6 rem移动端适配
            
        
        - 01-移动适配
 - 02-今日课程介绍
 - 03-体验rem移动适配
 - 04-rem-基本使用
 - 05-rem-媒体查询
 - 06-rem-移动适配
 - 07-rem-布局流程
 - 08-rem-flexible移动适配
 
            3-7 Less
            
        
        - 09-Less-体验
 - 10-Less-简介
 - 11-Less-EasyLess插件
 - 12-Less-注释
 - 13-Less-计算
 - 14-Less-嵌套
 - 15-Less-变量
 - 16-Less-导入
 - 17-Less-导出-插件配置
 - 18-Less-导出-单独路径
 - 19-Less-禁止导出
 
            3-8 游乐园项目
            
        
        - 20-游乐园-项目准备
 - 21-游乐园-Less-导入
 - 22-游乐园-整体布局
 - 23-游乐园-根字号变量
 - 24-游乐园-banner区域
 - 25-游乐园-活动标题
 - 26-游乐园-活动-布局
 - 01-游乐园-活动-字体图标
 - 02-游乐园-活动-状态-蓝色
 - 03-游乐园-活动-状态-灰色
 - 04-游乐园-活动-文字-top
 - 05-游乐园-活动-文字-bottom
 - 06-游乐园-活动-内容复制
 - 07-游乐园-活动-底部工具栏
 
            3-9 vw/vh
            
        
        - 08-vw-体验
 - 09-vh-体验
 - 10-vw-移动适配
 - 11-vh-移动适配
 - 12-vh-全面屏影响
 
            3-10 B站项目
            
        
        - 13-B站-获取素材
 - 14-B站-项目准备
 - 15-B站-头部-布局
 - 16-B站-vw变量
 - 17-B站-头部-logo图标
 - 18-B站-头部-right内容
 - 19-B站-头部-更多
 - 20-B站-头部-字体图标字号
 - 21-B站-头部-tab
 - 22-B站-视频-布局
 - 23-B站-视频-思路
 - 24-B站-视频-介绍文字
 - 25-B站-视频-数量统计
 - 26-B站-视频-弹性盒子换行
 - 27-B站-头部-层级和背景色
 
第四章 响应式布局
            4-1 媒体查询
            
        
        - 01-课程介绍
 - 02-媒体查询-max-min-width
 - 03-媒体查询-书写顺序
 - 04-了解-媒体查询-完整写法
 - 05-媒体查询-link写法
 - 06-媒体查询-隐藏
 
            4-2 Bootstrap
            
        
        - 07-bootstrap-体验
 - 08-bootstrap-简介
 - 09-bootstrap-下载
 - 10-bootstrap-使用
 - 11-bootstrap-栅格系统-原理
 - 12-bootstrap-栅格系统-代码
 - 13-bootstrap-栅格系统-其他类名
 - 14-bootstrap-介绍
 - 15-bootstrap-表格
 - 16-bootstrap-按钮
 - 17-bootstrap-组件
 - 18-bootstrap-字体图标
 - 19-bootstrap-插件-下拉菜单
 - 20-bootstrap-插件-轮播图
 
            4-3 AlloyTeam项目
            
        
        - 21-AlloyTeam-项目准备
 - 22-AlloyTeam-banner图-高度
 - 23-AlloyTeam-头部-组件
 - 24-AlloyTeam-头部-样式
 - 25-bootstrap-定制-项目导航
 - 26-AlloyTeam-开源项目-标题文字
 - 27-AlloyTeam-开源项目-栅格布局
 - 28-AlloyTeam-开源项目-内容
 - 29-bootstrap-全局样式
 
阶段三 JavaScript网页编程
展开第一章 JavaScript网页编程课前导学
            1-1 JavaScript网页编程课前导学
            
        
        - 第三阶段课前导学 免费试学
 
第二章 JavaScript 基础
            2-1 Javascript介绍
            
        
        - 02-js是什么
 - 03-体验js
 - 04-javascript书写位置
 - 05-js注释和js结束符
 - 06-输入和输出语法
 
            2-2 Javascript变量
            
        
        - 07-字面量
 - 08-变量是什么
 - 09-变量的基本使用
 - 10-输入用户名案例
 - 11-交换变量值案例
 - 12-变量的本质
 - 13-变量名命名的规范和规则
 - 14-let和var的区别
 
            2-3 数据类型使用
            
        
        - 15-数组的基本使用
 - 16-数字类型
 - 17-字符串数据类型
 - 18-字符串拼接
 - 19-用户输入年龄案例
 - 20-上午总结
 - 21-模板字符串
 - 22-输出用户名和姓名案例
 - 23-boolean和undefined和null
 - 24-声明变量的注意点
 - 25-检测数据类型
 - 26-隐式转换
 - 27-显式转换-转换为数字型
 - 28-显式转换-转换为字符串
 
            2-4 案例分析
            
        
        - 29-课堂案例分析
 - 30-综合案例分析
 - 31-综合案例-商品订单信息上
 - 32-综合案例-商品订单信息下
 - 33-排错思路和作业安排
 - 34-md主题以及md使用
 
            2-5 Javascript操作符
            
        
        - 01-反馈和复习和今日内容
 - 02-算术运算符
 - 03-计算圆的面积
 - 04-赋值运算符
 - 05-一元运算符
 - 06-自增运算符
 - 07-面试题
 - 08-比较运算符基本使用
 - 09-比较运算符的特殊情况
 - 10-逻辑运算符简介
 - 11-逻辑运算符短路或者逻辑中断
 - 12-逻辑中断案例
 - 13-运算符优先级
 - 14-运算符优先级练习
 
            2-6 Javascript流程控制及案例
            
        
        - 15-表达式和语句
 - 16-语句的三种分类
 - 17-分支语句单分支语句
 - 18-双分支语句以及案例
 - 19-分时问候案例
 - 20-上午总结
 - 21-三运运算符
 - 22-数字补0案例
 - 23-求最大值
 - 24-if尽量写大括号
 - 25-switch语句基本使用
 - 26-简单计算器
 - 27-断点操作
 - 28-while循环
 - 29-循环的执行过程
 - 30-while循环案例求累加和
 - 31-while循环案例求1~100偶数累加和
 - 32-退出循环
 - 33-你爱我吗
 - 34-综合案例-简易ATM取款机上
 - 35-综合案例-简易ATM取款机下
 - 36-复习路线今日作业和总结
 
            2-7 Javascript循环及案例
            
        
        - 01-反馈复习和今日内容
 - 02-for循环的基本使用
 - 03-for循环练习
 - 04-for遍历数组
 - 05-退出循环continue和break
 - 06-循环嵌套的执行过程
 - 07-循环单词记忆单词案例
 - 08-五行五列的小星星案例
 - 09-倒三角形的星星
 - 10-99乘法表案例
 
            2-8 Javascript数组及冒泡排序
            
        
        - 11-为什么需要数组和数组的使用
 - 12-数组求和案例
 - 13-数组求和再次梳理
 - 14-求数组最大值
 - 15-操作数组-查和改
 - 16-增加数组元素push
 - 17-unshift前面追加元素
 - 18-筛选数组案例
 - 19-同学分享
 - 20-筛选数组去0案例
 - 21-删除数组元素
 - 22-冒泡排序的原理
 - 23-冒泡排序上
 - 24-冒泡排序下
 - 25-综合案例生成柱形图结构搭建
 - 26-综合案例生成柱形图上
 - 27-综合案例生成柱形图中
 - 28-综合案例生成柱形图下
 - 29-作业总结
 - 30-md配置图片
 
            2-9 Javascript函数及应用
            
        
        - 01-反馈复习和今日目标
 - 02-为什么需要函数
 - 03-函数的使用
 - 04-函数传参
 - 05-逻辑中断
 - 06-求数组总分案例
 - 07-函数为什么需要返回值
 - 08-函数返回值使用
 - 09-利用return求和
 - 10-return小细节
 - 11-封装函数求数组最大值
 - 12-return返回多个值
 - 13-求数组的最大值和最小值
 - 14-答疑问题
 - 15-求2个数的最大值
 - 16-断点调试
 
            2-10 Javascript作用域
            
        
        - 17-作用域
 - 18-变量的作用域
 - 19-变量的两种特殊情况
 - 20-作用域小结以及调试看作用域
 - 21-作用域链
 - 22-函数表达式
 - 23-立即执行函数
 - 24-综合案例
 - 25-函数参数个数以及复习总结
 
            2-11 Javascript对象
            
        
        - 01-复习反馈和今日目标
 - 02-函数传参赋值小技巧
 - 03-为什么需要对象
 - 04-对象使用-定义属性
 - 05-对象使用-访问属性
 - 06-对象使用-访问方法
 - 07-对象方法again
 - 08-对象操作
 - 09-对象小结
 - 10-遍历对象
 - 11-遍历对象梳理
 - 12-数组对象
 - 13-得到数组对象里面的属性值
 
            2-12 Javascript内置对象及案例
            
        
        - 14-学生信息表格案例分析
 - 15-学生信息表案例打印头部和尾部
 - 16-学生信息表案例渲染行
 - 17-上午复习
 - 18-数学对象取整对象
 - 19-数学对象最大值和最小值
 - 20-封装随机数函数
 - 21-随机点名案例
 - 22-随机点名案例改进
 - 23-猜数字游戏
 - 24-综合案例准备工作
 - 25-综合案例填充数据
 - 26-简单数据类型和引用数据类型
 - 27-数据类型存储方式
 - 28-复习和安排
 
第三章 WebAPI
            3-1 DOM介绍
            
        
        - 01-阶段介绍
 - 02-今日目标
 - 03-什么是DOM
 - 04-DOM对象
 - 05-获取元素querySelector
 - 06-获取元素queryselectall
 - 07-其他获取元素方式
 
            3-2 样式操作案例
            
        
        - 08-修改元素内容
 - 09-随机点名案例
 - 10-修改元素常见属性
 - 11-随机图片案例
 - 12-修改元素样式属性style
 - 13-随机背景案例
 - 14-上午总结
 - 15-使用className修改元素样式
 - 16-使用classList修改元素样式
 - 17-修改表单属性
 - 18-定时器间歇函数
 - 19-用户注册倒计时案例上
 - 20-用户注册倒计时案例下
 - 21-综合案例分析
 - 22-综合案例-焦点图上
 - 23-综合案例-焦点图下
 - 24-总结和作业安排
 
            3-3 随机点名案例
            
        
        - 01-反馈、复习、今天内容
 - 02-事件监听
 - 03-淘宝关闭二维码
 - 04-随机点名简洁版1
 - 05-排错思路
 - 06-随机点名简洁版2
 - 07-随机点名案例1
 - 08-随机点名案例2
 - 09-复习和扩展
 
            3-4 小米搜索案例
            
        
        - 10-事件类型
 - 11-小米搜索框案例
 - 12-补充
 - 13-微博输入案例
 - 14-全选按钮上
 - 15-全选按钮案例更改文字
 - 16-解惑
 - 17-绑定多个事件
 - 18-全选按钮下
 - 19-答疑
 - 20-购物车加减案例
 - 21-高阶函数--回调函数
 - 22-环境对象this
 
            3-5 tab栏切切换案例
            
        
        - 23-排他思想
 - 24-更好的切换思路
 - 25-综合案例-tab栏切换分析
 - 26-综合案例-tab切换上
 - 27-答疑
 - 28-综合案例-tab切换下
 - 29-总结和作业
 
            3-6 节点操作及学成案例
            
        
        - 01-复习反馈和今日目标
 - 02-DOM节点
 - 03-查找父节点
 - 04-同学分享
 - 05-关闭多个二维码案例
 - 06-获取子节点
 - 07-查找兄弟节点
 - 08-创建和追加节点appendChild
 - 09-insertBefore追加节点
 - 10-学成在线案例创建小li
 - 11-学成在线案例填充数据
 - 12-克隆节点
 - 13-删除节点
 - 14-上午总结
 
            3-7 微博发布案例
            
        
        - 15-实例化时间对象
 - 16-时间对象的方法
 - 17-页面显示时间
 - 18-答疑以及取消1秒空白
 - 19-时间戳
 - 20-下班时间倒计时上
 - 21-下班倒计时中
 - 22-下班倒计时下
 - 23-时间对象小结
 - 24-微博发布案例-输入字符数量
 - 25-微博发布案例-输入内容不能为空
 - 26-微博发布案例-添加数据上
 - 27-微博发布案例-填充数据
 - 28-微博发布案例-删除操作
 - 29-重绘和重排以及作业安排
 
            3-8 购物车案例
            
        
        - 01-复习反馈今日学习
 - 02-购物车-加号操作
 - 03-购物车-小计模块
 - 04-购物车-减号模块
 - 05-购物车-总价模块
 - 06-购物车-删除模块
 - 07-作用域的问题
 - 08-事件对象
 - 09-常用属性
 - 10-鼠标跟随图片
 - 11-小结
 - 12-微博发布按钮按下回车键发布新闻
 - 13-注意的问题
 
            3-9 学生信息表案例
            
        
        - 14-事件流以及2个阶段
 - 15-阻止事件流动
 - 16-阻止默认行为
 - 17-两种注册事件的区别
 - 18-事件委托
 - 19-综合案例-学生信息表分析
 - 20-综合案例-渲染已有数据
 - 21-综合案例-点击录入追加数据
 - 22-综合案例-填充表单数据
 - 23-综合案例-录入数据完成
 - 24-again
 - 25-清空操作
 - 26-综合案例-事件委托方式找到链接
 - 27-综合案例删除操作
 - 28-复习
 
            3-10 offset、client、scroll三大家族介绍及案例
            
        
        - 01-复习总结今日内容
 - 02-手风琴效果
 - 03-页面滚动事件
 - 04-页面加载事件
 - 05-DOMContentLoaded
 - 05-scroll家族宽和高
 - 06-检测页面滚动距离
 - 07-仿新浪返回顶部上
 - 08-仿新浪返回顶部下
 - 09-解惑
 - 10-offset家族
 - 11-仿京东固定导航栏做法
 - 12-电梯导航案例上
 - 13-答疑
 - 14-电梯导航案例下
 - 15-答疑
 - 16-client宽度和resize事件
 - 17-三大家族总结
 - 18-综合案例-焦点图分析
 - 19-综合案例-小图标模块经过事件
 - 20-综合案例-大图片对应显示
 - 21-综合案例添加描述信息以及答疑
 - 22-答疑解惑
 - 23-综合案例-右侧按钮开始
 - 24-综合案例-右侧按钮无缝衔接
 - 25-综合案例解决一个bug
 - 26-综合案例-左侧按钮制作
 - 27-综合案例-提取公共函数
 - 28-综合案例-开启定时器
 - 29-综合案例-鼠标经过停止定时器
 - 30-总结复习
 
            3-11 location、navigator、history对象
            
        
        - 01-复习反馈和今日内容
 - 02-window对象学习内容
 - 03-BOM浏览器对象模型
 - 04-延时函数的基本使用
 - 05-5秒钟自动关闭的广告
 - 06-递归函数
 - 07-利用递归实现setinterval
 - 08-两个定时器对比
 - 09-js的执行机制
 - 10-事件循环
 - 11-location.href的使用
 - 12-5秒钟之后跳转页面
 - 13-location.search
 - 14-location.hash
 - 15-location.reload方法
 - 16-navigator对象
 - 17-history对象
 - 18-上午总结
 
            3-12 HTML5本地存储及案例
            
        
        - 19-swiper插件的基本能使用
 - 20-swiper插件的修改
 - 21-排错
 - 22-本地存储介绍
 - 23-localstorage的基本使用
 - 24-引用数据类型的存储
 - 25-again复习
 - 26-综合案例分析
 - 27-综合案例-读取本地存储上
 - 28-综合案例-读取本地存储下
 - 29-综合案例-新增模块
 - 30-综合案例再次分析
 - 31-综合案例-删除操作
 - 32-自定义属性
 - 33-综合案例-不允许删除第一条数据
 - 34-今日总结
 
            3-13 正则表达式及应用
            
        
        - 01-反馈复习和今日内容
 - 02-正则表达式简介
 - 03-正则表达式的基本使用
 - 04-exec方法检索
 - 05-边界符
 - 06-量词上
 - 07-量词下
 - 08-元字符字符类[]使用
 - 09-用户名验证案例
 - 10-用户名案例改变
 - 11-字符类点和取反
 - 12-字符类里面的预定义类
 - 13-正则替换以及过滤敏感词
 - 14-上午复习
 - 15-综合案例-发送短信验证码案例
 - 16-答疑
 - 17-change事件
 - 18-属性选择器以及用户名验证开始
 - 19-综合案例-用户名案例
 - 20-综合案例-用户名验证结束
 - 21-综合案例-手机号码验证
 - 22-综合案例-验证码验证
 - 23-综合案例-密码验证
 - 24-综合案例-我同意模块
 - 25-综合案例-提交模块
 - 26-综合案例-勾选同意协议
 - 27-记住用户名模块
 - 28-首页显示用户名
 - 29-小结
 
第四章 JavaScript高级
            4-1 JavaScript作用域
            
        
        - 1、课程回顾
 - 2、作用域
 - 3、局部变量
 - 4、块级作用域
 - 5、全局作用域
 - 6、变量的申明
 - 7、作用域链
 - 8、作用域链练习
 
            4-2 闭包及预解析
            
        
        - 9、闭包
 - 10、闭包
 - 11、预解析
 - 12、变量预解析
 - 13、函数预解析
 - 14、let提升
 - 15、预解析练习
 
            4-3 es6剩余参数
            
        
        - 16、参数默认值
 - 17、动态参数arguments
 - 18、剩余参数
 
            4-4 es6箭头函数
            
        
        - 19、箭头函数
 - 20、箭头函数的其他形式
 - 21、箭头函数注意点
 - 22、课程回顾
 
            4-5 es6解构赋值
            
        
        - 1、课程回顾
 - 2、作业讲解
 - 3、解构赋值
 - 4、数组解构
 - 5、对象解构
 
            4-6 构造函数及原型对象
            
        
        - 6、面向对象和面向过程
 - 7、对象
 - 8、字面量创建对象
 - 9、构造函数
 - 10、自定义构造函数
 - 11、constructor和instanceof
 - 12、构造函数
 - 13、静态成员和实例成员
 
            4-7 数组方法应用
            
        
        - 14、数据类型
 - 15、引用类型传递
 - 16、练习题
 - 17、Object构造函数
 - 18、Array对象
 - 19、Array方法介绍
 - 20、数组方法1
 - 21、数组方法2
 - 21、数组方法3
 - 22、数组方法4
 - 23、正则构造函数
 - 24、课程回顾
 
            4-8 包装类型
            
        
        - 1、课程回顾
 - 2、作业讲解
 - 3、数组方法
 - 4、 包装类型
 - 5、字符串方法
 - 6、字符串练习
 - 7、Number构造函数
 - 8、Boolean构造函数
 
            4-9 继承
            
        
        - 9、其他方法
 - 10、构造函数封装
 - 11、构造函数
 - 12、原型对象
 - 13、原型对象
 - 14、constructor
 - 15、__proto__
 - 16、封装
 - 17、继承1
 - 18、继承2
 - 19、原型链
 - 20、扩展方法
 - 21、课程回顾
 
            4-10 Javascript中的this
            
        
        - 1、课程回顾
 - 2、作业讲解
 - 3、this指向
 - 4、严格模式
 - 5、箭头函数this
 - 6、改变函数this
 - 7、call方法
 - 8、apply方法
 - 9、bind方法
 - 10、改变this的方法
 
            4-11 拷贝
            
        
        - 11、创建类
 - 12、实例成员和静态成员
 - 13、constructor
 - 14、extensds
 - 15、super
 - 16;类的本质
 - 17、拷贝
 - 18、浅拷贝
 - 19、深拷贝
 
阶段四 前后端交互
展开第一章 Ajax
            1-1 Ajax介绍
            
        
        - 01-客户端与服务器
 - 02-url地址-01
 - 03-url地址-02
 - 04-数据说明
 - 05-Ajax介绍
 - 06-5种请求方式
 - 07-常见的5种请求方式
 
            1-2 axios基本使用-get请求
            
        
        - 08-axios的基本使用-发送get请求
 - 09-代码错误演示
 - 10-params查询参数
 - 11-params查询参数的本质
 - 12-url编码
 
            1-3 新闻案例
            
        
        - 13-新闻案例-发送请求获取数据
 - 14-解构赋值-回顾
 - 15-解构赋值应用在函数参数上
 - 16-新闻案例-解构赋值
 - 17-上午复习
 - 18-解构赋值-强调
 - 19-result结果说明
 - 20-新闻列表案例-实现功能
 - 21-数组的map方式映射得到结构
 - 22-数组的map方法实现新闻列表案例
 
            1-4 axios基本使用-post请求
            
        
        - 23-axios发送post请求
 - 24-post提交数据
 - 25-测试post请求的请求体和查询参数
 - 26-错误说明
 - 27-用户登录案例
 
            1-5 请求报文和响应报文+状态码
            
        
        - 28-请求报文
 - 29-响应报文
 - 30-复习
 - 01-响应状态码
 - 02-区分响应状态码和业务状态码
 - 03-接口和接口文档
 
            1-6 postman接口测试工具+聊天机器人案例
            
        
        - 04-postman接口测试工具
 - 05-postcode插件测试接口
 - 06-postcode细节说明
 - 07-聊天机器人-自己说的话
 - 08-聊天机器人-机器人说的话
 - 09-聊天机器人-文字转语音-01
 - 10-聊天机器人-文字转语音-02
 - 11-聊天机器人-优化
 
            1-7 Form表单+form-serialize插件使用
            
        
        - 12-复习
 - 13-上午复习
 - 14-form表单-了解
 - 15-表单提交的缺点
 - 16-ajax提交表单数据
 - 17-form-serialize插件介绍
 - 18-form-serialize插件的使用
 - 19-插件使用细节说明
 
            1-8 FormData
            
        
        - 20-FormData基本使用
 - 21-FormData收集文件数据
 - 22-头像上传-01
 - 23-头像上传-02
 - 24-头像上传-03
 - 25-复习
 
            1-9 请求体类型+图书列表案例
            
        
        - 01-请求体类型-Content-Type-01
 - 02-请求体类型-content-type-02
 - 03-请求体类型-content-type-03
 - 04-获取图书列表数据
 - 06-添加图书数据-01
 - 07-添加图书数据-02
 - 08-删除图书-01
 - 09-删除图书-02
 - 10-删除图书-03
 
            1-10 axios别名
            
        
        - 11-axios别名方法-01
 - 12-axios别名方法-02
 - 13-全局配置请求根路径
 - 14-axios简写改造图书管理案例
 
            1-11 原生XHR发送get和post请求
            
        
        - 15-原生XHR实现发送get请求
 - 16-原生XHR实现发送post请求
 - 17-复习
 - 01-梳理常见疑惑点
 
            1-12 JSON
            
        
        - 03-JSON本质与格式要求
 - 04-JSON的2个方法
 - 05-json文件
 - 06-原生xhr发送json数据
 
            1-13 回调地狱+promise
            
        
        - 07-异步与回调函数介绍
 - 08-演示回调地狱
 - 09-promise的基本使用-01
 - 10-promise的基本使用-02
 - 11-promise状态凝固
 - 12-promise练习
 - 13-then返回值实现链式编程
 - 14-promise解决回调地狱
 - 15-promise解决回调地狱-优化
 - 16-Promise的all方法
 - 17-Promise的race方法
 - 18-补充说明
 - 19-复习
 - 01-promise补充说明
 
            1-14 封装Ajax函数
            
        
        - 02-封装ajax函数-明确目标
 - 03-封装ajax函数-发送请求
 - 04-封装ajax函数-处理响应
 - 05-封装ajax函数-处理失败
 - 06-封装ajax函数-params对象转键值对字符串
 - 07-封装ajax函数-处理params查询参数
 - 08-封装ajax函数-处理data请求体数据
 - 09-封装ajax函数-优化
 
            1-15 分类导航案例
            
        
        - 10-分类导航-获取一级导航数据
 - 11-分类导航-获取二级导航数据
 - 12-分类导航-获取所有二级导航数据成功
 - 13-分类导航-实现渲染一级目录
 - 14-分类导航-实现渲染二级目录
 
            1-16 async 和 await
            
        
        - 15-async 和 await-基本使用-01
 - 16-async await 基本使用-02
 - 17-async await 基本使用-03
 - 18-async await 解决回调地狱
 - 19-async await 优化
 - 20-async await 改写聊天机器人
 
            1-17 宏任务和微任务
            
        
        - 01-回顾事件循环-知识点
 - 02-宏任务-微任务
 - 03-宏任务-微任务-面试题01
 - 04-宏任务-微任务-面试题-02
 - 05-宏任务-微任务-面试题-03
 - 06-宏任务-微任务-面试题-04
 - 07-宏任务-微任务-面试题-04
 - 08-上午复习和解惑
 
            1-18 个人设置案例
            
        
        - 09-个人设置案例-分析
 - 10-获取个人数据-01
 - 11-获取个人数据-02
 - 12-获取个人数据-处理省
 - 13-获取个人数据-处理市和区
 - 14-省改变-获取市的数据
 - 15-市改变
 - 16-上传头像功能
 - 17-实现保存功能-01
 - 18-实现保存功能-02
 - 19-解决保存bug-01
 - 20-解决保存bug-02
 - 21-代码优化
 
第二章 git&可视化
            2-1 Git基本操作
            
        
        - 01-git的基本概念
 - 02-git的基本安装
 - 03-git-init和git的三个区
 - 04-配置提交者信息
 - 05-git基本命令-git的第一次提交
 - 06-git命令详解-add和commit
 - 07-答疑-git reset 取消暂存
 - 08-git命令详解-status和log简写语法
 - 09-git-reset版本回退
 - 10-gitignore忽视文件
 
            2-2 分支+git冲突处理
            
        
        - 11-分支的重要性
 - 12-git分支命令本质
 - 13-分支命令-1-创建-查看-切换分支
 - 14-分支命令-2-合并分支
 - 15-分支命令-巩固-删除分支-创建并切换
 - 16-git冲突的说明
 - 17-git冲突的处理
 
            2-3 git实战-注册和登录功能
            
        
        - 18-项目初始化
 - 19-bootstrap轻提示的使用
 - 20-bootstrap轻提示项目中封装
 - 21-提交代码
 - 22-form-serialize的说明
 - 23-注册功能-配置基地址-注册点击事件-获取表单数据
 - 24-注册功能-非空和长度校验
 - 25-注册功能-实现完成
 - 26-注册功能-补充说明
 - 27-try-catch的说明
 - 28-提交注册功能
 - 29-登录功能-完成&提交git
 
            2-4 git实战-jwt身份认证以及拦截器
            
        
        - 01-jwt身份认证
 - 02-jwt身份认证-存储token
 - 03-登录访问拦截
 - 04-git提交-登录访问拦截
 - 05-实现用户名的展示和退出
 - 06-页面中请求数据-token在请求头中携带
 - 07-请求拦截器-统一携带token
 - 08-响应拦截器-统一处理错误响应-token过期
 - 09-响应拦截器-扒掉默认的一层data
 
            2-5 git实战-远程推送代码
            
        
        - 10-远程仓库的基本理解
 - 11-注册码云账号-创建仓库
 - 12-仓库成员的说明-仓库公开和私有
 - 13-码云平台的认证机制-https和ssh的说明
 - 14-配置SSH秘钥
 - 15-git push 将代码提交到远程仓库
 - 16-git push 推送远程仓库的巩固
 - 17-git remote 添加别名
 - 18-git push -u 的说明
 - 19-克隆代码
 - 20-git pull 拉取更新
 - 21-创建仓库-提交仓库的演示
 - 22-远程提交
 - 23-如何下载远端的分支
 - 24-综合练习-推送远程仓库
 - 25-综合练习-删除本地仓库-克隆远程代码和分支
 
            2-6 基于Echarts数据可视化项目(上)
            
        
        - 01-什么是数据可视化
 - 02-echarts的基本介绍
 - 03-echarts的基本展示
 - 04-阅读配置项文档-了解echarts的核心配置项
 - 05-echarts配置项详解(上)
 - 06-echarts配置项详解(下)
 - 07-将echarts的初始化封装函数中
 - 08-数据面板-顶部预览
 - 09-薪资走势-进行基本初始化图表
 - 10-薪资走势-标题控制
 - 11-薪资走势-x轴样式控制
 - 12-薪资走势-修改y轴分割线
 - 13-薪资走势-tooltip和grid
 - 14-薪资走势-color-线性渐变
 - 15-薪资走势-series-标识样式
 - 16-薪资走势-series-areaStyle
 - 17-薪资走势-调整配色
 - 18-薪资走势-数据动态渲染
 - 19-薪资分布-基本渲染
 - 20-薪资分布-title-legend-color
 
            2-7 基于Echarts数据可视化项目(中)
            
        
        - 21-薪资分布-图表完成
 - 22-薪资分布-饼形图数据渲染
 - 23-薪资分布-提交代码
 - 24-班级每组薪资-基本渲染
 - 25-班级每组薪资-动态渲染
 - 26-班级每组信息-点击切换高亮-样式效果
 - 27-班级每组信息-切换效果完成
 - 28-男女薪资分布-基本渲染
 - 29-男女薪资分布-图表完成
 - 30-男女薪资分布-动态渲染完成
 - 31-地图完成
 - 01-学生管理-基本渲染功能
 - 02-学生管理-删除功能完成
 - 03-添加-弹框的显示
 - 04-添加-弹框显示优化
 
            2-8 基于Echarts数据可视化项目(下)
            
        
        - 05-添加-动态渲染省份
 - 06-添加-监听省份动态渲染城市
 - 07-添加-监听省份动态渲染城市-(补充)
 - 08-添加-监听城市动态渲染地区
 - 09-小bug说明
 - 10-添加-添加完成
 - 11-提交添加的git
 - 12-点修改显示弹框
 - 13-实现基本回显
 - 14-处理性别的回显
 - 15-实现下拉菜单的回显(获取数据和设置value值)
 - 16-修改完成
 - 17-部署项目到服务器成功
 
第三章 node.js&webpack
            3-1 node介绍和环境安装
            
        
        - 1) 框架前置课程安排
 - 2) 为什么要学习nodejs
 - 3) 浏览器与javascript
 - 4) 什么是nodejs
 - 5) nodejs和浏览器的区别
 - 6) node.js可以做什么
 - 7) nodejs的安装
 - 8) 终端打开方式
 - 9) 终端常见操作
 - 10) nodejs执行js的步骤
 - 11) global模块
 
            3-2 node-fs模块
            
        
        - 12) fs文件系统-读取文件
 - 12) fs文件系统-读取文件-补充
 - 13) fs文件系统-写入文件
 - 14) fs文件系统-追加文件
 - 14) fs文件系统-读写图片
 - 14) fs文件系统-bug解决
 
            3-3 node-path模块
            
        
        - 15) 成绩整理-01
 - 15) 成绩整理-02
 - 16) 成绩整理-正则-03
 - 16) 上午内容回顾
 - 17) 路径的问题__dirname
 - 18) path.join路径拼接
 - 19) path模块的其他两个方法
 
            3-4 node-http模块
            
        
        - 20) ip和域名端口三者的关系
 - 21) 浏览器输入地址,做了什么
 - 22) http模块的基本步骤
 - 23) http模块处理用户请求
 - 24) http模块request对象的讲解
 - 25) http模块根据不同的请求,响应内容
 - 26) http模块res对象-write与end方法
 - 27) http模块设置响应头 显示中文
 - 28) 今日内容回顾
 - 01) 第一天内容回顾
 
            3-5 时钟案例+创建web服务器
            
        
        - 02)http模块练习
 - 03)时钟案例-上
 - 04)时钟案例-下
 - 05)时钟案例-补充
 - 06)安装三方库
 - 07)mime模块的使用
 - 08)部署通用的静态web服务器-上
 - 09)部署通用的静态web服务器-下
 
            3-6 node-模块化
            
        
        - 10) 模块化的概念
 - 11) nodejs中模块的分类
 - 12)问题解答
 - 13)模块的导入和导出
 - 14) nodejs模块的导入导出练习
 - 15) nodejs模块-小练习
 - 16) require加载模块的机制
 - 17) 面试题讲解
 - 18) commonJS的底层实现
 
            3-7 npm命令、nodemon、nrm
            
        
        - 19)npm的常用命令
 - 20) 三方模块的使用和固定版本安装
 - 21) 删除node_modules安装npm i
 - 22)全局安装三方模块
 - 23) nodemon的使用
 - 24) nrm的使用
 - 25) 今日内容回顾
 - 01-昨日内容复习
 
            3-8 同源策略和跨域
            
        
        - 02-同源和同源策略
 - 03-跨域相关理论知识点
 - 04-跨域演示-上
 - 05-跨域演示-下
 
            3-9 ES6模块化+yarn
            
        
        - 06-ES6模块化的理论知识
 - 07-ES6模块化-默认导出和导入
 - 08-ES6模块化-按需导入和按需导出
 - 09-ES6模块化-直接导入
 - 10-yarn安装
 - 11-yarn的常用命令
 
            3-10 webpack(上)
            
        
        - 12-webpack是什么
 - 13-webpack有什么用
 - 14-学习webpack之前的铺垫
 - 15-webpack打包js文件
 - 15-webpack配置js细节
 - 16-配置script命令
 - 17-webpack的基础配置-上
 - 18-webpack的基础配置-下
 - 19-把打包的js文件在页面中引入
 - 20-插件-html-webpack-plugin
 
            3-11 webpack(下)
            
        
        - 21-loader-css-loader
 - 22-提取css文件
 - 23-配置less-loader
 - 24-配置解析图片
 - 25-配置图片目录
 - 26-配置字体
 - 27-配置babel
 - 28-配置本地服务器
 - 补充-webpack总结
 - 补充-配置source-map
 - 补充-配置watch
 
阶段五 Vue.js项目实战开发
展开第一章 Vue.js核心技术与实战
            1-1 Vue初识
            
        
        - 01-学习目标
 - 02-为什么要学习vue
 - 03-vue的基本概念-渐进式
 - 04-vue的基本概念-框架
 - 05-vue是一个MVVM框架
 - 06-vue的组件化思想
 - 07-脚手架的基本介绍
 - 08-脚手架的基本使用
 - 09-脚手架项目的打开方式
 - 10-修改vue.config.js修改端口号
 - 11-脚手架目录分析
 - 12-清理目录-分析main.js的作用
 - 13-终端误关-打开方式的说明
 - 14-单文件组件的三个组成部分
 - 15-vue中如何提供数据
 - 16-补充-单文件组件的三部分组成
 - 17-插值表达式-基本语法
 - 18-插值表达式-注意点
 - 19-chrome极简插件下载
 - 20-调试工具的基本使用
 
            1-2 Vue指令(一)
            
        
        - 21-什么是指令
 - 22-v-bind的基本使用
 - 23-v-bind的强化
 - 24-注册点击事件-语法1-直接少量代码
 - 25-注册点击事件-语法2-methods
 - 26-注册点击事件-语法3-传参和简写
 - 27-vue中如何获取事件对象
 - 28-vue中事件修饰符
 - 29-vue中按键修饰符
 - 30-翻转世界
 - 31-总结
 
            1-3 Vue指令(二)
            
        
        - 01-v-if和v-show的说明
 - 02-v-else和v-else-if的说明
 - 03-案例-折叠面板
 - 04-v-model双向数据绑定
 - 05-v-model应用于其他表单元素
 - 06-v-model的修饰符-number-trim-lazy
 - 07-v-text和v-html的说明
 - 08-综合案例-1-控制显示隐藏
 - 09-综合案例-2-控制回显
 - 10-综合案例-3-修改提交完成
 - 11-目标说明
 - 12-v-for-遍历数组
 - 13-v-for-遍历对象和数字
 
            1-4 虚拟DOM+Diff算法+Key的作用
            
        
        - 14-vue的就地复用策略
 - 15-vue-虚拟dom的理解
 - 16-vue-虚拟dom的理解2
 - 17-diff算法-策略1-先对比同层级根元素
 - 18-diff算法-策略2-同层级兄弟元素-默认按照下标对比
 - 19-有key和无key的区别
 - 20-key的作用
 
            1-5 动态样式绑定和案例
            
        
        - 21-vue中控制样式-控制类名
 - 22-vue中控制样式-控制行内
 - 23-成绩案例-列表渲染
 - 24-成绩案例-删除功能
 - 25-成绩案例-添加功能
 - 26-成绩案例-日期格式处理
 - 27-计算属性的基本使用
 - 28-计算属性的缓存
 - 29-总结
 
            1-6 计算属性+侦听器
            
        
        - 01-通过计算属性求和,求平均值
 - 02-计算属性完整写法
 - 03-计算属性实现全选反选
 - 04-watch监视数据的变化-简单类型
 - 05-watch监视数据的变化-复杂类型-深度监视
 - 06-watch的属性-immediate
 - 07-深度监视-完成本地持久化
 - 08-逻辑中断或的补充
 
            1-7 Vue组件
            
        
        - 09-为什么要封装组件
 - 10-什么是组件化
 - 11-使用组件的基本语法
 - 12-tab快速生成结构
 - 13-注册全局组件-演示
 - 14-组件名大小写-命名规范
 - 15-组件中name的设置-控制调试工具的标识
 - 16-给style添加scoped处理组件样式冲突
 - 17-scoped处理样式冲突
 
            1-8 组件通信
            
        
        - 18-为什么要有组件通信
 - 19-构建父子关系
 - 20-父传子的基本基本语法
 - 21-v-for遍历父传子练习
 - 22-单向数据流
 - 23-子传父的基本语法
 - 24-总结
 - 00-父传子和子传父巩固
 - 01-props校验前置
 - 02-props校验-基础类型校验
 - 03-props校验-允许支持多个类型
 - 04-props校验-默认值和必填项
 - 05-props校验-对象数组提供默认值
 - 06-props校验-自定义校验
 - 07-关于工厂函数提供默认值的说明
 
            1-9 todos案例
            
        
        - 08-todos案例-准备基本结构
 - 09-todos案例-拆分三个组件
 - 10-todos案例-基本渲染-1
 - 11-todos案例-基本渲染-2
 - 12-todos案例-删除完成
 - 13-todos案例-添加完成
 - 14-todos案例-修改v-model的问题
 - 15-todos案例-修改-1
 - 16-todos案例-修改-2
 - 17-底部功能左侧
 - 18-底部右侧显示隐藏
 - 19-子传父完成清除已完成
 - 20-子组件准备type-控制高亮的展示
 - 21-核心理念-状态提升
 - 22-showList控制main的展示
 - 23-本地持久化
 - 24-全选功能完成
 - 25-总结
 
            1-10 v-model底层原理和应用
            
        
        - 00-调错说明
 - 01-v-model是一个语法糖
 - 02-v-model的底层原理分析
 - 03-v-model对于其他表单元素底层的衍生
 - 04-v-model-数字框组件的架子
 - 05-v-model应用于组件-数字框封装
 - 06-v-model应用于组件-下拉菜单
 
            1-11 ref属性+$nextTick
            
        
        - 07-ref和$refs-获取dom元素
 - 08-ref和$refs-获取组件
 - 09-$nextTick和setTimeout
 - 10-$nextTick小练习
 - 11-动态组件
 
            1-12 自定义指令和插槽
            
        
        - 12-自定义指令-focus-获取焦点
 - 13-自定义指令-全局注册
 - 14-自定义指令-指令的值
 - 15-插槽前置
 - 16-默认插槽
 - 17-插槽后备内容
 - 18-具名插槽
 - 19-作用域插槽
 - 20-总结
 
            1-13 商品列表案例
            
        
        - 01-商品列表-案例说明
 - 02-拆分-my-tag组件(注意-拆分组件样式)
 - 03-my-tag-控制显示隐藏-获取焦点
 - 04-my-tag-组件回显提交操作完成
 - 04-my-tag-补充
 - 05-my-table表格封装-拆分组件
 - 06-my-table封装-数据动态父传子
 - 07-my-table封装完成
 
            1-14 Vue生命周期
            
        
        - 08-明确目标
 - 09-vue生命周期
 - 10-vue生命周期的三大阶段
 - 11-vue生命周期的三大阶段-在图中划分
 - 12-vue初始化阶段-beforeCreate和created
 - 13-vuex初始化阶段-beforeMount和mounted
 - 14-vuex数据更新和实例销毁的四个钩子
 
            1-15 Vue路由(一)
            
        
        - 15-什么是单页应用程序
 - 16-什么是路由
 - 17-什么是vue-router以及目录的区分
 - 18-路由的基本使用-5小步
 - 19-路由的使用完成-2核心步骤
 - 20-路由的使用补充说明path的路径问题
 - 21-路由模块的拆分
 - 22-使用router-link替代a标签实现高亮
 - 23-精确匹配和模糊匹配
 - 24-自定义精确和模糊的类名
 - 25-总结
 
            1-16 Vue路由(二)
            
        
        - 01-路由的使用巩固
 - 02-前置铺垫-页面传参说明
 - 03-导航链接传值-查询参数传值
 - 04-导航链接传值-动态路由传值-需要配对应动态路由
 - 05-两种传参方式的风格说明
 - 06-路由重定向
 - 07-配置页面404
 - 08-路由模式-history模式和hash模式
 - 09-编程式导航-通过name和path
 - 10-编程式导航-两种方式的传参区别
 
            1-17 综合案例-面经(基础版)
            
        
        - 11-综合练习-面经基础版-准备架子-分析路由
 - 12-综合练习-面经基础版-配置嵌套路由
 - 13-安装axios-请求动态渲染首页
 - 14-综合练习-面经基础版-跳转详情页----
 - 15-综合练习-面经基础版-动态渲染详情页
 - 16-路由参数传递总结
 - 17-改造代码-利用query传参的演示
 - 18-keep-alive缓存组件-以及完整的11个钩子函数
 
            1-18 移动端-面经项目(一)
            
        
        - 19-移动端-面经项目-演示
 - 20-移动端-面经项目-创建项目
 - 21-移动端-面经项目-eslint规范说明
 - 22-移动端-面经项目-初始化项目目录
 - 23-总结
 - 00-简易回顾
 - 01-组件库的基本认知
 - 02-下载vant包和按需&全部的区别
 - 03-vant全部导入
 - 04-vant按需加载
 - 05-项目中vw适配
 - 06-request模块-axios封装
 - 07-request模块-登录测试
 
            1-19 移动端-面经项目(二)
            
        
        - 08-storage模块封装
 - 09-配置一级路由完成
 - 10-路由的补充说明
 - 11-vant-底部tabbar基本使用
 - 12-配置嵌套路由-底部tab开启路由模式
 - 13-主题定制效果
 - 14-登录的基本架子
 - 15-将按需导入从main.js中抽离
 - 16-登录页的基本提交数据和表单校验配置
 - 17-准备注册页的布局
 - 18-Toast轻提示
 - 19-将请求进行封装的说明
 - 20-注册请求模块的封装
 
            1-20 移动端-面经项目(三)
            
        
        - 21-响应拦截器统一处理错误
 - 22-登录请求功能完成
 - 23-总结
 - 00-请求函数的画图理解
 - 01-页面访问拦截的逻辑分析
 - 02-导航守卫的基本概念语法和存在的意义
 - 03-导航守卫实现登录拦截
 - 04-错误的说明
 - 05-vant项目的定位
 - 06-准备首页的基本布局
 - 07-拆分文章组件(通用组件)
 - 08-封装接口-获取文章列表数据
 - 09-按需和默认
 - 10-请求拦截器统一携带token
 
            1-21 移动端-面经项目(四)
            
        
        - 11-动态渲染文章列表页
 - 12-list组件的基本特性
 - 13-分页加载更多数据
 - 14-没有更多数据处理---
 - 15-点击按钮实现基本的切换
 - 16-根据sorter条件动态控制类名
 - 17-收藏和点赞的快速实现
 - 18-面经详情的快速实现
 - 19-个人中心的准备
 - 20-将项目代码打包
 - 21-打包发布-异步组件优化
 - 22-总结
 - 23-补充-token过期的处理
 
            1-22 Vuex(上)
            
        
        - 01-vuex的基本概念
 - 02-vuex的优点和什么样的数据适合存vuex
 - 03-构建多组件共享数据的环境
 - 04-创建一个空仓库
 - 05-仓库中提供数据-页面插值使用
 - 06-利用辅助函数mapState获取数据
 - 07-利用辅助函数mapState获取数据2
 - 08-开启严格模式-vuex同样遵循单向数据流
 - 09-页面中调用mutation函数-修改数据
 - 10-页面中调用mutation函数-带参数的写法
 - 11-mapMutations辅助函数的演示
 - 12-小结
 
            1-23 Vuex(下)
            
        
        - 13-vuex语法巩固-1-准备vuex数据和mutation
 - 14-vuex语法巩固-2-实现功能
 - 15-vuex语法巩固-3-实现输入框值绑定
 - 16-actions的基本语法-dispatch和mapActions
 - 17-actions的基本语法-异步处理完commit mutation
 - 18-核心概念-getters和mapGetters
 - 19-进阶拓展-vuex分模块
 - 20-进阶拓展-获取子模块state
 - 21-进阶拓展-获取子模块getters
 - 22-进阶拓展-调用子模块的mutation和actions
 - 23-所有语法汇总
 - 24-xmind总结
 
            1-24 Vuex购物车案例
            
        
        - 01-vuex购物车案例-准备项目
 - 02-vuex购物车案例-准备cart模块
 - 03-准备后端接口服务环境
 - 04-发送请求获取数据渲染
 - 05-基于vuex的数据-动态渲染购物车
 - 06-修改数量-注册事件-dispatch-action
 - 07-修改数据-发送请求-本地更新
 - 08-绘图分析修改数据的流程
 - 09-购物车案例案例完成-底部getters渲染
 
            1-25 PC端-面经项目(一)
            
        
        - 10-面经PC项目的基本预览
 - 11-创建面经PC项目-说明sass的两种语法
 - 12-构建面经PC的目录
 - 13-element-ui全部导入
 - 14-element-ui按需导入
 - 15-element-ui主题色配置
 - 16-准备storage和request模块
 - 17-分析路由-准备文件夹-配置路由
 - 18-通过面板组件提供登录架子-控制组件的样式的两种方式
 - 19-深度作用选择器影响子组件
 - 20-准备登录的静态结构
 - 21-样式优化
 - 22-总结
 - 01-element-ui-基本校验-1
 - 02-element-ui-基本校验-2
 
            1-26 PC端-面经项目(二)
            
        
        - 03-element-ui-正则校验
 - 04-element-ui-添加提交前的校验
 - 05-element-ui-重置表单
 - 06-封装登录api-页面调用方法
 - 07-明确-以后的规范token等个人信息相关-存vuex
 - 08-登录获取token存入vuex
 - 09-完成vuex的持久化
 - 10-登录访问拦截
 - 11-layout布局 和 请求拦截器携带token
 - 12-退出功能
 - 13-响应拦截器处理token过期
 - 14-vue中使用echarts-要在mounted中进行初始化
 - 15-element-ui表格的基本渲染
 - 16-element-ui发送请求获取数据
 - 17-存储数据-结合数据进行渲染
 
            1-27 PC端-面经项目(三)
            
        
        - 18-表格动态渲染按钮
 - 19-分页组件的基本使用-1
 - 20-分页组件的基本使用-2
 - 21-总结
 - 01-明确使用抽屉组件-注册点击事件
 - 02-准备抽屉控制抽屉显示隐藏
 - 03-表格作用域插槽的巩固
 - 04-计算属性控制标题
 - 05-准备表单结构-准备富文本编辑器
 - 06-添加非空校验
 - 07-添加完成
 - 08-添加后重置数据
 - 09-删除功能完成
 - 10-修改回显完成
 - 11-修改提交完成
 - 12-预览功能完成
 
第二章 HR-saas中台管理项目
            2-1 项目前置知识
            
        
        - 1.1实现表单基本结构
 - 1.2表单校验的先决条件
 - 1.3表单校验规则
 - 1.4自定义校验规则
 - 1.5手动校验的实现
 - 2.1关于Promise你必须知道几件事
 - 2.异步编程的终极方案
 
            2-2 项目基础环境搭建
            
        
        - 1.vue-element-admin的了解和介绍
 - 2.搭建项目前的一些基本准备
 - 3.项目模板启动和目录介绍
 - 4.1项目运行机制和代码注释-main.js
 - 4.2项目运行机制和代码注释-App.vue
 - 4.3项目运行机制和代码注释-permission.js
 - 4.4项目运行机制和代码注释
 - 4.5.6项目运行机制和代码注释-scss-icons
 - 5.1SCSS处理的了解和使用-搭建小型的测试环境
 - 5.2SCSS处理的了解和使用-基本语法
 - 6.建立远程Git仓库并完成初始提交
 - 7.1Axios的拦截器介绍
 - 7.2api模块的单独封装
 - 8.公共资源图片和统一样式
 
            2-3 登录模块
            
        
        - 1.设置固定的本地访问端口和网站名称
 - 2.登录页面的基础布局
 - 3.1表单校验的先决条件
 - 3.2手机号和密码的校验
 - 3.3关于修饰符
 - 4.1为什么会出现跨域
 - 4.2开发环境解决跨越代理
 - 5.封装单独的登录接口
 - 6.1在Vuex中对token进行管理
 - 6.2封装登录的Action
 - 7.1区分axios在不同环境中的请求基础地址
 - 7.2处理axios的响应拦截器
 - 8.登录页面调用登录action,处理异常
 - 【补充说明】人资项目接口说明
 
            2-4 主页模块(一)
            
        
        - 1.1权限拦截的流程图
 - 1.2流程图转化代码
 - 2.主页的左侧导航样式
 - 3.设置头部内容的布局和样式
 - 4. 获取用户资料接口和token注入
 - 5.封装获取用户资料的action并共享用户状态
 - 6.1权限拦截器调用action
 - 6.2获取头像接口合并数据
 - 7.1自定义指令
 - 7.2在main.js完成自定义指令全局注册
 
            2-5 主页模块(二)
            
        
        - 8.实现登出功能
 - 9.1主动介入token处理的业务逻辑
 - 9.2流程图转化代码
 - 10.Token失效的被动处理
 
            2-6 路由和页面
            
        
        - 1.路由页面整理
 - 2.1新建模块的页面和路由文件
 - 2.2设置每个模块的路由规则
 - 3.静态路由和动态路由临时合并,形成左侧菜单
 - 4.左侧菜单的显示逻辑,设置菜单图标
 
            2-7 组织架构上
            
        
        - 1.1认识组织架构
 - 1.2实现组织架构的头部内容
 - 1.3树形组件认识
 - 1.4实现树形的静态组织结构
 - 2.1封装单独的树操作栏组件
 - 2.2在组织架构中应用操作栏组件
 - 3.1封装API接口,获取组织架构数据
 - 3.2将数组数据转化成树形结构
 
            2-8 组织架构中
            
        
        - 4.1封装删除接口,注册下拉菜单事件
 - 4.2调用删除接口,通知父组件更新数据
 - 5.1封装新增接口,新建组件中的弹层结构
 - 5.2点击新增子部门显示弹层组件
 - 6.1完成新增表单的基本校验条件
 - 6.2配置新增表单的基本校验规则
 - 6.3部门名称和部门编码的自定义校验
 - 6.4处理首部内容的pid数据
 
            2-9 组织架构下
            
        
        - 7.新增部门功能-部门负责人数据
 - 8.1校验通过,调用新增接口
 - 8.2利用sync修饰符关闭新增弹层
 - 8.3取消时重置数据和校验
 - 9.1点击编辑弹出层,记录当前节点
 - 9.2父组件调用子组件的获取详情方法
 - 9.3根据计算属性显示控制标题
 - 10.1封装编辑接口,保存区分场景
 - 10.2校验规则支持编辑场景下的校验
 
            2-10 公司角色和角色管理
            
        
        - 1.建立公司角色页面的基本结构
 - 2.1读取角色列表数据
 - 2.2读取公司信息数据
 - 3.删除角色功能
 - 4.1封装编辑接口,新建编辑弹层
 - 4.2实现编辑功能,为新增功能留口
 - 5.新增角色功能
 
            2-11 员工管理(一)
            
        
        - 1.1通用工具栏的组件结构
 - 1.2组件统一注册
 - 2.员工列表页面的基本布局和结构
 - 3.员工列表数据请求和分页加载
 - 4.1利用列格式化属性处理聘用形式
 - 4.2过滤器解决时间格式的处理
 - 5.删除员工功能
 - 6.1新建员工弹层组件
 - 6.2引用弹出层,点击弹出
 - 6.3新增员工的表单校验
 - 6.4加载部门数据转化树形
 
            2-12 员工管理(二)
            
        
        - 6.5点击部门赋值表单数据
 - 7.新增员工功能-确定-取消
 - 8.员工导入组件封装
 - 9.1建立公共导入的页面路由
 - 9.2分析excel导入代码,封装接口
 - 9.3实现excel导入
 - 9.4excel导入的时间问题
 - 10.1安装excel所需依赖和按需加载
 - 10.2excel导出参数的介绍
 - 10.3excel导出基本的结构
 
            2-13 员工管理(三)
            
        
        - 10.4导出时间格式的处理
 - 10.5复杂表头的导出
 - 11.1详情页的基本布局和路由
 - 11.2读取和保存用户信息的接口
 - 11.3实现用户名和密码的修改
 - 12.1封装个人详情组件
 - 12.2封装岗位组件
 - 13.1读取个人保存个人信息
 - 13.2读取保存岗位信息
 - 14.配置腾讯云Cos
 
            2-14 图片上传、预览及打印(一)
            
        
        - 15.封装上传图片组件-上传组件需求分析
 - 16.1新建文件上传组件
 - 16.2点击图片进行预览
 - 16.3根据上传数量控制上传按钮
 - 16.4删除图片和添加图片
 - 16.5上传之前检查
 - 16.6上传动作调用上传腾讯云
 
            2-15 图片上传、预览及打印(二)
            
        
        - 16.7上传成功之后处理返回数据
 - 16.8上传的进度条显示
 - 17.1将员工的头像和证件照赋值给上传组件
 - 17.2保存时处理头像和证件照的保存
 - 18.员工列表显示图片
 - 19.图片地址生成二维码
 - 20.1新建打印页面及路由
 - 20.2利用vue-print-nb进行打印
 
            2-16 权限设计和管理(一)
            
        
        - 1.权限设计-RBAC的权限设计思想
 - 2.1新建分配角色窗体
 - 2.2获取角色列表和当前用户角色
 - 2.3给员工分配角色
 - 3.1新建权限点管理页面
 - 3.2获取权限数据并转化树形
 - 3.3新增编辑权限的弹层
 - 3.4新增,编辑,删除权限点
 - 4.1新建分配权限弹出层1
 - 4.1新建分配权限弹出层2
 
            2-17 权限设计和管理(二)
            
        
        - 4.2给角色分配权限
 - 5.1权限受控的主体思路
 - 5.2新建Vuex中管理权限的模块
 - 5.3Vuex筛选权限路由
 - 5.4权限拦截出调用筛选权限Action
 - 5.5静态路由动态路由解除合并
 - 6. 登出时,重置路由权限和 404问题
 - 7.1功能权限的受控思路
 - 7.2使用Mixin技术将检查方法注入
 
            2-18 首页
            
        
        - 1.全模块集成
 - 1.首页的页面结构
 - 2.首页用户资料显示
 - 3.1新建工作日历组件结构
 - 3.2实现工作日历逻辑
 - 4.1了解雷达图
 - 4.2封装雷达图插件
 - 5.审批流程业务的基本介绍
 - 6.提交一个离职审批-弹层
 - 6.提交一个离职审批-调用接口
 
            2-19 多语言tab页
            
        
        - 1.全屏插件的引用
 - 2.动态主题的设置
 - 3.1初始化多语言包
 - 3.1初始化多语言包-2
 - 3.2引入自定义语言包
 - 3.3在左侧菜单中应用多语言包
 - 3.4封装多语言插件
 - 4.tab页的视图引入
 
            2-20 项目打包上线
            
        
        - 1.打包之前的路由模式
 - 2.1性能分析
 - 2.2webpack排除打包
 - 2.3CDN文件配置
 - 2.4注入CDN文件到模板
 - 3.1使用koa框架部署项目
 - 3.2解决history页面访问问题
 - 3.3解决生产环境跨域问题
 
第三章 Vue3优医问诊项目
            3-1 Vite构建工具
            
        
        - 01-vue3 现状介绍
 - 02-vite 构建工具
 - 03-vite 创建项目
 - 04-代码分析
 
            3-2 Vue3语法
            
        
        - 05-组合式API介绍
 - 06-setup函数
 - 07-reactive函数
 - 08-ref函数
 - 09-reactive 与 ref 的选择
 - 10-setup语法糖
 - 11-computed函数
 - 12-watch函数
 - 13-生命周期函数
 - 14-ref获取DOM元素
 - 15-ref操作组件-defineExpose
 
            3-3 组件通讯
            
        
        - 16-父传子-defineProps函数J
 - 17-子传父-defineEmits函数
 - 18-跨级组件通讯provide与inject函数
 - 19-保持响应式-toRefs函数
 
            3-4 综合案例
            
        
        - 20-综合案例-基础准备
 - 21-综合案例-功能实现
 - 配置代码片段
 
            3-5 TypeScript初识
            
        
        - 00-回顾和反馈
 - 01-TypeScript 介绍
 - 02-TypeScript 作用
 - 03-TypeScript 编译
 - 04-创建 vue-ts 项目
 
            3-6 TypeScript基础类型
            
        
        - 05-类型注解
 - 06-原始类型
 - 07-数组类型
 - 08-联合类型
 - 09-类型别名
 
            3-7 TypeScript常用类型(一)
            
        
        - 10-函数类型-基本使用
 - 11-函数类型-void 类型
 - 12-函数类型-可选参数
 - 13-对象类型-基本使用
 - 14-对象类型-扩展用法
 - 15-接口 interface
 - 16-interface 继承
 - 17-type 交叉类型
 - 18-interface vs type
 
            3-8 TypeScript常用类型(二)
            
        
        - 19-类型推断
 - 20-字面量类型介绍
 - 21-字面量类型应用
 - 22-any 类型
 - 23-类型断言
 - 24-泛型-在类型别名上应用
 - 25-泛型在接口上应用
 - 26-泛型在函数上应用
 - 27-案例-时间格式化函数
 - 28-案例-完结
 
            3-9 TypeScript高级
            
        
        - 00-反馈和回顾
 - 01-defineProps的TS写法
 - 02-defineEmits的TS写法
 - 03-ref的TS写法
 - 04-reactive的TS写法
 - 05-computed和TS
 - 06-事件处理与TS
 - 07-template的ref和TS
 - 08-非空断言
 - 09-类型声明文件-基本介绍
 - 10-内置类型声明文件
 - 11-第三方包类型声明文件
 - 11-自定义类型声明文件-共享类型
 - 12-给JS文件提供类型
 
            3-10 黑马头条案例
            
        
        - 13-黑马头条-基本结构
 - 14-axios 与 TypeScript
 - 15-黑马头条-频道渲染
 - 16-黑马头条-导航切换
 - 17-黑马头条-列表更新
 
            3-11 Pinia介绍和使用
            
        
        - 18-Pinia 介绍
 - 19-Pinia 15分钟上手
 - 00-反馈&回顾
 - 01-storeToRefs的使用
 - 02-使用 Pinia 改造头条
 
            3-12 项目介绍和初始化
            
        
        - 03-项目介绍
 - 04-能学到什么
 - 05-pnpm介绍&安装
 - 06-项目创建
 - 07-vscode插件安装
 - 08-eslint 预制配置
 - 09-项目目录调整
 - 10-vscode提交第一次代码
 
            3-13 项目配置文件搭建
            
        
        - 11-路由代码解析
 - 12-用户状态仓库
 - 13-数据持久化
 - 14-stores统一导出
 - 15-vant组件库
 - 16-移动端适配
 - 17-请求工具函数-上
 
            3-14 请求工具函数封装
            
        
        - 00-反馈&回顾
 - 01-请求工具函数-401处理
 - 02-请求工具函数
 - 03-请求工具函数分析
 - 04-测试请求工具
 
            3-15 路由配置+主题定制
            
        
        - 05-约定路由规则
 - 06-路由与组件
 - 07-css变量主题定制
 - 08-vant组件自动按需加载
 
            3-16 cp-nav-bar 组件
            
        
        - 09-cp-nav-bar 组件结构
 - 10-cp-nav-bar 组件功能
 - 11-cp-nav-bar 组件类型
 
            3-17 页面布局-头底+表单
            
        
        - 12-页面布局-头底
 - 13-页面布局-表单
 - 14-图标组件-打包svg地图
 
            3-18 登录功能
            
        
        - 00-反馈和回顾
 - 01-图标组件-封装svg组件
 - 02-表单校验
 - 03-密码登录
 - 04-短信登录-切换效果
 - 05-短信登录-发送短信
 - 06-短信登录-进行登录
 
            3-19 布局容器
            
        
        - 07-布局容器-组件路由
 - 08-布局容器-底部tab栏
 - 09-布局容器-访问权限控制
 - 10-布局容器-页面标题
 
            3-20 个人中心
            
        
        - 11-个人中心-用户信息类型
 - 12-个人中心-头部展示
 - 13-个人中心-快捷工具
 - 14-个人中心-退出登录
 
            3-21 家庭档案
            
        
        - 15-家庭档案-路由与组件
 - 16-家庭档案-展示患者
 - 00-反馈和回顾
 - 01-家庭档案-v-model语法糖
 - 02-cp-radio-btn 组件封装-01-结构&渲染
 - 03-cp-radio-btn 组件封装-02实现v-model
 - 04-家庭档案-侧边栏显示隐藏
 - 05-家庭档案-准备表单
 - 06-家庭档案-准备表单-默认就诊人数据
 - 07-家庭档案-身份证校验
 - 08-家庭档案-身份证校验-添加类型
 - 09-家庭档案-添加患者
 - 10-家庭档案-编辑患者
 - 11-家庭档案-删除患者
 
            3-22 首页模块
            
        
        - 12-首页模块-基础结构
 - 13-首页模块-切换知识列表
 - 14-首页模块-知识加载-效果
 - 15-首页模块-知识数据-类型
 - 16-首页模块-知识加载-实现
 - 00-反馈&回顾&优化
 - 00-今日内容介绍
 - 01-首页模块-推荐关注医生-结构
 - 02-首页模块-vueuse
 - 03-首页模块-推荐关注医生-展示
 - 04-首页模块-关注医生
 - 05-首页模块-逻辑复用
 - 06-加载进度
 
            3-23 极速问诊
            
        
        - 07-极速问诊-需求分析
 - 08-枚举基本语法
 - 09-枚举使用场景
 - 10-极速问诊-定义类型
 - 11-极速问诊-问诊记录仓库
 - 12-极速问诊-选择极速问诊类型
 - 13-极速问诊-选择科室-布局
 - 14-极速问诊-选择科室-业务
 
            3-24 病情描述
            
        
        - 15-病情描述-基础布局
 - 00-回顾
 - 01-病情描述-图片上传-组件
 - 02-病情描述-图片上传-业务
 - 03-病情描述-保存数据
 - 04-病情描述-回显数据
 - 05-选择患者-家庭档案兼容
 
            3-25 问诊支付
            
        
        - 06-问诊支付-页面渲染
 - 07-问诊支付-流程讲解
 - 08-问诊支付-生成订单
 - 09-问诊支付-进行支付-拦截放弃订单
 - 10-问诊支付-进行支付
 - 11-仍要关闭BUG
 
            3-26 问诊室聊天(一)
            
        
        - 12-问诊室-路由与组件
 - 13-问诊室-消息卡片
 - 00-回顾&今日介绍
 - 01-认识websocket
 - 02-问诊室-socket.io使用
 - 03-问诊室-通讯规则
 - 04-问诊室-数据类型&结构含义
 - 05-问诊室-建立连接
 - 06-问诊室-默认消息-处理数据
 
            3-27 问诊室聊天(二)
            
        
        - 07-问诊室-默认消息-渲染消息
 - 08-问诊室-上午回顾
 - 09-问诊室-获取订单详情
 - 10-问诊室-控制就诊状态
 - 11-问诊室-发送文字-发送成功
 - 12-问诊室-文字聊天-渲染完毕
 - 13-问诊室-图片聊天J
 - 14-问诊室-图片加载后滚动到最下方J
 - 00-回顾
 
            3-28 问诊室聊天(三)
            
        
        - 01-问诊室-聊天记录-思路分析
 - 02-问诊室-聊天记录-功能实现
 - 03-问诊室-聊天记录-图片加载后滚动问题
 - 04-问诊室-消息已读
 - 05-问诊室-查看处方
 - 06-问诊室-购买药品
 - 07-问诊室-评价组件准备
 - 08-问诊室-评价数据准备
 - 09-问诊室-提交评价和修改消息状态
 
            3-29 问诊记录(一)
            
        
        - 10-问诊订单-页面搭建
 - 11-问诊订单-问诊记录API函数
 - 12-问诊记录-加载信息
 - 13-问诊记录-列表操作按钮
 - 14-问诊室-支付失败
 - 15-问诊记录-取消订单
 - 00-回顾&反馈
 - 01-问诊记录-删除订单
 
            3-30 问诊记录(二)
            
        
        - 02-问诊记录-查看处方Hook
 - 03-问诊记录-问诊详情
 - 04-问诊记录-cp-consult-more组件
 - 05-问诊记录-详情按钮处理
 
            3-31 问诊详情
            
        
        - 06-问诊详情-取消订单逻辑提取
 - 07-问诊详情-删除订单&查看处方提取
 - 08-问诊详情-复制功能
 - 09-问诊详情-支付抽屉组件封装
 
            3-32 药品订单
            
        
        - 10-药品订单-支付页面
 - 11-药品订单-进行支付
 - 补充-路由传参
 - 00-反馈&回顾&今日内容
 - 01-药品订单-支付结果
 - 02-药品订单-订单详情
 - 03-药品订单-物流详情
 - 04-药品订单-高德地图-初始化
 - 05-药品订单-高德地图-物流轨迹
 
            3-33 第三方登录
            
        
        - 06-第三方登录-QQ登录流程
 - 07-第三方登录-跳转QQ登录
 - 08-第三方登录-进行登录
 - 09-第三方登录-绑定手机
 - 10-apifox的调试
 - 11-第三方登录-验证码hook封装
 - 12-第三方登录-开发生产环境
 
            3-34 真机调试+项目部署
            
        
        - 13-扩展-真机调试
 - 14-扩展-mock接口
 - 15-项目部署-pm2部署
 - 16-演示腾讯云部署
 - 17-项目部署-gitlab自动部署
 
第四章 Vue3.0小兔鲜儿电商项目
            4-1 Vue3.0组合式API(01)
            
        
        - 01-为什么学vue3
 - 02-vite基本使用
 - 03-创建vue应用
 - 04-选项API和组合API
 - 05-组合API-setup函数
 - 06-组合API-生命周期
 
            4-2 Vue3.0组合式API(02)
            
        
        - 07-组合API-reactive函数
 - 08-组合API-toRef函数
 - 09-组合API-toRefs函数
 - 10-组合API-ref函数
 - 11-知识运用案例
 
            4-3 Vue3.0组合式API(03)
            
        
        - 12-组合API-computed函数-01基本使用
 - 12-组合API-computed函数-02高级使用
 - 13-组合API-watch函数
 - 13-组合API-watch函数-需要深度监听情况
 - 14-组合API-ref属性
 
            4-4 Vue3.0组合式API(04)
            
        
        - 15-组合API-父子通讯-01父传子
 - 15-组合API-父子通讯-02子传父
 - 15-组合API-父子通讯-03-v-model新用法
 - 16-组合API-依赖注入
 
            4-5 项目介绍
            
        
        - 01-补充-v-model语法糖
 - 02-补充-mixins语法
 - 03-项目介绍
 - 04-配套资源
 - 05-使用技术
 - 06-前情提要
 
            4-6 项目搭建
            
        
        - 07-创建项目
 - 08-目录调整-01调整代码和目录
 - 09-目录调整-额外配置文件
 - 10-vuex-vue3.0的根模块各种用法
 - 11-vuex-vue3.0模块的用法
 - 12-准备远端仓库查看代码
 
            4-7 Vuex持久化+axios拦截器
            
        
        - 13-vuex-持久化
 - 14-请求工具-01创建新axios实例&请求拦截器
 - 15-请求工具-响应拦截器
 
            4-8 axios请求封装+路由设计
            
        
        - 16-请求工具-03-请求函数封装
 - 17-请求工具-04-测试请求工具函数
 - 18-路由设计
 - 19-首页-路由与组件
 - 20-首页-less的自动化导入-01准备变量文件和混入文件
 - 21-首页-less的自动化导入-02自动导入
 
            4-9 首页布局分析+布局
            
        
        - 01-昨日回顾&今日介绍
 - 02-首页-样式重置与公用
 - 03-首页-顶部通栏布局
 - 04-首页-顶部通栏布局-setup使用vuex数据需要计算属性
 - 05-首页-头部布局
 - 06-首页-底部布局
 
            4-10 首页头部导航组件和交互
            
        
        - 07-首页-头部分类导航组件
 - 08-首页-头部分类导航渲染
 - 09-首页-头部分类导航交互
 - 10-首页-吸顶头部组件-传统实现
 - 11-首页-吸顶头部组件-组合API
 
            4-11 首页主体区域布局和功能实现
            
        
        - 12-首页主体-左侧分类-结构渲染
 - 13-首页主体-左侧分类-弹层展示
 - 14-首页主体-左侧分类-处理品牌
 - 15-首页主体-左侧分类-骨架效果
 
            4-12 轮播图布局+逻辑封装
            
        
        - 01-昨日回顾&今日介绍
 - 02-首页主体-轮播图-基础布局
 - 03-首页主体-轮播图-渲染结构
 - 04-首页主体-轮播图-逻辑封装
 
            4-13 首页主体-面板封装
            
        
        - 05-首页主体-面板封装
 - 06-首页主体-新鲜好物
 - 07-首页主体-人气推荐
 - 08-首页主体-补充-vue动画
 - 09-首页主体-面板骨架效果
 
            4-14 组件数据懒加载
            
        
        - 10-首页主体-组件数据懒加载
 - 11-首页主体-组件数据懒加载-补充
 - 12-首页主体-热门品牌-01基础功能
 - 13-首页主体-热门品牌-02骨架和数据懒加载
 
            4-15 图片懒加载
            
        
        - 14-首页主体-商品区块
 - 15-首页主体-最新专题
 - 16-首页主体-图片懒加载-01-IntersectionObserver了解
 - 17-首页主体-图片懒加载-02-懒加载指令
 
            4-16 面包屑组件
            
        
        - 00-昨日回顾&今日介绍
 - 01-顶级类目-面包屑组件-初级
 - 02-顶级类目-面包屑组件-高级-01过渡mp4
 - 02-顶级类目-面包屑组件-高级-02终极
 
            4-17 批量注册组件+分类商品
            
        
        - 03-顶级类目-批量注册组件
 - 04-顶级类目-基础布局搭建
 - 04-顶级类目-基础布局搭建-改造
 - 05-顶级类目-分类商品-布局
 - 06-顶级类目-分类商品-展示
 - 07-顶级类目-面包屑切换动画
 
            4-18 筛选区展示
            
        
        - 08-二级类目-处理跳转细节
 - 09-二级类目-展示面包屑
 - 10-二级类目-筛选区展示
 
            4-19 复选框组件封装+排序组件
            
        
        - 00-昨日回顾&今日介绍
 - 01-二级类目-复选框组件封装
 - 02-二级类目-结果区-排序组件
 
            4-20 无限加载组件+排序和筛选
            
        
        - 03-二级类目-结果区-数据加载-01-无限加载组件
 - 04-二级类目-结果区-数据加载-02-使用无限加载数据加载商品数据
 - 05-二级类目-结果区-进行筛选-01-排序
 - 06-二级类目-结果区-进行筛选-02-筛选
 
            4-21 图片预览组件+图片放大镜
            
        
        - 07-商品详情-基础布局
 - 08-商品详情-渲染面包屑
 - 09-商品详情-图片预览组件
 - 10-商品详情-图片放大镜
 - 11-商品详情-基本信息展示
 
            4-22 城市组件
            
        
        - 00-昨日回顾&今日介绍
 - 01-商品详情-城市组件-基础布局
 - 02-商品详情-城市组件-获取数据
 - 03-商品详情-城市组件-交互逻辑
 
            4-23 SKU&SPU概念
            
        
        - 04-★规格组件-SKU&SPU概念
 - 05-★规格组件-基础结构和样式
 - 06-★规格组件-渲染与选中效果
 
            4-24 规格组件禁用效果
            
        
        - 07-★规格组件-禁用效果-思路分析
 - 08-★规格组件-禁用效果-路径字典
 - 09-★规格组件-禁用效果-设置状态
 
            4-25 规格组件数据通讯
            
        
        - 00-昨日反馈&今日介绍
 - 01-梳理下SKU组件选中和禁用功能
 - 02-★规格组件-数据通讯-01根据skuId默认选中按钮
 - 03-★规格组件-数据通讯-02选择sku后通知父组件sku信息
 
            4-26 商品详情中的相关组件(一)
            
        
        - 04-商品详情-数量选择组件
 - 05-商品详情-按钮组件
 - 06-商品详情-同类推荐组件
 
            4-27 商品详情中的相关组件(二)
            
        
        - 07-商品详情-标签页组件
 - 08-商品详情-热榜组件
 - 09-商品详情-详情组件
 - 10-商品详情-注意事项组件
 
            4-28 评价组件
            
        
        - 11-商品详情-评价组件-头部渲染
 - 12-商品详情-评价组件-实现列表-01需求确认&基本布局
 - 12-商品详情-评价组件-实现列表-02-筛选参数准备&获取数据
 - 12-商品详情-评价组件-实现列表-03-完成渲染&格式化函数
 
            4-29 图片预览+分页组件
            
        
        - 00-昨日反馈&今日介绍
 - 02-商品详情-评价组件-图片预览
 - 03-商品详情-评价组件-★分页组件-01依赖数据分析
 - 04-商品详情-评价组件-★分页组件-02得到需要的数据
 - 04-商品详情-评价组件-★分页组件-03渲染组件和切换分页
 - 04-商品详情-评价组件-★分页组件-04数据通讯和使用
 
            4-30 登录表单校验
            
        
        - 05-登录-路由与组件
 - 06-登录-基础布局
 - 07-登录-切换效果
 - 08-登录-表单组件
 - 09-登录-表单校验-01-大致步骤
 - 09-登录-表单校验-02-基本使用
 - 09-登录-表单校验-03-完成所有校验
 
            4-31 消息提示组件封装
            
        
        - 10-登录-消息提示组件封装-01基本功能和动画
 - 10-登录-消息提示组件封装-02函数式调用
 
            4-32 手机号登录
            
        
        - 00-昨日反馈&今日介绍
 - 01-登录-账户登录
 - 02-登录-手机号登录-01-思路分析&发送短信验证码
 - 03-登录-手机号登录-02完成登录
 
            4-33 QQ登录流程分析+布局
            
        
        - 04-退出登录
 - 05-登录-QQ登录-流程分析
 - 06-登录-QQ登录-按钮处理-01-本地host
 - 07-登录-QQ登录-按钮处理-02-按钮跳转
 - 08-登录-QQ登录-回跳页面-01-基础布局
 - 09-登录-QQ登录-回跳页面-02-绑定帐号组件&完善信息组件
 
            4-34 QQ登录表单校验
            
        
        - 10-登录-QQ登录-已注册已绑定
 - 11-登录-QQ登录-已注册未绑定-01-获取唯一标识和昵称头像
 - 12-登录-QQ登录-已注册未绑定-02-表单校验
 
            4-35 QQ登录立即绑定+发送短信验证码
            
        
        - 13-登录-QQ登录-已注册未绑定-03-发送短信验证码
 - 14-登录-QQ登录-已注册未绑定-04-立即绑定
 - 15-登录-QQ登录-未绑定没账号
 
            4-36 加入购物车分析+编写Vuex
            
        
        - 00-每日反馈&今日介绍
 - 01-购物车功能分析
 - 02-加入购物车-本地(约定存储字段,编写vuex的mutations和actions,在商品详情加入购物车)
 
            4-37 头部购物车商品列表+删除操作
            
        
        - 03-头部购物车-基础布局&渲染
 - 04-头部购物车-商品列表-本地
 - 05-头部购物车-删除操作-本地
 
            4-38 购物车页面列表展示+单选操作
            
        
        - 06-购物车页面-基础布局
 - 07-购物车页面-列表展示-本地
 - 08-购物车页面-单选操作-本地
 - 09-购物车页面-全选操作-本地
 
            4-39 购物车页面删除操作+确认框组件
            
        
        - 10-购物车页面-删除操作-本地
 - 11-购物车页面-确认框组件
 
            4-40 购物车批量删除+修改数量
            
        
        - 00-每日反馈&今日介绍
 - 01-昨日回顾&今日介绍
 - 02-购物车页面-批量删除-本地
 - 03-购物车页面-无效商品-本地
 - 04-购物车页面-修改数量-本地
 
            4-41 购物车-修改规格
            
        
        - 05-购物车页面-修改规格-本地-01组件准备和切换效果
 - 05-购物车页面-修改规格-本地-02-渲染规格
 - 05-购物车页面-修改规格-本地-03-修改规格
 
            4-42 登录合并购物车+加入购物车+修改规格
            
        
        - 06-登录后-合并购物车
 - 07-登录后-商品列表
 - 08-登录后-加入购物车
 - 09-登录后-删除操作
 - 10-登录后-批量删除
 - 11-登录后-选中状态&修改数量
 - 12-登录后-修改规格 (1)
 - 13-登录后-修改规格 (2)
 
            4-43 下单结算页面渲染
            
        
        - 14-下单结算
 - 15-结算-页面布局
 - 16-结算-渲染页面-01-获取数据&渲染结算页面
 - 17-结算-渲染页面-收货地址默认渲染
 
            4-44 对话框组件封装
            
        
        - 00-昨日回顾&今日内容
 - 01-结算-对话框组件封装-01基本结构
 - 02-结算-对话框组件封装-02双向绑定
 
            4-45 收获地址切换和添加
            
        
        - 03-结算-收货地址-切换-通知结算组件一个默认地址的ID
 - 04-结算-收货地址-切换-完成切换功能
 - 05-结算-收货地址-添加-准备对话框和表单
 
            4-46 提交订单
            
        
        - 06-结算-收货地址-添加-添加收货地址完成
 - 07-结算-收货地址-修改
 - 08-结算-提交订单
 
            4-47 支付宝支付
            
        
        - 09-支付-支付页面-基础布局
 - 10-支付-支付页面-信息展示-01获取数据展示金额
 - 10-支付-支付页面-信息展示-02倒计时函数封装
 - 11-支付-支付流程
 - 12-支付-等待支付和跳转支付宝
 - 13-支付-结果展示
 
            4-48 个人中心页面渲染
            
        
        - 00-昨日反馈&今日内容
 - 01-个人中心-布局容器
 - 02-个人中心-基础布局
 - 03-个人中心-渲染页面
 - 04-个人中心-mock数据
 - 05-个人中心-模拟接口
 
            4-49 个人中心菜单激活
            
        
        - 06-个人中心-菜单激活-01-routerlink的激活类名
 - 06-个人中心-菜单激活-02-嵌套路由写法改造
 
            4-50 订单管理tabs组件
            
        
        - 07-订单管理-tabs组件-01-体验jsx语法
 - 07-订单管理-tabs组件-02-动态渲染结构
 - 07-订单管理-tabs组件-03-实现双向绑定和点击自定义事件
 - 07-订单管理-tabs组件-04使用组件渲染订单tab
 
            4-51 订单管理列表渲染
            
        
        - 08-订单管理-基础布局
 - 09-订单管理-列表渲染-01-抽离组件和获取数据
 - 09-订单管理-列表渲染-02渲染订单组件
 
            4-52 订单管理(条件查询、取消、删除订单、确认收货、查看物流)
            
        
        - 00-昨日回顾&今日内容
 - 01-订单管理-条件查询
 - 02-订单管理-取消订单
 - 03-订单管理-删除订单
 - 04-订单管理-确认收货
 - 05-订单管理-查看物流
 
            4-53 订单详情功能完善
            
        
        - 06-订单详情-头部展示
 - 07-订单详情-steps组件
 - 08-订单详情-查看物流-01-async的setup组件使用
 - 09-订单详情-物流信息-02-teleport组件使用
 - 10-订单详情-商品信息
 - 11-订单详情-取消订单
 - 12-订单详情-确认收货
 
            4-54 项目总结和重点
            
        
        - 13-再次购买
 - 14-总结-划重点
 - 15-总结-vue3.0踩过的坑
 - 16-Vue3.0关注功能
 
阶段六 微信小程序【拓展课程】
展开第一章 微信小程序
            1-1 微信小程序快速入门
            
        
        - 00.学习目标
 - 01.小程序简介 - 小程序与普通网页开发的区别
 - 02.小程序简介 - 体验微信小程序
 - 03.第一个小程序 - 了解注册小程序开发账号的流程
 - 04.第一个小程序 - 获取小程序的AppID
 - 05.第一个小程序 - 安装微信开发者工具
 - 06.第一个小程序 - 扫码登录到微信开发者工具
 - 07.第一个小程序 - 设置外观和代理
 - 08.第一个小程序 - 演示新建小程序项目的步骤
 - 09.第一个小程序 - 查看项目运行效果的两种方式
 - 10.第一个小程序 - 了解微信开发者工具主界面的5个组成部分
 - 11.小程序代码的构成 - 了解项目的基本组成结构
 - 12.小程序代码的构成 - 小程序页面的组成部分
 - 13.小程序代码的构成 - 认识小程序中的4种配置文件
 - 14.小程序代码的构成 - app.json文件
 - 15.小程序代码的构成 - project.config.json文件
 - 16.小程序代码的构成 - sitemap.json文件
 - 17.小程序代码的构成 - 页面的.json配置文件
 - 18.小程序代码的构成 - 新建小程序页面
 - 19.小程序代码的构成 - 修改项目首页
 - 20.小程序代码的构成 - WXML的概念以及和HTML之间的区别
 - 21.小程序代码的构成 - WXSS的概念以及和CSS之间的区别
 - 22.小程序代码的构成 - 了解小程序中JS文件的三大分类
 
            1-2 微信小程序的宿主环境
            
        
        - 23.宿主环境 - 了解宿主环境的概念
 - 24.宿主环境 - 小程序的宿主环境
 - 25.宿主环境 - 通信的主体
 - 26.宿主环境 - 小程序的通信模型
 - 27.宿主环境 - 运行机制
 - 28.宿主环境 - 组件 - 了解常用的视图容器组件
 - 29.宿主环境 - 组件 - view组件的基本使用
 - 30.宿主环境 - 组件 - scroll-view组件的基本使用
 - 31.宿主环境 - 组件 - swiper和swiper-item的基本使用
 - 32.宿主环境 - 组件 - swiper组件的常用属性
 - 33.宿主环境 - 组件 - text和rich-text组件
 - 34.宿主环境 - 组件 - button按钮组件
 - 35.宿主环境 - 组件 - image图片组件
 - 36.宿主环境 - 小程序API的3大分类
 
            1-3 微信小程序协同工作和发布
            
        
        - 37.协同工作 - 了解权限管理需求、组织结构、开发流程
 - 38.协同工作 - 了解小程序成员管理的两个方面
 - 39.协同工作 - 开发者的权限说明
 - 40.协同工作 - 了解如何添加项目成员和体验成员
 - 41.发布 - 了解小程序的版本阶段
 - 42.发布 - 了解小程序发布上线的主要步骤
 - 43.发布 - 基于小程序码进行推广
 - 44.发布 - 查看小程序的运营数据
 - 45.总结
 
            1-4 微信小程序基础
            
        
        - 00.学习目标
 - 01.数据绑定 - 了解数据绑定的原则
 - 02.数据绑定 - 动态绑定属性
 - 03.数据绑定 - 三元运算
 - 04.数据绑定 - 算数运算
 - 05.事件绑定 - 了解什么是事件以及小程序中常用的事件
 - 06.事件绑定 - 事件对象的属性列表
 - 07.事件绑定 - target和currentTarget的区别
 - 08.事件绑定 - bindtap的语法格式
 - 09.事件绑定 - 在事件处理函数中为data中的数据赋值
 - 10.事件绑定 - 事件传参
 - 11.事件绑定 - bindinput的语法格式
 - 12.事件绑定 - 实现文本框和data之间的数据同步
 - 13.条件渲染 - if...elif...else
 - 14.条件渲染 - 基于block标签使用if条件渲染
 - 15.条件渲染 - hidden
 - 16.条件渲染 - if和hidden的区别
 - 17.列表渲染 - for循环的基本用法
 - 18.列表渲染 - 手动指定索引和当前项的变量名
 - 19.列表渲染 - 指定key值提高渲染效率
 
            1-5 微信小程序进阶
            
        
        - 20.wxss - 了解什么是wxss以及它和css之间的关系
 - 21.wxss - 了解什么是rpx以及它的实现原理
 - 22.wxss - rpx与px之间的单位换算
 - 23.wxss - @import样式导入
 - 24.wxss - 全局样式
 - 25.wxss - 局部样式
 - 26.全局配置 - 常用的全局配置项以及小程序窗口的组成部分
 - 27.全局配置 - window - 设置导航栏的标题
 - 28.全局配置 - window - 设置导航栏的背景色
 - 29.全局配置 - window - 设置导航栏的标题颜色
 - 30.全局配置 - window - 全局开启下拉刷新的功能
 - 31.全局配置 - window - 关于模拟器的问题说明
 - 32.全局配置 - window - 设置下拉刷新时的窗口背景色
 - 33.全局配置 - window - 设置下拉刷新时loading的样式
 - 34.全局配置 - window - 设置上拉触底的距离
 - 35.全局配置 - tabBar - 什么是tabBar
 - 36.全局配置 - tabBar - tabBar的6个组成部分
 - 37.全局配置 - tabBar - 了解tabBar中的配置项
 - 38.全局配置 - tabBar - 实现tabBar案例的效果
 - 39.页面配置 - 了解页面配置和全局配置的关系
 - 40.页面配置 - 页面配置中常用的配置项
 
            1-6 微信小程序数据请求和案例
            
        
        - 41.数据请求 - 小程序中网络数据请求的限制
 - 42.数据请求 - 配置request合法域名
 - 43.数据请求 - 发起GET请求
 - 44.数据请求 - 发起POST请求
 - 45.数据请求 - 了解如何在页面刚加载的时候请求数据
 - 46.数据请求 - 跳过request合法域名校验
 - 47.数据请求 - 关于跨域和Ajax的说明
 - 48.案例 - 创建项目并梳理项目结构
 - 49.案例 - 配置导航栏效果
 - 50.案例 - 配置tabBar效果
 - 51.案例 - 获取轮播图的数据
 - 52.案例 - 渲染轮播图效果
 - 53.案例 - 获取九宫格的数据
 - 54.案例 - 渲染九宫格的布局效果
 - 55.案例 - 实现首页底部图片的布局效果
 - 56.总结
 
            1-7 微信小程序页面导航
            
        
        - 00.学习目标
 - 01.页面导航 - 了解小程序中实现页面导航的两种方式
 - 02.页面导航 - 声明式导航 - 导航到tabBar页面
 - 03.页面导航 -声明式导航 - 导航到非tabBar页面
 - 04.页面导航 - 声明式导航 - 实现后退导航效果
 - 05.页面导航 - 编程式导航 - 导航到tabBar页面
 - 06.页面导航 - 编程式导航 - 导航到非tabBar页面
 - 07.页面导航 - 编程式导航 - 实现后退导航效果
 - 08.页面导航 - 导航传参 - 声明式导航传参
 - 09.页面导航 - 导航传参 - 编程式导航传参
 - 10导航传参
 
            1-8 微信小程序页面事件和上拉触底案例
            
        
        - 11.页面事件 - 下拉刷新 - 了解什么是下拉刷新
 - 12.页面事件 - 下拉刷新 - 启用下拉刷新
 - 13.页面事件 - 下拉刷新 - 配置下拉刷新窗口的样式
 - 14.页面事件 - 下拉刷新 - 监听页面的下拉刷新事件
 - 15.页面事件 - 下拉刷新 - 停止下拉刷新的效果
 - 16.页面事件 - 上拉触底 - 了解什么是上拉触底
 - 17.页面事件 - 上拉触底 - 监听页面的上拉触底事件
 - 18.页面事件 - 上拉触底 - 配置上拉触底距离
 - 19.上拉触底案例 - 案例效果展示
 - 20.上拉触底案例 - 定义获取随机颜色的方法
 - 21.上拉触底案例 - 渲染UI结构并美化页面效果
 - 22.上拉触底案例 - 上拉触底时获取随机颜色
 - 23.上拉触底案例 - 添加loading提示效果
 - 24.上拉触底案例 - 介绍为什么需要对上拉触底进行节流处理
 - 25.上拉触底案例 - 对上拉触底进行节流处理
 - 26.扩展 - 自定义编译模式
 
            1-9 微信小程序生命周期和wxs
            
        
        - 27.生命周期 - 什么是生命周期
 - 28.生命周期 - 小程序中生命周期的两个分类
 - 29.生命周期 - 什么是生命周期函数
 - 30.生命周期 - 小程序中生命周期函数的两个分类
 - 31.生命周期 - 应用的生命周期函数
 - 32.生命周期 - 页面的生命周期函数
 - 33.wxs - 了解什么是wxs以及应用场景
 - 34.wxs - 了解wxs和JavaScript的关系
 - 35.wxs - 内嵌wxs脚本
 - 36.wxs - 定义外联的wxs脚本
 - 37.wxs - 使用外联的wxs脚本
 - 38.wxs - 了解wxs的4个特点
 
            1-10 本地生活综合案例
            
        
        - 39.案例 - 商铺列表页面的效果演示
 - 40.案例 - 把项目代码加载到微信开发者工具中
 - 41.案例 - 实现导航跳转并传参
 - 42.案例 - 动态设置商铺列表页面的标题内容
 - 43.案例 - 创建商铺列表页面的编译模式
 - 44.案例 - 了解API接口并定义需要的数据节点
 - 45.案例 - 定义getShopList方法获取商品列表数据
 - 46.案例 - 渲染商铺列表的UI结构并美化样式
 - 47.案例 - 展示loading提示效果
 - 48.案例 - 上拉触底时请求下一页数据
 - 49.案例 - 对上拉触底事件进行节流控制
 - 50.案例 - 演示并分析数据加载的问题
 - 51.案例 - 介绍判断是否还有下一页数据的公式
 - 52.案例 - 根据公式判断是否还有下一页的数据
 - 53.案例 - 为商铺列表页面开启下拉刷新效果
 - 54.案例 - 实现下拉刷新的功能
 - 55.案例 - 解决下拉刷新窗口效果不会自动关闭的问题
 - 56.案例 - 使用wxs处理手机号
 - 57.总结
 
            1-11 微信小程序组件和样式
            
        
        - 00.学习目标
 - 01.准备今天要用到的项目
 - 02.自定义组件 - 组件的创建与引用 - 创建自定义组件
 - 03.自定义组件 - 组件的创建与引用 - 局部引用组件
 - 04.自定义组件 - 组件的创建与引用 - 全局引用组件
 - 05.自定义组件 - 组件的创建与引用 - 全局引用VS局部引用
 - 06.自定义组件 - 组件的创建与引用 - 组件和页面的区别
 - 07.自定义组件 - 样式 - 组件的样式隔离特性
 - 08.自定义组件 - 样式 - 组件样式隔离的注意点
 - 09.自定义组件 - 样式 - 修改组件的样式隔离选项
 
            1-12 微信小程序数据、方法、属性和数据监听
            
        
        - 10.自定义组件 - 数据、方法、属性 - 定义data私有数据
 - 11.自定义组件 - 数据、方法、属性 - methods方法
 - 12.自定义组件 - 数据、方法、属性 - 定义properties属性
 - 13.自定义组件 - 数据、方法、属性 - 使用max属性控制自增的最大值
 - 14.自定义组件 - 数据、方法、属性 - data和properties的区别
 - 15.自定义组件 - 数据、方法、属性 - 使用setData修改properties的值
 - 16.自定义组件 - 数据监听器 - 什么是数据监听器及其语法格式
 - 17.自定义组件 - 数据监听器 - 数据监听器的基本用法
 - 18.自定义组件 - 数据监听器 - 监听对象属性的变化
 
            1-13 微信小程序数据监听案例
            
        
        - 19.自定义组件 - 数据监听器案例 - 创建组件并定义数据
 - 20.自定义组件 - 数据监听器案例 - 渲染组件的UI结构
 - 21.自定义组件 - 数据监听器案例 - 定义button的事件处理函数
 - 22.自定义组件 - 数据监听器案例 - 监听对象中指定属性的变化
 - 23.自定义组件 - 数据监听器案例 - 监听对象中所有属性的变化
 - 24.自定义组件 - 纯数据字段 - 什么是纯数据字段
 - 25.自定义组件 - 纯数据字段 - 使用规则
 - 26.自定义组件 - 纯数据字段 - 使用纯数据字段改造数据监听器案例
 
            1-14 组件生命周期和插槽
            
        
        - 27.自定义组件 - 组件的生命周期 - 组件全部的生命周期函数
 - 28.自定义组件 - 组件的生命周期 - 组件主要的生命周期函数
 - 29.自定义组件 - 组件的生命周期 - lifetimes节点
 - 30.自定义组件 - 组件所在页面的生命周期 - 概念
 - 31.自定义组件 - 组件所在页面的生命周期 - pageLifetimes节点
 - 32.自定义组件 - 组件所在页面的生命周期 - 生成随机的RGB颜色值
 - 33.自定义组件 - 插槽 - 什么是插槽
 - 34.自定义组件 - 插槽 - 单个插槽
 - 35.自定义组件 - 插槽 - 启用多个插槽
 - 36.自定义组件 - 插槽 - 定义和使用多个插槽
 
            1-15 父子组件通信和behaviors
            
        
        - 37.自定义组件 - 父子组件通信 - 了解父子组件之间通信的3种方式
 - 38.自定义组件 - 父子组件通信 - 属性绑定
 - 39.自定义组件 - 父子组件通信 - 实现子组件的count属性自增+1
 - 40.自定义组件 - 父子组件通信 - 了解事件绑定的4个核心实现步骤
 - 41.自定义组件 - 父子组件通信 - 了解事件绑定的核心实现代码
 - 42.自定义组件 - 父子组件通信 - 通过事件绑定实现count值的同步
 - 43.自定义组件 - 父子组件通信 - 使用selectComponent获取组件实例
 - 44.自定义组件 - behaviors - 了解什么是behaviors以及它的工作方式
 - 45.自定义组件 - behaviors - 创建behavior
 - 46.自定义组件 - behaviors - 导入并使用behavior
 - 47.自定义组件 - behaviors - 了解behavior中所有可用的节点
 - 48.自定义组件 - behaviors - 同名字段的覆盖和组合规则
 - 49.自定义组件 - 总结
 
            1-16 vant 小程序 UI 组件库和API的Promise化
            
        
        - 01.导入需要用到的小程序项目
 - 02.使用npm包 - 小程序中对npm的支持与限制
 - 03.使用npm包 - vant - 了解什么是Vant Weapp
 - 04.使用npm包 - vant - 安装Vant组件库
 - 05.使用npm包 - vant - 使用Vant组件
 - 06.使用npm包 - vant - 定义和使用CSS变量
 - 07.使用npm包 - vant - 使用CSS变量定制Vant的主题样式
 - 08.使用npm包 - API的Promise化 - 什么是小程序API的Promise化
 - 09.使用npm包 - API的Promise化 - 安装并构建miniprogram-api-promise
 - 10.使用npm包 - API的Promise化 - 三个步骤实现API的Promise化
 - 11.使用npm包 - API的Promise化 - 调用Promise化之后的异步API
 
            1-17 微信小程序全局数据共享
            
        
        - 12.全局数据共享 - 什么是全局数据共享
 - 13.全局数据共享 - 小程序中的全局数据共享方案
 - 14.全局数据共享 - 安装并构建MobX相关的包
 - 15.全局数据共享 - 创建Store实例对象
 - 16.全局数据共享 - 定义计算属性
 - 17.全局数据共享 - 定义actions方法
 - 18.全局数据共享 - 了解将Store中的成员绑定到页面上的实现思路
 - 19.全局数据共享 - 将Store中的成员绑定到页面上
 - 20.全局数据共享 - 在页面中使用Store中的成员
 - 21.全局数据共享 - 了解将Store中的成员绑定到组件上的实现思路
 - 22.全局数据共享 - 将Store中的成员绑定到组件上
 - 23.全局数据共享 - 在组件中使用Store中的成员
 
            1-18 分包
            
        
        - 24.分包 - 基础概念 - 了解分包的概念以及好处
 - 25.分包 - 基础概念 - 分包前后项目的构成
 - 26.分包 - 基础概念 - 分包的加载规则
 - 27.分包 - 基础概念 - 分包的体积限制
 - 28.分包 - 使用分包 - 了解如何配置分包
 - 29.分包 - 使用分包 - 演示在项目中如何配置分包
 - 30.分包 - 使用分包 - 设置分包的别名并查看分包的体积
 - 31.分包 - 使用分包 - 打包原则
 - 32.分包 - 使用分包 - 引用原则
 - 33.分包 - 独立分包 - 了解什么是独立分包以及它和普通分包的区别
 - 34.分包 - 独立分包 - 了解独立分包的应用场景
 - 35.分包 - 独立分包 - 将普通分包改造为独立分包
 - 36.分包 - 独立分包 - 独立分包的引用原则
 - 37.分包 - 分包预下载 - 介绍分包预下载的概念以及好处
 - 38.分包 - 分包预下载 - 配置分包的预下载
 - 39.分包 - 分包预下载 - 分包预下载的限制
 
            1-19 自定义tabBar
            
        
        - 40.自定义tabBar - 演示案例效果
 - 41.自定义tabBar - 了解自定义tabBar的实现步骤
 - 42.自定义tabBar - 在app.json中声明自定义tabBar的配置信息
 - 43.自定义tabBar - 添加tabBar的代码文件
 - 44.自定义tabBar - 基于Vant组件渲染出基本的自定义tabBar效果
 - 45.自定义tabBar - 自定义tabBar的图标和文本
 - 46.自定义tabBar - 循环渲染tabBar的Item项
 - 47.自定义tabBar - 渲染并美化数字徽标的样式
 - 48.自定义tabBar - 按需渲染数字徽标
 - 49.自定义tabBar - 把Store中sum的值渲染为数字徽标
 - 50.自定义tabBar - 实现tabBar页面的切换
 - 51.自定义tabBar - 使用全局数据共享解决tabBar选中项不准确的问题
 - 52.自定义tabBar - 修改tabBar选中项文本的颜色值
 - 53.总结
 
第二章 黑马优购商城项目2.0
            2-1 uni-app和项目搭建
            
        
        - 01.起步 - 项目介绍
 - 02.起步 - 项目文档
 - 03.起步 - 了解什么是uni-app
 - 04.起步 - 下载和安装HBuilderX
 - 05.起步 - 安装scss编译的插件
 - 06.起步 - 对HBuilderX进行个性化的配置
 - 07.起步 - 创建uni-app项目
 - 08.起步 - 了解uni-app项目的目录结构
 - 09.起步 - 把项目运行到微信开发者工具
 - 10.起步 - 配置checkSiteMap选项
 - 11.起步 - 使用Git本地管理uni-app项目
 - 12.起步 - 把本地项目托管到码云
 - 13.tabbar - 创建tabBar对应的4个页面
 - 14.tabbar - 配置tabBar效果
 - 15.tabbar - 配置导航条的样式效果
 - 16.tabbar - 分支的合并与提交
 
            2-2 首页功能实现
            
        
        - 17.首页 - 轮播图 - 创建home子分支
 - 18.首页 - 轮播图 - 安装并配置网络请求的第三方包
 - 19.首页 - 轮播图 - 请求轮播图的数据
 - 20.首页 - 轮播图 - 渲染轮播图的UI结构
 - 21.首页 - 轮播图 - 配置小程序的分包
 - 22.首页 - 轮播图 - 点击轮播图跳转到商品详情页面
 - 23.首页 - 轮播图 - 封装uni.$showMsg()方法
 - 24.首页 - 分类导航 - 获取分类导航的数据
 - 25.首页 - 分类导航 - 渲染分类导航的UI结构
 - 26.首页 - 分类导航 - 切换到分类页面
 - 27.首页 - 楼层区域 - 获取楼层的数据
 - 28.首页 - 楼层区域 - 渲染楼层的标题
 - 29.首页 - 楼层区域 - 渲染楼层左侧的大图片
 - 30.首页 - 楼层区域 - 渲染楼层右侧的小图片
 - 31.首页 - 楼层区域 - 点击楼层图片跳转到商品列表页面
 - 32.首页 - 分支的合并与提交
 
            2-3 分类页面功能实现
            
        
        - 01.分类 - 创建cate分支以及分类页面的编译模式
 - 02.分类 - 实现分类页面滑动区域的左右布局
 - 03.分类 - 动态设置scroll-view组件的高度
 - 04.分类 - 美化左侧scroll-view中item项的样式
 - 05.分类 - 获取分类列表的数据
 - 06.分类 - 动态渲染左侧的一级分类列表
 - 07.分类 - 定义二级分类的数据列表
 - 08.分类 - 动态渲染右侧的二级分类列表
 - 09.分类 - 动态渲染右侧的三级分类列表
 - 10.分类 - 切换一级分类后重置滚动条的位置
 - 11.分类 - 点击三级分类跳转到商品列表页面
 - 12.分类 - 分支的合并与提交
 
            2-4 自定义搜索组件
            
        
        - 13.搜索 - 介绍搜索相关的功能
 - 14.搜索 - 创建search分支
 - 15.搜索 - 自定义组件 - 在uni-app项目中新建自定义的搜索组件
 - 16.搜索 - 自定义组件 - 渲染my-search组件的基本结构
 - 17.搜索 - 自定义组件 - 解决cate分类页面scroll-view高度的问题
 - 18.搜索 - 自定义组件 - 通过自定义属性增强组件的通用性
 - 19.搜索 - 自定义组件 - 为自定义组件封装click事件
 - 20.搜索 - 自定义组件 - 点击cate页面的搜索组件导航到搜索页面
 - 21.搜索 - 自定义组件 - 实现首页搜索组件的吸顶效果
 
            2-5 搜索建议和搜索历史功能实现
            
        
        - 22.搜索 - 搜索建议 - 渲染搜索页面的基本结构
 - 23.搜索 - 搜索建议 - 实现搜索框自动获取焦点
 - 24.搜索 - 搜索建议 - 实现搜索框的防抖处理
 - 25.搜索 - 搜索建议 - 根据关键词查询搜索建议列表
 - 26.搜索 - 搜索建议 - 循环渲染搜索建议列表的UI结构
 - 27.搜索 - 搜索建议 - 美化搜索建议列表的UI结构
 - 28.搜索 - 搜索建议 - 点击搜索Item项导航到商品详情页
 - 29.搜索 - 搜索历史 - 渲染搜索历史记录的基本结构
 - 30.搜索 - 搜索历史 - 美化搜索历史区域的UI结构
 - 31.搜索 - 搜索历史 - 实现搜索建议和搜索历史的按需展示
 - 32.搜索 - 搜索历史 - 将搜索关键词存入historyList
 - 33.搜索 - 搜索历史 - 解决关键词前后顺序的问题
 - 34.搜索 - 搜索历史 - 解决关键词重复的问题
 - 35.搜索 - 搜索历史 - 将搜索历史记录持久化存储到本地
 - 36.搜索 - 搜索历史 - 清空搜索历史记录
 - 37.搜索 - 搜索历史 - 点击搜索历史跳转到商品列表页面
 - 38.搜索 - 分支的合并与提交
 
            2-6 商品列表功能实现
            
        
        - 01.商品列表 - 介绍商品列表页面的功能并创建编译模式
 - 02.商品列表 - 创建goodslist分支
 - 03.商品列表 - 定义请求参数对象
 - 04.商品列表 - 获取商品列表数据
 - 05.商品列表 - 定义商品列表页面的UI结构
 - 06.商品列表 - 美化商品列表页面的UI结构
 - 07.商品列表 - 把商品Item项封装为自定义组件
 - 08.商品列表 - 使用过滤器处理商品价格
 - 09.商品列表 - 初步实现上拉加载更多
 - 10.商品列表 - 使用节流阀防止发起额外的数据请求
 - 11.商品列表 - 判断数据是否加载完毕
 - 12.商品列表 - 实现下拉刷新的效果
 - 13.商品列表 - 点击商品item项导航到商品详情页面
 - 14.商品列表 - 分支的合并与提交
 
            2-7 商品详情功能实现
            
        
        - 15.商品详情 - 创建goodsdetail分支
 - 16.商品详情 - 添加商品详情页的编译模式
 - 17.商品详情 - 获取商品详情的数据
 - 18.商品详情 - 渲染轮播图区域
 - 19.商品详情 - 实现轮播图的大图预览效果
 - 20.商品详情 - 渲染商品信息区域的UI结构
 - 21.商品详情 - 美化商品信息区域的样式
 - 22.商品详情 - 使用rich-text组件渲染HTML内容
 - 23.商品详情 - 解决商品图文详情中图片底部空白间隙的问题
 - 24.商品详情 - 解决webp格式的图片在ios设备上无法正常显示的问题
 - 25.商品详情 - 解决商品价格闪烁的问题
 - 26.商品详情 - 渲染商品导航区域的UI结构
 - 27.商品详情 - 自定义商品导航区域的按钮信息
 - 28.商品详情 - 点击购物车按钮导航到购物车页面
 - 29.商品详情 - 分支的合并与提交
 
            2-8 加入购物车功能实现
            
        
        - 30.加入购物车 - 创建cart分支
 - 31.加入购物车 - 配置vuex
 - 32.加入购物车 - 创建购物车的store模块
 - 33.加入购物车 - 在商品详情页中使用store中的数据
 - 34.加入购物车 - 在mutations中定义addToCart方法
 - 35.加入购物车 - 实现加入购物车的功能
 - 36.加入购物车 - 动态统计购物车中商品的总数量
 - 37.加入购物车 - 持久化存储购物车中的商品
 - 38.加入购物车 - 优化商品详情页的total侦听器
 - 39.加入购物车 - 动态为tabBar设置数字徽标
 - 40.加入购物车 - 将设置tabBar徽标的代码抽离为mixins
 
            2-9 购物车页面-商品列表功能实现
            
        
        - 01.购物车页面 - 演示购物车页面要实现的功能
 - 02.购物车页面 - 创建购物车页面的编译模式
 - 03.购物车页面 - 商品列表区域 - 渲染商品列表的标题区域
 - 04.购物车页面 - 商品列表区域 - 渲染商品列表区域的基本结构
 - 05.购物车页面 - 商品列表区域 - 为my-goods组件封装radio勾选状态
 - 06.购物车页面 - 商品列表区域 - 通过props属性控制radio的按需展示
 - 07.购物车页面 - 商品列表区域 - 动态绑定radio组件的值
 - 08.购物车页面 - 商品列表区域 - 介绍为my-goods组件封装radio-change事件的实现思路
 - 09.购物车页面 - 商品列表区域 - 为my-goods组件封装radio-change自定义事件
 - 10.购物车页面 - 商品列表区域 - 修改购物车中商品的勾选状态
 - 11.购物车页面 - 商品列表区域 - 为my-goods组件封装NumberBox
 - 12.购物车页面 - 商品列表区域 - 通过props属性控制NumberBox的按需展示
 - 13.购物车页面 - 商品列表区域 - 介绍为my-goods组件封装num-change事件的实现思路
 - 14.购物车页面 - 商品列表区域 - 为my-goods组件封装num-change事件
 - 15.购物车页面 - 商品列表区域 - 解决NumberBox组件数据不合法的问题
 - 16.购物车页面 - 商品列表区域 - 完善NumberBox的inputValue侦听器
 - 17.购物车页面 - 商品列表区域 - 修改购物车中商品的数量
 - 18.购物车页面 - 商品列表区域 - 渲染滑动删除的UI效果
 - 19.购物车页面 - 商品列表区域 - 实现滑动删除的功能
 
            2-10 购物车页面-收货地址功能实现
            
        
        - 20.购物车页面 - 收货地址区域 - 创建my-address收货地址组件
 - 21.购物车页面 - 收货地址区域 - 渲染收货地址组件的UI结构 - 上
 - 22.购物车页面 - 收货地址区域 - 渲染收货地址组件的UI结构 - 下
 - 23.购物车页面 - 收货地址区域 - 实现收货地址区域的按需展示
 - 24.购物车页面 - 收货地址区域 - 实现选择收货地址的功能
 - 25.购物车页面 - 收货地址区域 - 渲染收货人的信息
 - 26.购物车页面 - 收货地址区域 - 在vuex中定义用户相关的m_user模块
 - 27.购物车页面 - 收货地址区域 - 将address信息存储到vuex中
 - 28.购物车页面 - 收货地址区域 - 将vuex中的address持久化存储到本地
 - 29.购物车页面 - 收货地址区域 - 将addstr抽离为getters
 - 30.购物车页面 - 收货地址区域 - 重新选择收货地址
 - 31.购物车页面 - 收货地址区域 - 演示取消授权时的问题
 - 32.购物车页面 - 收货地址区域 - 判断用户是否授权
 - 33.购物车页面 - 收货地址区域 - 提示用户重新进行授权
 - 34.购物车页面 - 收货地址区域 - 调用openSetting方法实现重新授权
 - 35.购物车页面 - 收货地址区域 - 解决iPhone真机上无法重新授权的问题
 
            2-11 购物车页面-结算功能实现
            
        
        - 01.购物车页面 - 结算区域 - 把结算区域封装为独立的组件
 - 02.购物车页面 - 结算区域 - 渲染结算区域的结构和样式
 - 03.购物车页面 - 结算区域 - 动态渲染已勾选商品的总数量
 - 04.购物车页面 - 结算区域 - 动态渲染全选按钮的选中状态
 - 05.购物车页面 - 结算区域 - 使用数组的reduce方法改造total的计算方式
 - 06.购物车页面 - 结算区域 - 实现商品的全选与反选功能
 - 07.购物车页面 - 结算区域 - 动态渲染已勾选商品的总价格
 - 08.购物车页面 - 结算区域 - 动态计算tabBar中购物车徽标的值
 - 09.购物车页面 - 结算区域 - 渲染购物车为空时候的页面结构
 - 10.购物车页面 - 分支的合并与提交
 
            2-12 登录功能实现
            
        
        - 11.登录与支付 - 创建settle分支
 - 12.登录与支付 - 点击结算按钮进行条件判断
 - 13.登录与支付 - 登录 - 定义my页面的编译模式
 - 14.登录与支付 - 登录 - 实现登录组件和用户信息组件的按需展示
 - 15.登录与支付 - 登录 - 初步渲染登录组件的基本结构
 - 16.登录与支付 - 登录 - 美化登录组件的样式
 - 17.登录与支付 - 登录 - 绘制登录盒子底部的半椭圆造型
 - 18.登录与支付 - 登录 - 分析登录功能的实现思路
 - 19.登录与支付 - 登录 - 点击登录按钮获取微信用户的基本信息
 - 20.登录与支付 - 登录 - 处理用户取消登录授权的情况
 - 21.登录与支付 - 登录 - 将用户的基本信息存储到vuex
 - 22.登录与支付 - 登录 - 调用uni.login获取code对应的值
 - 23.登录与支付 - 登录 - 进一步完善uni.login调用失败之后的if判断条件
 - 24.登录与支付 - 登录 - 登录获取Token字符串
 - 25.登录与支付 - 登录 - 将Token存储到vuex中
 
            2-13 用户信息和自动跳转功能实现
            
        
        - 26.登录与支付 - 用户信息 - 实现用户头像、昵称区域的基本布局
 - 27.登录与支付 - 用户信息 - 渲染用户的头像和昵称
 - 28.登录与支付 - 用户信息 - 渲染第1个面板的UI结构
 - 29.登录与支付 - 用户信息 - 美化第1个面板的样式
 - 30.登录与支付 - 用户信息 - 渲染第2个面板区域
 - 31.登录与支付 - 用户信息 - 渲染第3个面板区域
 - 32.登录与支付 - 用户信息 - 实现退出登录的功能
 - 33.登录与支付 - 三秒后自动跳转 - 实现倒计时提示的功能
 - 34.登录与支付 - 三秒后自动跳转 - 控制秒数的边界并自动跳转到登录页面
 - 35.登录与支付 - 三秒后自动跳转 - 解决seconds不会被重置的问题
 - 36.登录与支付 - 三秒后自动跳转 - 将返回页的信息对象记录到vuex中
 - 37.登录与支付 - 三秒后自动跳转 - 根据redirectInfo导航到登录之前的页面
 
            2-14 微信支付功能和小程序项目发布
            
        
        - 38.登录与支付 - 微信支付 - 在请求头中添加Token身份认证的字段
 - 39.登录与支付 - 微信支付 - 了解微信支付的流程
 - 40.登录与支付 - 微信支付 - 创建订单
 - 41.登录与支付 - 微信支付 - 订单预支付
 - 42.登录与支付 - 微信支付 - 实现微信支付
 - 43.登录与支付 - 分支的合并与提交
 - 44.发布 - 为什么要进行发布
 - 45.发布 - 了解将uni-app项目发布为小程序的基本流程
 - 46.发布 - 演示将uni-app项目发布为小程序的流程
 - 47.发布 - 了解将uni-app项目发布为Android App的基本流程
 - 48.发布 - 演示将uni-app项目发布为Android App的流程
 
阶段七 React项目实战【拓展课程】
展开第一章 React基础【v6.5】
            1-1 React基本使用
            
        
        - 01-react基础目标
 - 02-react概述
 - 03-react的基本使用
 - 04-react的基本使用(常用方法说明)
 - 05-react脚手架的基本使用
 - 06-react脚手架的基本使用(细节补充说明)知道即可
 - 07-react脚手架中使用react
 - 08-react基础阶段总结
 
            1-2 JSX语法
            
        
        - 09-JSX的学习目标
 - 10-JSX的基本使用
 - 11-为什么脚手架中可以使用JSX语法
 - 12-JSX的注意点
 - 13-在JSX中使用JavaScript表达式
 - 14-JSX中使用JavaScript表达式的注意点
 - 15-JSX的条件渲染
 - 16-JSX的列表渲染
 - 17-JSX的样式处理
 - 18-JSX阶段总结
 
            1-3 React组件基础
            
        
        - 19-React组件基础学习目标
 - 20-React组件介绍
 - 21-组件的两种创建方式(1函数组件)
 - 22-组件的两种创建方式(2类组件)
 - 23-组件的两种创建方式(3抽离为独立js文件)
 - 24-React事件处理(1事件绑定)
 - 25-React事件处理(2事件对象)
 - 26-有状态组件和无状态组件
 - 27-state的基本使用
 - 28-组件中的state和setState()(1setState()修改状态)
 - 29-组件中的state和setState()(2从JSX中抽离事件处理程序)
 - 30-事件绑定this指向(1箭头函数)
 - 31-事件绑定this指向(2bind)
 - 32-事件绑定this指向(3class的实例方法)
 - 33-事件绑定this指向-总结
 - 34-表单处理(1受控组件概念)
 - 35-表单处理(2受控组件使用步骤)
 - 36-表单处理(3受控组件的示例)
 - 37-表单处理(4多表单元素优化)
 - 38-表单处理(5非受控组件)
 - 39-React组件基础总结
 - 40-React组件基础综合案例(1案例需求分析)
 - 41-React组件基础综合案例(2渲染评论列表)
 - 42-React组件基础综合案例(3渲染暂无评论并优化代码)
 - 43-React组件基础综合案例(4获取评论信息)
 - 44-React组件基础综合案例(5发表评论-1)
 - 45-React组件基础综合案例(6发表评论-2边界情况处理)
 
            1-4 React组件进阶
            
        
        - 46-React组件进阶学习目标
 - 47-组件通讯介绍
 - 48-组件的props(1基本使用)
 - 49-组件的props(2特点)
 - 50-组件通讯的三种方式(1父组件传递数据给子组件)
 - 51-组件通讯的三种方式(2子组件传递数据给父组件)
 - 52-组件通讯的三种方式(3兄弟组件通讯)
 - 53-Context的基本使用
 - 54-props深入(1children属性)
 - 55-props深入(2props校验)
 - 56-props深入(3props校验-约束规则)
 - 57-props深入(4props的默认值)
 - 58-组件的生命周期(1概述)
 - 59-组件的生命周期三个阶段(1创建时)
 - 60-组件的生命周期三个阶段(2更新时-1触发时机)
 - 61-组件的生命周期三个阶段(2更新时-2钩子函数说明)
 - 62-组件的生命周期三个阶段(3卸载时)
 - 63-组件的生命周期三个阶段(4不常用钩子函数介绍)
 - 64-render props和高阶组件概述
 - 65-render props模式(1思路分析)
 - 66-render props模式(2使用步骤)
 - 67-render props模式(3演示Mouse组件的复用)
 - 68-render props模式(4children代替render属性)
 - 69-render props模式(5代码优化)
 - 70-高阶组件(1介绍)
 - 71-高阶组件(2使用步骤)
 - 72-高阶组件(3设置displayName)
 - 73-高阶组件(4传递props)
 - 74-React组件进阶总结
 
            1-5 React原理及优化
            
        
        - 75-React原理揭秘学习目标
 - 76-setState()方法的说明(1更新数据)
 - 77-setState()方法的说明(2推荐语法)
 - 78-setState()方法的说明(3第二个参数)
 - 79-JSX语法的转化过程
 - 80-组件更新机制
 - 81-组件性能优化(1减轻state)
 - 82-组件性能优化(2避免不必要的重新渲染1)
 - 83-组件性能优化(2避免不必要的重新渲染-随机数案例)
 - 84-组件性能优化(2避免不必要的重新渲染-随机数案例2)
 - 85-组件性能优化(3纯组件-基本使用)
 - 86-组件性能优化(3纯组件-shallow compare)
 - 87-虚拟DOM和Diff算法
 - 88-虚拟DOM和Diff算法(代码演示)
 - 89-React原理揭秘总结
 
            1-6 React路由
            
        
        - 90-React路由基础学习目标
 - 91-React路由介绍
 - 92-路由的基本使用
 - 93-路由的基本使用(常用组件说明)
 - 94-路由的执行过程
 - 95-编程式导航
 - 96-默认路由
 - 97-匹配模式(1模糊匹配模式)
 - 98-匹配模式(2精确匹配)
 - 99-React路由基础总结
 - 【补充说明】React-RouterV6.x
 
第二章 好客租房项目【v6.5】
            2-1 项目介绍和初始化
            
        
        - 01-好客租房移动Web(上)学习目标
 - 02-项目介绍
 - 03-本地接口部署
 - 04-初始化项目
 - 05-组件库antd-mobile的介绍和使用
 - 06-配置基础路由
 - 07-外观和样式调整
 - 08-两种布局页面
 - 09-嵌套路由
 
            2-2 项目首页布局+功能实现
            
        
        - 10-实现TabBar(1基本使用)
 - 11-实现TabBar(2修改TabBar外观样式)
 - 12-实现TabBar(3TabBar配合路由使用)
 - 13-实现TabBar(4TabBar.Item代码重构)
 - 14-首页模块(首页路由处理)
 - 15-轮播图组件的基本使用
 - 16-获取轮播图数据
 - 17-导航菜单
 - 18-导航菜单(代码重构)
 - 19-轮播图Bug分析和修复
 - 20-TabBar菜单高亮Bug分析和修复
 - 21-在脚手架中使用sass
 - 22-租房小组的业务介绍和数据获取
 - 23-租房小组结构样式
 - 24-租房小组数据渲染
 - 25-最新资讯(作为练习)及解决TabBar遮挡Bug
 - 26-顶部导航
 
            2-3 百度地图API使用
            
        
        - 27-H5中的地理位置API
 - 28-百度地图API(1介绍)
 - 29-百度地图API(2申请百度账号和秘钥)
 - 30-百度地图API(3使用步骤)
 - 31-百度地图API(4获取顶部导航城市信息)
 
            2-4 城市选择和渲染
            
        
        - 32-城市选择模块功能分析
 - 33-城市选择模块(顶部导航栏)
 - 34-获取并处理城市列表数据
 - 35-获取并处理城市列表数据(1数据格式分析和转化)
 - 36-获取并处理城市列表数据(2热门城市数据)
 - 37-封装获取当前定位城市的函数
 - 38-获取并处理城市列表数据(3添加当前定位数据)
 - 39-长列表性能优化(1概述)
 - 40-长列表性能优化(2懒渲染说明)
 - 41-长列表性能优化(3可视区域渲染)
 - 42-react-virtualized(1概述)
 - 43-react-virtualized(2基本使用)
 - 44-渲染城市列表(让List组件占满屏幕)
 - 45-渲染城市列表
 - 46-渲染城市列表(展示城市索引)
 - 47-渲染城市列表(展示索引下的城市以及动态计算每一行的高度)
 - 48-渲染右侧索引列表
 - 49-渲染右侧索引列表(2滚动城市列表让对应索引高亮)
 - 50-渲染右侧索引列表(3点击索引指定该索引城市)
 - 51-切换城市
 - 52-好客租房移动Web(上)-总结
 
            2-5 顶部导航组件封装
            
        
        - 53-好客租房移动Web(中)学习目标
 - 54-地图找房模块功能分析
 - 55-封装顶部导航栏组件(1顶部导航)
 - 56-封装顶部导航栏组件(2样式调整)
 - 57-封装顶部导航栏组件(3功能处理withRouter)
 - 58-封装顶部导航栏组件(4添加props校验)
 - 59-在城市选择页面使用NavHeader组件
 - 60-组件间样式覆盖问题的说明
 
            2-6 CSS Modules
            
        
        - 61-CSS-IN-JS的说明
 - 62-CSS Modules的说明
 - 63-CSS Modules在项目中的使用
 - 64-CSS Modules的应用
 
            2-7 地图找房功能实现
            
        
        - 65-地图找房页面顶部导航栏样式处理
 - 66-根据定位展示当前城市
 - 67-创建文本覆盖物
 - 68-绘制房源覆盖物
 - 69-地图找房功能分析
 - 70-渲染所有区的覆盖物
 - 71-地图找房功能的封装流程
 - 72-地图找房功能renderOverlays
 - 73-地图找房功能createOverlays
 - 74-地图找房功能createCircle
 - 75-地图找房功能createRect(绘制小区覆盖物)
 - 76-获取并展示小区房源数据
 - 77-获取并展示小区房源数据(优化)
 - 78-createRect方法封装完成
 - 79-添加loading优化体验
 - 80-axios优化和环境变量
 - 81-使用环境变量(修改图片地址)
 - 82-axios优化(手动创建axios实例)
 - 83-列表找房模块功能分析
 - 84-封装首页搜索导航栏
 - 85-实现找房页面搜索导航栏(结构和样式)
 - 86-找房页面返回按钮事件和修改首页搜索导航组件
 
            2-8 FilterTitle、FilterPicker、FilterMore组件实现
            
        
        - 87-条件筛选栏组件结构分析
 - 88-条件筛选栏组件的功能分析
 - 89-FilterTitle组件实现思路分析
 - 90-FilterTitle组件实现(1高亮逻辑)
 - 91-FilterTitle组件实现(2点击菜单高亮)
 - 92-FilterPicker组件实现思路分析
 - 93-FilterPicker组件(1控制展示和隐藏)
 - 94-FilterPicker组件(2获取当前筛选条件的数据-1)
 - 95-FilterPicker组件(3获取当前筛选条件的数据-完成)
 - 96-FilterPicker组件(4获取选中值)
 - 97-FilterPicker组件(5设置默认选中值)
 - 98-FilterPicker组件(6解决设置默认选中值的bug)
 - 99-完善FilterTitle高亮功能(1实现思路)
 - 100-完善FilterTitle高亮功能(2实现步骤)
 - 101-FilterMore组件(1渲染组件数据)
 - 102-FilterMore组件(2获取选中值以及设置高亮)
 - 103-FilterMore组件(3清除和确定按钮的逻辑处理)
 - 104-FilterMore组件(4设置默认选中值)
 - 105-完成FilterTitle高亮功能
 
            2-9 房源筛选及房屋详情功能
            
        
        - 106-根据筛选条件获取房屋列表数据(组装筛选条件)
 - 107-获取房屋列表数据
 - 108-进入页面时获取数据
 - 109-使用List组件渲染数据
 - 110-使用WindowScroller让List跟随页面滚动
 - 111-InfiniteLoader组件的说明和基本使用
 - 112-加载更多房屋列表数据
 - 113-条件筛选栏吸顶功能(1实现思路)
 - 114-条件筛选栏吸顶功能(2实现步骤1)
 - 115-条件筛选栏吸顶功能(2实现步骤2)
 - 116-条件筛选栏吸顶功能(3通用性优化以及组件封装原则)
 - 117-列表找房功能优化-找Bug模式(1加载提示)
 - 118-列表找房功能优化-找Bug模式(2条件筛选栏优化)
 - 119-列表找房功能优化-找Bug模式(3切换城市显示房源)
 - 120-react-spring动画库概述
 - 121-react-spring动画库的基本使用
 - 122-实现遮罩层动画
 - 123-房屋详情模块功能分析
 - 124-房屋详情模块功页面模板说明
 - 125-路由参数的说明和基本使用
 - 126-展示房屋详情(1)
 - 127-展示房屋详情(2完成)
 - 128-好客租房移动Web(中)总结
 
            2-10 用户登录功能实现
            
        
        - 129-好客租房移动Web(下)学习目标
 - 130-登录模块功能分析
 - 131-用户登录(1分析页面结构和样式)
 - 132-用户登录(2登录功能1)
 - 133-用户登录(2登录功能完成)
 - 134-用户登录(3表单校验说明)
 - 135-formik介绍
 - 136-使用formik重构登录功能
 - 137-两种表单验证方式
 - 138-给登录功能添加表单验证
 - 139-简化表单处理
 - 140-我的页面(1页面结构和样式)
 - 141-我的页面(2功能分析)
 - 142-我的页面(3功能实现)
 - 143-我的页面(4退出功能)
 - 144-登录访问控制(1概述)
 - 145-登录访问控制(2使用axios拦截器统一处理token)
 - 146-登录访问控制(3分析AuthRoute鉴权路由组件)
 - 147-登录访问控制(4封装AuthRoute鉴权路由组件)
 - 148-登录访问控制(5修改登录成功跳转)
 
            2-11 房源收藏功能实现
            
        
        - 149-我的收藏模块功能分析
 - 150-检查房源是否收藏
 - 151-收藏房源(1)
 - 152-收藏房源(2)
 
            2-12 发布房源和搜索房源功能实现
            
        
        - 153-房源发布模块(功能演示和介绍)
 - 154-发布房源模块-模板改动说明
 - 155-配置三个页面的路由规则
 - 156-关键词搜索小区信息(1实现思路)
 - 157-关键词搜索小区信息(2实现步骤)
 - 158-关键词搜索小区信息(3传递小区信息给发布房源页面)
 - 159-发布房源(1页面结构分析)
 - 160-发布房源(2获取房源数据)
 - 161-发布房源(3获取房屋配置数据)
 - 162-发布房源(4房屋图片上传分析)
 - 163-发布房源(5获取房屋图片)
 - 164-发布房源(6上传房屋图片)
 - 165-发布房源(7完成)
 
            2-13 项目打包及项目优化
            
        
        - 166-项目打包
 - 167-修改脚手架配置说明
 - 168-项目优化(1antd-mobile按需加载)
 - 169-项目优化(2基于路由的代码分割)
 - 170-项目优化(3其他优化和说明)
 - 171-好客租房移动Web(下)总结
 
阶段八 面试指导
展开第一章 工作篇
            1-1 工作篇
            
        
        - 工作篇
 
第二章 前端市场篇
            2-1 前端开发-市场篇
            
        
        - 前端市场篇
 
第三章 求职篇
            3-1 求职篇
            
        
        - 求职篇1简历制作
 - 求职篇2简历投递技巧
 - 应聘渠道使用技巧
 
第四章 面试篇
            4-1 面试篇
            
        
        - 面试篇1
 - 面试篇2
 
第五章 试用期篇
            5-1 试用期
            
        
        - 试用期篇1
 - 试用期篇2
 
第六章 前端就业加强课
            6-1 内容介绍【react面试题是选学,参考讲义即可】
            
        
        - 00-内容介绍
 
            6-2 HTML+CSS
            
        
        - 01-HTML基础-HTML5的基本认知
 - 02-HTML基础-data-开头的元素属性是什么
 - 03-HTML基础-谈谈你对 HTML 语义化的理解?
 - 04-HTML基础-HTML5 对比 HTML4 有哪些不同之处?
 - 05-HTML基础-meta 标签有哪些常用用法?
 - 06-HTML基础-img 标签的 srcset 的作用是什么?
 - 07-HTML基础-响应式图片处理优化Picture标签
 - 08-HTML基础-在 script 标签上使用 defer 和 async 的区别是什么?
 - 09-HTML基础-前端做本地存储的方式有哪些
 - 10-CSS基础-CSS选择器的优先级
 - 11-CSS基础-通过CSS的哪些方式可以隐藏页面上的元素
 - 12-CSS基础-px, em, rem之间的区别
 - 13-CSS基础-让元素水平居中的方法有哪些(4种)
 - 14-CSS基础-在 CSS 中有哪些定位方式
 - 15-CSS基础-如何理解 z-index, z-index的小坑
 - 16-CSS基础-如何清除浮动
 - 17-CSS基础-谈谈你对 BFC 的理解
 - 18-CSS基础-什么是CSS Sprites以及它的好处
 - 19-CSS基础-你对媒体查询的理解是什么样的?(响应式适配)
 - 20-CSS基础-你对盒模型的理解是什么样的?标准盒子模型和怪异盒子模型的区别是什么
 - 21-CSS基础-说说伪类和伪元素的区别
 - 22-CSS基础-谈谈你对 flex 的理解
 
            6-3 JavaScript基础
            
        
        - 23-JS基础-解释下什么是变量提升
 - 24-JS基础-JS的参数以什么方式传递的
 - 25-JS基础-JavaScript垃圾回收01
 - 26-JS基础-JavaScript垃圾回收02
 - 00-简要复习
 - 01-JS基础-谈谈你对 JavaScript 作用域链的理解
 - 02-JS基础-谈谈你对闭包的理解
 - 03-JS基础-闭包补充说明
 - 04-JS基础-数据类型的隐式转换规则(了解)
 - 05-JS基础-谈谈你对原型链的理解
 - 06-JS基础-为什么要有继承
 - 07-JS基础-继承-原型继承
 - 08-JS基础-继承-组合式继承
 - 09-JS基础-继承-寄生组合式继承
 - 10-JS基础-es6-class 实现继承 extends
 - 11-JS基础-如何判断是否是数组
 - 12-JS基础-this指向的整理
 - 13-JS基础-this小练习-箭头函数中的this问题
 - 14-JS基础-Promise的静态方法
 - 15-JS基础-宏任务和微任务
 - 16-JS基础-宏任务微任务练习题1
 - 17-JS基础-宏任务微任务练习题2
 
            6-4 HTTP协议
            
        
        - 18-HTTP协议-HTTP的常见方法
 - 19-HTTP协议-GET方法和POST方法有何区别
 - 20-HTTP协议-请求报文的组成部分
 - 21-HTTP协议-响应报文的组成部分
 - 22-HTTP协议-状态码-2xx
 - 23-HTTP协议-状态-3xx(重点记忆304)
 - 24-HTTP协议-状态码(4xx和5xx)400,401
 - 25-HTTP协议-keep-alive是什么(复用连接)
 - 26-简要小结
 - 01-HTTP协议-为什么需要HTTPS
 - 02-HTTP协议-对称加密
 - 03-HTTP协议-非对称加密和HTTPS的加密解决方案
 - 04-HTTP协议-数字证书(保证你正在访问的网站是安全的-登记了该网站和该网站公钥信息)
 - 05-HTTP协议-数字签名和小结
 - 06-HTTP协议-HTTP2和HTTP1相比的优势
 - 07-HTTP协议-http缓存的基本认知
 - 08-HTTP协议-强缓存的认知
 - 09-HTTP协议-协商缓存认知
 - 10-HTTP协议-整体巩固
 - 11-HTTP协议-整体缓存流程图
 
            6-5 TCP协议
            
        
        - 12-TCP协议-一次完整的http服务的流程
 - 13-TCP协议-什么是DNS解析
 - 14-TCP协议-三次握手
 - 15-TCP协议-四次挥手
 
            6-6 浏览器原理
            
        
        - 16-DOM-事件流和事件委托
 - 17-浏览器原理-浏览器是如何解析选择器的-1
 - 18-浏览器原理-如何解析选择器的-2
 - 19-浏览器原理-浏览器是如何进行界面渲染的
 - 20-浏览器原理-重排和重绘的认知
 - 21-浏览器原理-浏览器对于重绘重排的优化
 - 22-浏览器原理-如何从重绘和重排角度优化性能
 - 00-复习回顾
 - 01-浏览器原理-前端如何实现即时通信
 - 02-浏览器原理-同源策略和跨域
 
            6-7 前端工程化
            
        
        - 03-前端工程化-babel的原理
 - 04-前端工程化-babel实现插件
 - 05-前端工程化-git工作流
 - 06-前端工程化-git的rebase和merge的区别
 - 07-前端工程化-git的reset回退和revert撤销
 
            6-8 Vue相关
            
        
        - 08-vue相关-什么是MVVM
 - 09-vue相关-谈谈对于vue生命周期的理解
 - 10-vue相关-组件通信-父子props和$emit
 - 11-vue相关-组件通信-$children $parent $refs
 - 12-vue相关-组件通信-provide inject
 - 13-vue相关-组件通信-$attrs和$listeners
 - 14-vue相关-组件通信-vuex
 - 15-上午回顾
 - 16-vue相关-computed和watch的区别
 - 17-vue相关-vue双向数据绑定的原理
 - 18-vue相关-响应式系统原理(dep收集依赖-数据变化后-根据依赖派发更新)
 - 19-vue相关-key的作用
 - 20-vue相关-Vue 跳转路由时的传参方式 (query和params的区别)
 - 21-vue相关-vue项目进行SEO优化
 - 22-vue相关-vue项目权限控制
 - 23-vue相关-vue项目支付功能
 - 24-vue相关-如何处理打包出来的项目首屏加载过慢
 - 25-vue相关-你在项目中遇到过什么技术难题
 - 26-vue相关-请简单介绍一下你们的项目
 
第七章 Vue面试题精讲【含Vue3】
            7-1 Vue核心知识点
            
        
        - 1、课程介绍
 - 2、Vue基本使用介绍
 - 3、属性绑定
 - 4、列表渲染
 - 5、v-model
 - 6、v-on
 - 7、Class与Style绑定
 - 8、条件渲染
 - 9、计算属性
 - 10、侦听器
 - 11、生命周期简介
 - 12、生命周期探讨1
 - 13、生命周期探讨2
 - 14、生命周期探讨3
 - 15、生命周期探讨4
 - 16、组件概述
 - 17、组件基本使用
 - 18、局部组件使用
 - 19、父组件向子组件传值
 - 20、子组件向父组件传值
 - 21、兄弟组件传值
 - 22、插槽简介
 - 23、插槽基本创建
 - 24、具名插槽
 - 25、作用域插槽应用
 - 26、作用域查看案例
 - 27、插槽总结
 - 28、Vue组件化的理解
 - 29、Vue.set方法
 - 30、Vue.delete方法
 - 31、$on与$emit方法
 - 32、自定义组件实现双向绑定
 - 33、使用插槽完成内容分发
 - 34、事件总线
 - 35、$once与$off
 - 36、ref 和vm.$refs
 - 37、过滤器基本使用
 - 38、带参数的过滤器
 - 39、自定义指令基本使用
 - 40、 自定义指令-带参数
 - 41、自定义局部指令
 - 42、渲染函数
 - 43、混入
 - 44、插件介绍
 
            7-2 Vue-Router知识点
            
        
        - 1、路由简介
 - 2、路由基本使用
 - 3、路由重定向
 - 4、路由嵌套
 - 5、动态匹配路由的基本用法
 - 6、路由组件传递参数
 - 7、命名路由
 - 8、编程式导航
 - 9、路由案例-渲染根组件
 - 10、将菜单改造为路由连接
 - 11、添加子路由规则并实现路由重定向
 - 12、渲染用户列表数据
 - 13、跳转到详情页
 - 14、路由全局守卫
 - 15、路由独享守卫
 - 16、组件内守卫
 - 17、addRoutes动态路由添加
 - 18、路由组件缓存
 - 19、Hash模式与History模式
 - 20、History模式使用1
 - 21、History模式2
 - 22、Nginx配置History模式
 - 23、复习VueRouter工作原理
 - 24、install方法实现
 - 25、构造方法创建
 - 26、解析路由规则
 - 27、创建router-link组件
 - 28、测试
 - 29、构建render函数
 - 30、构建router-view组件
 - 31、解决组件加载问题
 - 32、解决前进与后退问题
 - 33、复习总结
 - 34、查看Vue.use方法源码
 - 35、VueRouter目录结构分析
 - 36、VueRouter类初步创建
 - 37、install方法第二种方式实现
 - 38、组件创建测试
 - 39、解析路由规则1
 - 40、路由规则解析2
 - 41、路由规则解析完成
 - 42、match方法实现
 - 43、历史记录处理
 - 44、不同路由模式判断处理
 - 45、代码测试
 - 46、定义响应式路由属性
 - 47、创建$route与$router
 - 48、组件渲染1
 - 49、组件渲染2
 - 50、组件渲染完成
 
            7-3 Vue响应式原理
            
        
        - 1、课程目标
 - 2、数据驱动介绍
 - 3、defineProperty基本使用
 - 4、defineProperty使用2
 - 5、Vue3响应式原理
 - 6、发布订阅模式介绍
 - 7、发布订阅模式实现
 - 8、观察者模式
 - 9、模拟Vue响应式原理
 - 10、创建Observer类
 - 11、完善defineReactive方法
 - 12、Compiler类结构
 - 13、 compile方法实现
 - 14、compileText方法实现
 - 15、compileElement方法实现
 - 16、Dep类分析
 - 17、创建Dep类
 - 18、创建Watcher类
 - 19、创建Watcher对象
 - 20、创建Watcher对象2
 - 21、实现双向数据绑定
 - 22、响应式的问题
 
            7-4 Vue虚拟DOM
            
        
        - 1、课程目标
 - 2、虚拟DOM介绍
 - 3、为什么使用Virtual DOM
 - 4、虚拟DOM的作用
 - 5、创建项目
 - 6、Snabbdom导入
 - 7、Snabbdom的基本使用
 - 8、 Snabbdom的基本使用2
 - 9、模块的基本使用
 - 10、h函数介绍
 - 11、Vnode函数
 - 12、虚拟DOM创建过程
 - 13、patch函数执行过程介绍
 - 14、init函数源码查看
 - 15、patch函数源码查看
 - 16、调试patch函数
 - 17、createElm函数源码解读
 - 18、addVnodes和removeVnodes方法
 - 19、patchVnode方法执行流程
 - 20、patchVode方法源码分析
 - 21、diff算法比较流程1
 - 22、diff算法比较2
 - 23、diff算法比较3
 - 24、diff算法比较4
 - 25、updateChildren方法源码分析1
 - 26、updateChildren方法源码分析2
 - 27、钩子函数介绍
 - 28、模块源码分析
 - 29、模块调用的时机分析
 
            7-5 Vuex状态管理
            
        
        - 1、课程介绍
 - 2、状态管理介绍
 - 3、简易的状态管理
 - 4、Vuex介绍
 - 5、Vuex核心概念
 - 6、State应用
 - 7、Getters应用
 - 8、Mutation应用
 - 9、Action应用
 - 10、Module应用
 - 11、Vuex严格模式
 - 12、购物车案例介绍
 - 13、商品列表
 - 14、添加购物车
 - 15、购物车列表展示
 - 16、计算商品数量与价格
 - 17、删除购物车中商品
 - 18、购物车商品展示
 - 19、实现全选功能
 - 20、处理文本框
 - 21、实现选中商品的统计功能
 - 22、存储购物车中的商品数据
 - 23、模拟Vuex上
 - 24、模拟Vuex下
 - 25、总结
 
            7-6 Vue服务端渲染
            
        
        - 1、服务端渲染介绍
 - 2、渲染的概念
 - 3、传统服务端渲染
 - 4、客户端渲染介绍
 - 5、客户端渲染问题描述
 - 6、什么是同构渲染
 - 7、同构渲染的问题
 - 8、初始化NuxtJS项目
 - 9、基本路由规则
 - 10、路由导航
 - 11、动态路由
 - 12、嵌套路由
 - 13、获取异步数据
 - 14、获取异步数据2
 - 15、上下文对象
 - 16、渲染Vue实例
 - 17、创建web服务器
 - 18、模板使用
 - 19、向模板中传递数据
 - 20、问题说明
 - 21、创建目录结构
 - 22、Webpack配置1
 - 23、Webpack配置2
 - 24、配置构建命令
 - 25、测试打包
 - 26、实现客户端交互
 - 27、解析渲染的流程
 
            7-7 Vue常见面试题
            
        
        - 1、watch问题
 - 2、v-if与v-show
 - 3、循环列表
 - 4、组件通信
 - 5、生命周期问题
 - 6、v-model问题
 - 7、$nextTick问题
 - 8、动态组件问题
 - 9、异步加载组件
 - 10、keep-alive
 - 11、mixin
 - 12、MVVM
 - 13、defineProperty问题1
 - 14、defineProperty问题2
 - 15、vue如何监听数组的变化
 - 16、虚拟DOM和diff算法
 - 17、模板编译与渲染
 - 18、常见面试题说明
 
            7-8 Vue源码解读
            
        
        - 1、准备工作
 - 2、查找入口文件
 - 3.查看入口代码
 - 4、查看入口代码2
 - 5、Vue初始化过程
 - 6、Vue初始化过程2
 - 7、静态成员初始化
 - 8、extend源码分析
 - 9、Vue.use方法源码分析
 - 10、Vue.mixin与Vue.extend方法源码
 - 11、initAssetRegisters方法源码
 - 12、Vue实例成员
 - 13、init方法
 - 14、initState方法
 - 15、总结
 - 16、响应式处理的入口
 - 17、Observer
 - 18、defineReactive
 - 19、依赖收集
 - 20、数组响应式处理
 - 21、数组响应式练习题
 - 22、总结响应式处理过程
 
            7-9 Vue3.0
            
        
        - 1、Vue3简介
 - 2、Composition API 设计动机
 - 3、Vue3性能提升介绍
 - 4、Vite介绍
 - 5、Composition API基本使用
 - 6、生命周期钩子函数使用
 - 7、toRefs函数应用
 - 8、ref函数应用
 - 9、计算属性应用
 - 10、watch函数应用
 - 11、watchEffect函数应用
 - 12、todolist项目结构说明
 - 13、添加功能实现
 - 14、删除功能实现
 - 15、编辑操作实现1
 - 16、编辑操作实现2
 - 17、修改任务状态
 - 18、过滤任务状态
 - 19、清除已经完成的任务
 - 20、完成数据持久化
 - 21、总结
 
第八章 JavaScript面试精讲
            8-1 JavaScript基础面试题
            
        
        - 1、课程简单介绍
 - 2、基本数据类型与引用类型区别
 - 3、哪些场景中会出现undefined
 - 4、哪些场景中会出现null
 - 5、undefined与null之间的比较
 - 6、Boolean类型转换问题
 - 7、Number类型注意事项
 - 8、Number函数转换规则
 - 9、parseInt函数转换规则
 - 10、parseFloat函数说明
 - 11、 isNaN( )函数与Number.isNaN( )函数区别
 - 12、字符串创建方式以及对应的区别
 - 13、怎样实现字符串逆序输出
 - 14、怎样统计出现最多的字符1
 - 15、怎样统计出出现最多字符2
 - 16、怎样实现字符串去重操作1
 - 17、怎样实现字符串去重操作2
 - 18、判断字符串是否为回文字符串1
 - 19、判断字符串是否为回文字符串2
 - 20、双等运算符与三等运算符区别
 - 21、typeof运算符
 - 22、判断变量是否为空的方法
 - 23、switch结构问题
 
            8-2 引用类型
            
        
        - 1、引用数据类型与基本类型区别复习
 - 2、new操作符的作用
 - 3、原型对象理解
 - 4、属性访问与判断问题
 - 5、Object.create方法基本使用
 - 6、Object.create方法实现原理
 - 7、Object.create方法应用场景
 - 8、Object.create( )与new Object()的区别
 - 9、模拟new操作符的实现
 - 10、什么是原型链
 - 11、原型链有什么特点
 - 12、怎样判断一个属性是实例自身的还是原型链上的
 - 13、怎样判断一个变量是否为数组类型---instanceof
 - 14、怎样判断一个变量是否为数组类型---构造函数
 - 15、怎样判断一个变量是否为数组类型--toString函数
 - 16、类型判断注意事项
 - 17、怎样过滤数组中的数据
 - 18、怎样完成数组元素的累加操作
 - 19、完成数组中最大值与最小值统计
 - 20、常见的数组遍历方式有哪些
 - 21、手动模拟实现find函数
 - 22、手动模拟实现filter函数
 - 23、手动模拟实现some函数
 - 24.手动模拟实现every函数
 - 25、手动模拟实现map函数
 - 26、手动模拟实现reduce函数
 - 27、怎样实现数组的去重操作1
 - 28、怎样实现数组去重操作2
 - 29、怎样实现数组去重操作3
 - 30、获取数组中最多的元素1
 - 31、获取数组中最多的元素2
 
            8-3 函数常见问题讲解
            
        
        - 1、函数定义的方式
 - 2、Function构造函数问题
 - 3、函数表达式应用场景介绍
 - 4、函数声明与函数表达式区别
 - 5、函数调用的方式
 - 6、实参与形参的区别
 - 7、介绍一下arguments对象
 - 8、arguments应用场景分析
 - 9、构造函数与普通函数有什么区别
 - 10、什么是作用域
 - 11、什么是作用域链
 - 12、作用域与作用域链的常见面试题1
 - 13、作用域与作用域链的常见面试题2
 - 14、变量提升
 - 15、函数提升
 - 16、函数提升问题
 - 17、执行上下文环境
 - 18、闭包
 - 19、闭包应用1
 - 20、闭包应用2
 - 21、闭包常见面试题1
 - 22、闭包常见面试题2
 - 23、闭包常见面试题3
 - 24、闭包优点与缺点
 - 25、this指向问题1
 - 26、this指向问题2
 - 27、this指向问题3
 - 28、call()函数,apply( )函数,bind( )函数的使用
 - 29、应用场景1
 - 30、应用场景2
 - 31、手动实现call函数
 - 32、手动实现apply函数
 - 33、手动实现bind函数
 - 34、回调函数问题
 - 35、函数为什么被称为一等公民
 
            8-4 对象常见问题讲解
            
        
        - 1、 Object.defineProperty方法使用
 - 2、属性访问方式区别
 - 3、创建对象的方式以及优缺点1
 - 4、创建对象的方式以及优缺点2
 - 5、什么是浅拷贝
 - 6、什么是深拷贝
 - 7、深拷贝模拟实现1
 - 8、深拷贝模拟实现2
 - 9、重写原型对象的问题
 - 10、原型链继承
 - 11、构造函数继承
 - 12、拷贝继承
 - 13、组合继承
 - 14、寄生式组合继承
 - 15、模拟jQuery--基本结构实现
 - 16、模拟jQuery--this指向问题
 - 18、模拟jQuery-html方法实现
 - 19、模拟jQuery-extend方法实现
 - 20、模拟jQuery-为标签添加样式
 - 21、模拟jQuery-复习
 - 22、模拟jQuery--封装独立命名空间
 - 23、对象常见问题总结
 
            8-5 DOM与事件
            
        
        - 1、DOM与事件常见问题说明
 - 2、常见选择器介绍
 - 3、HTMLCollection对象与NodeList对象区别
 - 4、常见DOM操作1
 - 5、常见DOM操作2
 - 6、DOM性能问题
 - 7、事件传播介绍
 - 8、什么是事件捕获
 - 9、什么是事件冒泡
 - 10、阻止事件冒泡
 - 11、事件冒泡与事件捕获综合问题
 - 12、Event对象使用
 - 13、事件模型1
 - 14、事件模型2
 - 15、事件模型3
 - 16、事件委托1
 - 17、事件委托2
 - 18、浏览器重排介绍
 - 19、浏览器重绘介绍
 
            8-6 Ajax常见问题讲解
            
        
        - 1、Ajax介绍
 - 2、Ajax创建流程
 - 3、Ajax优缺点总结
 - 4、Get请求与Post请求区别
 - 5、Get和Post请求的应用场景总结
 - 6、浏览器同源策略
 - 7、为什么浏览器会有跨域限制的问题
 - 8、跨域问题演示
 - 9、CORS
 - 10、JSONP
 
            8-7 ES6
            
        
        - 1、let与var区别
 - 2、为什么需要块级作用域
 - 3、块级作用域
 - 4、let命令注意事项
 - 5、const命令注意事项
 - 6、数组解构赋值
 - 7、对象解构赋值
 - 8、解构赋值好处
 - 9、扩展运算符基本使用
 - 10、扩展运算符应用场景
 - 11、rest运算符使用、优势、注意事项
 - 12、箭头函数基本使用
 - 13、箭头函数中this指向的问题
 - 14、箭头函数不适合的场景说明
 - 15、Object.assign方法应用
 - 16、Object.assign方法注意事项
 - 17、什么是Symbol
 - 18、Symbol应用场景
 - 19、Proxy介绍
 - 20、Proxy应用场景
 - 21、Proxy应用场景2
 - 22、Proxy应用场景3
 - 23、Set结构
 - 24、Generator函数基本使用
 - 25、Generator函数面试题
 - 26、Generator函数问题
 - 26、Generator函数中的this问题
 - 27、Generator函数应用场景1
 - 28、Generator函数应用场景2
 - 29、回调地狱问题
 - 30、同步的问题
 - 31、Promise基本使用
 - 32、Promise封装Ajax操作
 - 33、Promise常见误区
 - 34、Promise链式调用问题
 - 35、Promise异常处理
 - 36、Promise并行处理
 - 37、Promise.race方法
 - 38、Promise静态方法
 - 39、Promise执行顺序的问题
 - 40、模拟Promise-搭建基本结构
 - 41、模拟Promise-异常处理
 - 42、模拟Promise--then方法处理
 - 43、模拟Promise-基本测试
 - 44、模拟Promise-完善操作
 - 46、常见的异步编程方式总结
 - 47、async介绍
 - 48、async函数应用
 - 49、async处理异步请求
 - 50、请求依赖关系的处理
 - 51、并行处理的问题
 
            8-8 模块化
            
        
        - 1、模块化的发展过程
 - 2、常见模块化标准介绍
 - 3、ES Module特性说明
 - 4、模块导出操作
 - 5、导出的注意事项
 - 6、导入的注意事项
 - 7、导入与导出应用技巧
 
            8-9 JavaScript性能优化的问题
            
        
        - 1、什么是内存管理
 - 2、什么是垃圾回收
 - 3、什么是GC算法
 - 4、引用计数算法实现原理分析
 - 5、引用计算算法的优点与缺点
 - 6、标记清除算法介绍
 - 7、标记清除算法的问题说明
 - 8、标记整理算法介绍
 - 9、V8引擎介绍
 - 10、V8引擎垃圾回收1
 - 11、V8引擎垃圾回收2
 - 12、V8引擎垃圾回收3
 - 13、全局变量的问题
 - 14、全局变量问题2
 - 15、方法问题
 - 16、闭包的问题
 - 17、循环的问题
 - 18、代码层级问题
 - 19、作用域问题
 - 20、class基本使用
 - 21、class原理分析
 - 22、class继承实现