1 邂逅和初体验Vue.js 1 1.1 认识Vue.js 1 1.2 Vue.js与其他框架的对比 2 1.2.1 Vue.js、React和Angular三大框架对比 2 1.2.2 三大框架使用数据对比 2 1.3 Vue.js 2的缺点 4 1.4 Vue.js 3带来的新变化 4 1.5 搭建开发环境 6 1.5.1 VS Code的下载和安装 7 1.5.2 VS Code的基本配置 7 1.5.3 VS Code安装插件 9 1.6 Vue.js 3的安装和使用 10 1.6.1 使用CDN引入Vue.js 3 11 1.6.2 下载Vue.js 3源码并在本地引入 14 1.7 计数器案例 16 1.7.1 原生JavaScript实现计数器 16 1.7.2 用Vue.js 3实现计数器 17 1.7.3 MVVM架构模式 19 1.8 createApp的对象参数 20 1.8.1 template属性 20 1.8.2 data属性 22 1.8.3 methods属性 22 1.8.4 其他属性 24 1.9 VS Code生成代码片段 24 1.10 本章小结 27 2 模板语法和内置指令 28 2.1 插值语法 28 2.2 基本指令 30 2.2.1 v-once 30 2.2.2 v-text 31 2.2.3 v-html 32 2.2.4 v-pre 32 2.2.5 v-cloak 33 2.3 v-bind 34 2.3.1 绑定基本属性 34 2.3.2 绑定class��性 35 2.3.3 绑定style属性 38 2.3.4 动态绑定属性 40 2.3.5 绑定一个对象 41 2.4 v-on 42 2.4.1 绑定事件 42 2.4.2 事件对象和传递参数 44 2.4.3 修饰符 45 2.5 条件渲染 46 2.5.1 v-if和v-else 46 2.5.2 v-if和template结合使用 48 2.5.3 v-show 49 2.5.4 v-show和v-if的区别 50 2.6 列表渲染 51 2.6.1 v-for的基本使用 51 2.6.2 v-for支持的类型 52 2.6.3 v-for和template结合使用 54 2.6.4 数组的更新检测 55 2.7 key和diff算法 57 2.7.1 认识VNode和VDOM 57 2.7.2 key的作用和diff算法 59 2.7.3 没有key时的diff算法操作 60 2.7.4 有key时的diff算法操作 61 2.8 本章小结 64 3 Vue.js 3的Options API 65 3.1 计算属性 65 3.1.1 认识计算属性 65 3.1.2 计算属性的基本使用 66 3.1.3 计算属性和methods的区别 69 3.1.4 计算属性的setter和getter 71 3.2 监听器watch 73 3.2.1 watch的基本使用 73 3.2.2 watch配置选项 75 3.2.3 watch字符串、数组和API语法 78 3.2.4 watch深度监听 79 3.3 案例:书籍购物车 80 3.3.1 基本功能介绍 80 3.3.2 搭建基本功能 81 3.3.3 搭建书籍列表 83 3.3.4 搭建“加购物车”功能 84 3.3.5 优化价格和购买数量 86 3.3.6 完整代码展示 86 3.4 本章小结 88 4 v-model和表单输入 89 4.1 v-model的基本使用 89 4.2 v-model的实现原理 90 4.3 v-model绑定其他表单 91 4.4 v-model值的绑定 94 4.5 v-model的修饰符 94 4.5.1 .lazy修饰符 94 4.5.2 .number修饰符 94 4.5.3 .trim修饰符 96 4.6 v-model在组件上的使用 96 4.7 本章小结 96 5 Vue.js 3组件化开发 97 5.1 认识组件化 97 5.2 Vue.js 3的组件化 98 5.3 Vue.js 3注册组件 99 5.3.1 注册全局组件 99 5.3.2 组件的命名规范 102 5.3.3 注册局部组件 103 5.4 Vue.js 3开发模式 105 5.5 Vue.js 3支持SFC 106 5.6 本章小结 106 6 前端工程化 107 6.1 前端快速发展史 107 6.2 认识webpack 108 6.3 Vue CLI脚手架 109 6.3.1 认识Vue CLI 109 6.3.2 安装Node.js 109 6.3.3 安装Vue CLI 110 6.3.4 Vue CLI新建项目 111 6.3.5 Vue.js 3项目的目录结构 114 6.3.6 项目的运行和打包 115 6.3.7 vue.config.js文件解析 117 6.4 认识Vite 120 6.5 create-vue 脚手架 121 6.5.1 认识create-vue 121 6.5.2 create-vue新建项目 121 6.5.3 Vue.js 3项目目录结构 122 6.5.4 项目的运行和打包 123 6.5.5 vite.config.js文件解析 124 6.6 webpack和Vite的区别 126 6.7 本章小结 127 7 Vue.js 3组件化基础详解 128 7.1 组件的嵌套 130 7.1.1 搭建基本页面 130 7.1.2 组件的拆分和嵌套 131 7.1.3 组件CSS的作用域 134 7.1.4 组件之间的通信 135 7.2 组件样式的特性 135 7.2.1 Scoped CSS 135 7.2.2 CSS Modules 138 7.2.3 在CSS中使用v-bind 139 7.3 父子组件的相互通信 140 7.3.1 父组件传递数据给子组件 140 7.3.2 子组件传递数据给父组件 146 7.3.3 案例:选项卡TabControl实战 150 7.4 非父子组件的相互通信 153 7.4.1 Provide/Inject依赖注入 153 7.4.2 全局事件总线 159 7.5 组件中的插槽 162 7.5.1 认识插槽 162 7.5.2 插槽的使用 163 7.6 组件的作用域插槽 169 7.6.1 认识渲染作用域 169 7.6.2 作用域插槽 169 7.6.3 独占默认插槽 171 7.7 本章小结 172 8 Vue.js 3组件化进阶详解 173 8.1 动态组件 173 8.1.1 v-if指令的实现 174 8.1.2 动态组件的实现 175 8.1.3 动态组件的传参 176 8.1.4 keep-alive的使用 177 8.2 异步组件 180 8.2.1 webpack对代码分包 180 8.2.2 在Vue.js 3中实现异步组件 182 8.2.3 异步组件和Suspense 185 8.3 获取元素或组件的实例 187 8.3.1 $refs 187 8.3.2 $parent 189 8.4 组件生命周期函数 190 8.4.1 认识组件的生命周期 190 8.4.2 生命周期函数的演练 191 8.5 在组件中使用v-model指令 193 8.5.1 v-model的基本使用方法 194 8.5.2 v-model绑定computed 195 8.5.3 组件上应用多个v-model 197 8.5.4 v-model绑定对象类型 198 8.6 本章小结 200 9 Vue.js 3实现过渡动画 201 9.1 基本过渡动画 201 9.1.1 认识过渡动画 201 9.1.2 过渡动画特有的类 203 9.1.3 CSS的Animation动画 204 9.1.4 Transition组件的常见属性 205 9.2 第三方库动画库 210 9.2.1 Animate.css动画库 210 9.2.2 GSAP动画库 212 9.3 列表中的过渡动画 216 9.3.1 TransitionGroup的基本使用 217 9.3.2 列表元素的过渡动画 219 9.3.3 案例:列表元素的交替过渡 220 9.4 本章小结 222 10 Vue.js 3 Composition API详解 224 10.1 Options API代码的复用 224 10.1.1 Mixin混入 224 10.1.2 extends继承 228 10.2 认识Composition API 229 10.3 setup函数的基本使用 230 10.3.1 setup函数的参数 231 10.3.2 setup函数的返回值 233 10.3.3 setup函数的this 234 10.4 数据响应式API 235 10.4.1 reactive 235 10.4.2 ref 236 10.5 响应式工具reactive 239 10.5.1 readonly 239 10.5.2 isProxy 241 10.5.3 isReactive 241 10.5.4 isReadonly 241 10.5.5 toRaw 242 10.5.6 shallowReactive 242 10.5.7 shallowReadonly 242 10.6 响应式工具ref 242 10.6.1 toRefs 242 10.6.2 toRef 244 10.6.3 isRef 245 10.6.4 unref 245 10.6.5 customRef 245 10.6.6 shallowRef 247 10.6.7 triggerRef 247 10.7 computed计算属性 247 10.7.1 computed函数的基本使用 247 10.7.2 computed函数的get和set方法 248 10.8 watchEffect监听 249 10.8.1 watchEffect的基本使用 249 10.8.2 停止watchEffect监听 251 10.8.3 watchEffect清除副作用 251 10.8.4 watchEffect的执行时机 252 10.9 watch监听 254 10.9.1 监听单个数据源 254 10.9.2 监听多个数据源 257 10.9.3 监听响应式对象 258 10.10 组件生命周期函数 259 10.11 Provide/Inject依赖注入 260 10.11.1 提供数据 261 10.11.2 注入数据 262 10.11.3 提供和注入响应式数据 263 10.12 案例:Composition API的实战 264 10.12.1 计数器的两种实现方式 264 10.12.2 代码逻辑的封装和复用 266 10.12.3 修改网页的标题 267 10.12.4 监听页面滚动位置 268 10.13