12.饥人谷-Vue造轮子从前端小工到高级前端
├─Vue UI 框架-初级版
│ ├─1 课前水平自测 1 问卷
│ │ ├─1 课程简介
│ │ └─2 课后习题
│ ├─10 简单轮子:Tab 组件 8 视频 1 文章
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─11 简单轮子:Popover 组件 4 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─12 简单轮子:手风琴组件 4 视频 1 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─13 阶段性总结 4 视频 1 文章 1 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─14 中级轮子:省市区级联选择组件 9 视频 1 文章
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─15 中级轮子:省市区级联选择组件(下) & 构建工具升级 6 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─16 Vue 动画原理 6 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─17 中级轮子:无缝轮播组件 10 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─18 中级轮子:Nav 组件 6 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─19 测试框架改造:使用 Karma g 1 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─2 课程概览 5 视频 1 文章 2 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─20 表单验证 3 视频
│ │ ├─课程简介
│ │ └─学习资源
│ ├─3 UI 设计 3 视频 1 文章 1 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─4 框架搭建(上) 5 视频 1 文章 1 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─5 框架搭建(下)5 视频 3 文章 1 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─6 简单轮子:文本输入框 6 视频 1 问卷
│ │ ├─1 课程简介
│ │ ├─2 学习资源
│ │ └─3 课后习题
│ ├─7 简单轮子:网格系统 8 视频 1 文章
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ ├─8 简单轮子:默认布局 2 视频
│ │ ├─1 课程简介
│ │ └─2 学习资源
│ └─9 简单轮子:Toast 组件 6 视频
│ └─├─1 课程简介
│ └─└─2 学习资源
├─Vue UI 框架-进阶版
│ ├─01.测一测你的JavaScript、Vue基础
│ │ ├┈01.课程简介_.md
│ │ ├┈02.JS、Vue 水平自测[答案]_.md
│ │ └┈02.JS、Vue 水平自测_.md
│ ├─02.课程介绍
│ │ ├┈01.课程简介_.md
│ │ ├┈02.讲义_.md
│ │ ├┈03.课前测试题答疑-_[3].mp4
│ │ ├┈04.造轮子的益处-_[3].mp4
│ │ ├┈05.前置知识-_[3].mp4
│ │ ├┈06.直播答疑-_[3].mp4
│ │ ├┈07.课前准备-_[3].mp4
│ │ ├┈08.Vue造轮子第一课习题[答案]_.md
│ │ ├┈08.Vue造轮子第一课习题_.md
│ │ ├┈09.关于轮子的面试题[答案]_.md
│ │ └┈09.关于轮子的面试题_.md
│ ├─03.体验、交互、sketch
│ │ ├┈01.课程简介_.md
│ │ ├┈02.讲义_.md
│ │ ├┈03.网站开发全流程-_[3].mp4
│ │ ├┈04.sketch与墨刀-_[3].mp4
│ │ ├┈05.设计约定-_[3].mp4
│ │ ├┈06.UI测试题[答案]_.md
│ │ └┈06.UI测试题_.md
│ ├─04.框架雏形、单元测试、Mock数据
│ │ ├┈01.课程简介_.md
│ │ ├┈02.讲义_.md
│ │ ├┈03.需求分析-_[3].mp4
│ │ ├┈04.项目初始化-_[3].mp4
│ │ ├┈05.添加icon-_[3].mp4
│ │ ├┈06.添加loading-_[3].mp4
│ │ ├┈07.单元测试与mock-_[3].mp4
│ │ ├┈08.项目搭建[答案]_.md
│ │ └┈08.项目搭建_.md
│ ├─05.单元测试、自动化测试、持续集成、NPM 发布包
│ │ ├┈01.课程简介_.md
│ │ ├┈02.自动化测试_.md
│ │ ├┈03.发布 npm 包_.md
│ │ ├┈04.持续集成_.md
│ │ ├┈05.使用karma做自动化测试-_[3].mp4
│ │ ├┈06.使用mocha&chai做单元测试-_[3].mp4
│ │ ├┈07.使用travisci做持续集成-_[3].mp4
│ │ ├┈08.使用npm发布自己的包-_[3].mp4
│ │ ├┈09.npm link的使用-_[3].mp4
│ │ ├┈10.课后题[答案]_.md
│ │ └┈10.课后题_.md
│ ├─06.省市区级联选择组件(上)
│ │ ├┈01.课程简介_.md
│ │ ├┈02.如何从 parcel 迁移到 vue-cli_.md
│ │ ├┈03.省市区层级选择组件-_[3].mp4
│ │ ├┈04.渲染弹出内容-_[3].mp4
│ │ ├┈05.递归渲染-_[3].mp4
│ │ ├┈06.添加样式时发现 parcel 有问题-_[3].mp4
│ │ ├┈07.(可选)尝试使用 webpack@4 失败-_[3].mp4
│ │ ├┈08.尝试使用 vue-cli@3 成功-_[3].mp4
│ │ ├┈09.(可选)尝试在点击 level1 的时候隐藏 level3 失败-_[3].mp4
│ │ ├┈10.使用单向数据流简化问题-_[3].mp4
│ │ └┈11.使用递归算法找出被选中的item-_[3].mp4
│ ├─07.省市区级联选择组件(下)
│ │ ├┈01.课程简介_.md
│ │ ├┈02.深入理解computed-_[3].mp4
│ │ ├┈03.使用isleaf判断叶子节点-_[3].mp4
│ │ ├┈04.理解指令-_[3].mp4
│ │ ├┈05.加载数据时展示菊花-_[3].mp4
│ │ ├┈06.插播一个面试题-_[3].mp4
│ │ └┈07.单元测试全面升级-_[3].mp4
│ ├─08.深入讲解Vue 动画原理
│ │ ├┈01.课程简介_.md
│ │ ├┈02.vue动画方式1 - css transition-_[3].mp4
│ │ ├┈03.vue动画方式2- css animation-_[3].mp4
│ │ ├┈04.vue动画方式3 - js 操作动画-_[3].mp4
│ │ ├┈05.vue动画方式4 - 多元素动画-_[3].mp4
│ │ ├┈06.vue动画5 - 列表动画-_[3].mp4
│ │ └┈07.总结之前的几种动画-_[3].mp4
│ ├─09.无缝轮播组件
│ │ ├┈01.课程简介_.md
│ │ ├┈02.轮播思路1-操作dom-_[3].mp4
│ │ ├┈03.轮播思路2-操作组件-_[3].mp4
│ │ ├┈04.制作动画-_[3].mp4
│ │ ├┈05.添加小圆圈-_[3].mp4
│ │ ├┈06.设定动画的方向-_[3].mp4
│ │ ├┈07.使用 $nexttick 解决更新不及时的 bug-_[3].mp4
│ │ ├┈08.支持移动设备(手机)-_[3].mp4
│ │ ├┈09.前进后退功能-_[3].mp4
│ │ ├┈10.完成测试用例-_[3].mp4
│ │ └┈11.总结-_[3].mp4
│ ├─10.Nav 组件
│ │ ├┈01.课程简介_.md
│ │ ├┈02.项目目录结构整理-_[3].mp4
│ │ ├┈03.实现nav基本结构-_[3].mp4
│ │ ├┈04.使用依赖注入实现跨级调用-_[3].mp4
│ │ ├┈05.再次深入理解v-if和v-show的区别-_[3].mp4
│ │ ├┈06.实现多级导航栏遇到bug-_[3].mp4
│ │ ├┈07.受cascader启发解决bug-_[3].mp4
│ │ ├┈08.讲义_.md
│ │ ├┈09.支持垂直导航-_[3].mp4
│ │ ├┈10.收缩动画-_[3].mp4
│ │ ├┈11.完善细节-_[3].mp4
│ │ └┈12.测试用例-_[3].mp4
│ ├─11.使用 Karma做测试
│ │ ├┈01.课程简介_.md
│ │ └┈02.vuecli配合karma和chrome一起使用-_[3].mp4
│ ├─12.表单验证
│ │ ├┈01.课程简介_.md
│ │ ├┈02.基本思路-_[3].mp4
│ │ ├┈03.测试驱动开发 tdd-_[3].mp4
│ │ └┈04.使用面向对象思维-_[3].mp4
│ ├─13.分页组件
│ │ ├┈01.课程简介_.md
│ │ ├┈02.初步实现pager-_[3].mp4
│ │ ├┈03.完善pager样式-_[3].mp4
│ │ └┈04.理解data和computed的区别-_[3].mp4
│ ├─14.Table 组件
│ │ ├┈01.课程简介_.md
│ │ ├┈02.table需求分析-_[3].mp4
│ │ ├┈03.用单向数据流改造table-_[3].mp4
│ │ ├┈04.v-for一定要搭配key=id-_[3].mp4
│ │ ├┈05.全选与反选-_[3].mp4
│ │ ├┈06.小结-_[3].mp4
│ │ ├┈07.vue和react的对比-_[3].mp4
│ │ ├┈08.如何判断全选-_[3].mp4
│ │ ├┈09.表格排序功能-_[3].mp4
│ │ ├┈10.表格的loading状态-_[3].mp4
│ │ ├┈11.固定表头-_[3].mp4
│ │ ├┈12.学生作品-_[3].mp4
│ │ ├┈13.固定表头-_[3].mp4
│ │ ├┈14.固定一列-_[3].mp4
│ │ ├┈15.展开行功能-_[3].mp4
│ │ ├┈16.重新审视代码-_[3].mp4
│ │ ├┈17.table里面的按钮-_[3].mp4
│ │ └┈18.让用户给出列宽-_[3].mp4
│ ├─15.图片上传组件(单文件)
│ │ ├┈01.课程简介_.md
│ │ ├┈02.图片上传需求分析-_[3].mp4
│ │ ├┈03.图片上传接口设计-_[3].mp4
│ │ ├┈04.图片上传后台实现-_[3].mp4
│ │ ├┈05.ajax实现文件上传-_[3].mp4
│ │ ├┈06.使用heroku当做服务器-_[3].mp4
│ │ ├┈07.为heroku添加npm start-_[3].mp4
│ │ ├┈08.初步实现uploader-_[3].mp4
│ │ ├┈09.删除功能-_[3].mp4
│ │ ├┈10.显示上传中-_[3].mp4
│ │ ├┈11.update拼成upload造成 bug-_[3].mp4
│ │ ├┈12.渲染任务是异步执行的!-_[3].mp4
│ │ ├┈13.完善css-_[3].mp4
│ │ ├┈14.ui细节完善-_[3].mp4
│ │ └┈15.创建uploader-_[3].mp4
│ ├─16.中级轮子:图片上传组件(多文件)
│ │ ├┈01.课程简介_.md
│ │ ├┈02.一次上传多个文件-_[3].mp4
│ │ └┈03.并发造成bug!-_[3].mp4
│ ├─17.中级轮子:图片上传的单元测试
│ │ ├┈01.课程简介_.md
│ │ ├┈02.图片上传单元测试-_[3].mp4
│ │ ├┈03.使用假函数测试-.mp4
│ │ ├┈04.二分法debug-_[3].mp4
│ │ ├┈05.遇到bug!-_[3].mp4
│ │ ├┈06.如何测试.sync-_[3].mp4
│ │ ├┈07.测试完毕-_[3].mp4
│ │ ├┈08.stub讲解-_[3].mp4
│ │ ├┈09.答疑:单元测试难写吗-_[3].mp4
│ │ └┈10.答疑:渲染任务是异步执行的-_[3].mp4
│ ├─18.Sticky 组件
│ │ ├┈01.课程简介_.md
│ │ ├┈02.sticky需求分析-_[3].mp4
│ │ ├┈03.解决sticky的四个bug-_[3].mp4
│ │ ├┈04.热更新与beforedestroy-_[3].mp4
│ │ ├┈05.函数debounce-_[3].mp4
│ │ ├┈06.完善sticky-_[3].mp4
│ │ ├┈07.timerid写在data里有问题吗-_[3].mp4
│ │ └┈08.为什么组件的data必须是函数-_[3].mp4
│ └─19.课程总结
│ └─├┈01.课程简介_.md
│ └─├┈02.使用lib模式打umd包-_[3].mp4
│ └─├┈03.umd是什么-_[3].mp4
│ └─├┈04.导出所有组件-_[3].mp4
│ └─├┈05.从gulu中排除vue(实际上默认排除了)-_[3].mp4
│ └─├┈06.发布并使用自己的组件-_[3].mp4
│ └─└┈07.总结-_[3].mp4
└─Vue UI框架-高级版
└─├─01.测一测你的JavaScript、Vue基础
└─│ ├┈01.课程简介_.md
└─│ ├┈02.JS、Vue 水平自测[答案]_.md
└─│ └┈02.JS、Vue 水平自测_.md
└─├─02.课程介绍
└─│ ├┈01.课程简介_.md
└─│ ├┈02.讲义_.md
└─│ ├┈03.课前测试题答疑-_[3].mp4
└─│ ├┈04.造轮子的益处-_[3].mp4
└─│ ├┈05.前置知识-_[3].mp4
└─│ ├┈06.直播答疑-_[3].mp4
└─│ ├┈07.课前准备-_[3].mp4
└─│ ├┈08.Vue造轮子第一课习题[答案]_.md
└─│ ├┈08.Vue造轮子第一课习题_.md
└─│ ├┈09.关于轮子的面试题[答案]_.md
└─│ └┈09.关于轮子的面试题_.md
└─├─03.体验、交互、sketch
└─│ ├┈01.课程简介_.md
└─│ ├┈02.讲义_.md
└─│ ├┈03.网站开发全流程-_[3].mp4
└─│ ├┈04.sketch与墨刀-_[3].mp4
└─│ ├┈05.设计约定-_[3].mp4
└─│ ├┈06.UI测试题[答案]_.md
└─│ └┈06.UI测试题_.md
└─├─04.框架雏形、单元测试、Mock数据
└─│ ├┈01.课程简介_.md
└─│ ├┈02.讲义_.md
└─│ ├┈03.需求分析-.mp4
└─│ ├┈04.项目初始化-_[3].mp4
└─│ ├┈05.添加icon-_[3].mp4
└─│ ├┈06.添加loading-_[3].mp4
└─│ ├┈07.单元测试与mock-_[3].mp4
└─│ ├┈08.项目搭建[答案]_.md
└─│ └┈08.项目搭建_.md
└─├─05.单元测试、自动化测试、持续集成、NPM 发布包
└─│ ├┈01.课程简介_.md
└─│ ├┈02.自动化测试_.md
└─│ ├┈03.发布 npm 包_.md
└─│ ├┈04.持续集成_.md
└─│ ├┈05.使用karma做自动化测试_[3].mp4
└─│ ├┈06.使用mocha&chai做单元测试-_[3].mp4
└─│ ├┈07.使用travisci做持续集成-_[3].mp4
└─│ ├┈08.使用npm发布自己的包-_[3].mp4
└─│ ├┈09.npm link的使用-_[3].mp4
└─│ ├┈10.课后题[答案]_.md
└─│ └┈10.课后题_.md
└─├─06.测试覆盖率
└─│ ├┈01.课程简介_.md
└─│ ├┈02.没有测试的库是会死的-_[3].mp4
└─│ ├┈03.如何配置覆盖率-.mp4
└─│ ├┈04.函数覆盖率-_[3].mp4
└─│ ├┈05.分支覆盖率-_[3].mp4
└─│ ├┈06.将所有文件纳入测试-_[3].mp4
└─│ └┈07.测试人员还有必要吗-_[3].mp4
└─└─07.升级的 table 组件
└─└─├┈01.课程简介_.md
└─└─├┈02.插播:sicp介绍-_[3].mp4
└─└─├┈03.table组件无法自定义单元格-_[3].mp4
└─└─├┈04.vue支持jsx语法-_[3].mp4
└─└─├┈05.然而使用jsx并不现实-_[3].mp4
└─└─├┈06.$slots与$children的关系-_[3].mp4
└─└─├┈07.把columns改成table-column-_[3].mp4
└─└─└┈08.技术总结-_[3].mp4