关于我们
![]() ![]() |
Vue.js 3+TypeScript完全指南 读者对象:本书既适合有一定基础的前端开发工程师、Web 开发者阅读,也适合作为初学者学习 Vue.js 3 和TypeScript的入门教材。
本书是一本全面、深入介绍Vue.js 3和TypeScript前端开发技术的图书。本书详细介绍了Vue.js 3的新特性与优势,包括模板语法、内置指令、Options API、组件化、过渡动画、Composition API、Vue Router、Vuex 等核心知识点;TypeScript 的基础和进阶知识,包括数据类型、类型别名、联合类型、类型断言、函数类型、类、接口、泛型、类型声明等内容。此外,本书还深入探讨了前端工程化、第三方库的集成与使用、企业级管理后台的实现和自动化部署等内容,以及如何从零开始实现一个Mini-Vue.js 3框架,以便读者深入理解Vue.js 3的核心原理。本书既适合有一定基础的前端开发工程师、Web 开发者阅读,也适合作为初学者学习 Vue.js 3 和TypeScript的入门教材。本书旨在帮助读者全面理解Vue.js 3和TypeScript的使用方法和原理,掌握实用的知识和技能,提高前端开发水平。
王红元(网名coderwhy),担任广州市弘源科教软件有限公司CEO、澳大利亚The WAIN公司CTO,作为腾讯AI高校训练营的特聘讲师,曾为多所双一流高校授课。在国内外大型项目和软件系统中,负责架构设计和研发工作,曾兼任多家公司的技术顾问,协助解决开发过程中的关键问题。精通多种编程语言,包括C/C++、Python、Java、Objective-C、Swift、JavaScript和TypeScript等,对即时聊天和流媒体技术有深入研究。目前致力于不断提高自身技能,为企业、开源社区及学员做出更多贡献。刘军,曾在深圳市华云中盛科技股份有限公司担任前端负责人,广州市弘源科教软件有限公司联合创始人之一,拥有8年前端开发经验。精通Vue.js、React、TypeScript、webpack、Vite、Node、Docker、CI/CD,以及Java、Android等技术栈,擅长微前端、中后台、组件库、脚手架、公众号、小程序、大屏可视化等领域的工作。
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 <script setup>语法 270 10.13.1 <script setup>的基本使用 270 10.13.2 defineProps和defineEmits 272 10.13.3 defineExpose 273 10.13.4 useSlots和useAttrs 274 10.14 本章小结 275 11 Vue.js 3组件化高级详解 276 11.1 render函数 276 11.1.1 认识h函数 276 11.1.2 h函数的基本使用 277 11.1.3 render函数实现计数器 278 11.1.4 setup函数实现计数器 279 11.1.5 在render函数中实现插槽 279 11.1.6 组件的JSX语法 281 11.2 自定义指令 283 11.2.1 自定义指令的基本使用 283 11.2.2 自定义指令的生命周期函数 285 11.2.3 自定义指令的参数和修饰符 287 11.2.4 案例:自定义时间格式化指令 288 11.3 teleport内置组件 290 11.3.1 认识teleport组件 290 11.3.2 teleport的基本使用 290 11.3.3 teleport中嵌套组件 291 11.3.4 多个teleport组件的使用 291 11.4 Vue.js 3的插件开发 292 11.4.1 认识Vue.js 3插件 292 11.4.2 对象类型的插件 292 11.4.3 函数类型的插件 293 11.5 nextTick函数的原理 294 11.6 本章小结 297 12 Vue Router路由 299 12.1 认识Vue Router 299 12.1.1 什么是前端路由 299 12.1.2 前端路由的原理 300 12.1.3 认识Vue Router 303 12.2 Vue Router的基本使用 303 12.2.1 路由的基本使用 303 12.2.2 路由配置的细节 306 12.3 Vue Router进阶知识 310 12.3.1 动态路由的匹配 310 12.3.2 嵌套路由的使用 314 12.3.3 编程式导航的使用 317 12.3.4 路由内置组件的插槽 320 12.3.5 动态添加路由 322 12.3.6 路由守卫 324 12.4 本章小结 326 13 Vuex状态管理 327 13.1 认识Vuex状态管理 327 13.1.1 认识状态管理 327 13.1.2 Vuex的基本使用 329 13.1.3 Vue.js devtools插件安装 331 13.2 Vuex的核心概念 333 13.2.1 state 333 13.2.2 getters 339 13.2.3 mutations 343 13.2.4 actions 347 13.2.5 modules 352 13.3 本章小结 361 14 TypeScript的基础详解 362 14.1 认识JavaScript 362 14.1.1 优秀的JavaScript 362 14.1.2 类型引发的问题 363 14.1.3 缺少类型约束 364 14.2 认识TypeScript 364 14.2.1 什么是TypeScript 364 14.2.2 TypeScript的特点 365 14.3 搭建TypeScript的运行环境 365 14.3.1 TypeScript的编译环境 365 14.3.2 TypeScript的运行环境 366 14.4 声明变量的方式 367 14.4.1 声明变量的格式 367 14.4.2 声明变量的关键字 368 14.4.3 变量的类型推导 368 14.5 JavaScript的数据类型 368 14.5.1 number类型 368 14.5.2 boolean类型 369 14.5.3 string类型 369 14.5.4 array类型 370 14.5.5 object类型 370 14.5.6 null和undefined类型 370 14.5.7 symbol类型 371 14.6 TypeScript的数据类型 371 14.6.1 any类型 371 14.6.2 unknown类型 372 14.6.3 void类型 372 14.6.4 never类型 372 14.6.5 tuple类型 373 14.7 TypeScript类型的补充 374 14.7.1 函数的参数和返回值 374 14.7.2 对象类型 375 14.7.3 联合类型 376 14.7.4 类型别名 376 14.7.5 类型断言 377 14.7.6 字面量类型 380 14.7.7 类型缩小 381 14.8 TypeScript函数类型详解 383 14.8.1 函数的类型 383 14.8.2 函数参数的类型 384 14.8.3 this的类型 385 14.8.4 函数重载 386 14.9 本章小结 387 15 TypeScript的进阶详解 388 15.1 TypeScript类的使用 388 15.1.1 类的定义 388 15.1.2 类的继承 389 15.1.3 类的多态 390 15.1.4 成员修饰符 391 15.1.5 只读属性 392 15.1.6 getter/setter 393 15.1.7 静态成员 393 15.1.8 抽象类 393 15.1.9 类作为数据类型使用 394 15.2 TypeScript接口的使用 395 15.2.1 接口的声明 395 15.2.2 索引类型 396 15.2.3 函数类型 397 15.2.4 接口的继承 397 15.2.5 交叉类型 398 15.2.6 接口的实现 398 15.2.7 interface和type的区别 399 15.2.8 字面量赋值 400 15.3 TypeScript枚举类型 401 15.3.1 认识枚举 401 15.3.2 枚举的值 401 15.4 TypeScript泛型的使用 402 15.4.1 认识泛型 402 15.4.2 泛型接口 403 15.4.3 泛型类 403 15.4.4 泛型约束 404 15.5 模块和命名空间 405 15.5.1 模块化开发 405 15.5.2 命名空间 405 15.6 类型的声明 406 15.6.1 类型的查找 406 15.6.2 创建Vue.js 3 + TypeScript项目 407 15.6.3 declare声明变量 408 15.6.4 declare声明函数 409 15.6.5 declare声明类 409 15.6.6 declare声明文件 410 15.6.7 declare声明模块 410 15.6.8 declare声明命名空间 411 15.7 tsconfig.json文件解析 411 15.8 本章小结 413 16 第三方库的集成与使用 414 16.1 Vue CLI新建项目 414 16.2 Vue Router的集成 414 16.3 Vuex的集成 415 16.4 Element Plus的集成 417 16.4.1 Element Plus的介绍和安装 417 16.4.2 Element Plus的全局引入 418 16.4.3 Element Plus的按需引入 419 16.4.4 Element Plus的手动引入 420 16.5 axios的集成和使用 421 16.5.1 axios的介绍和安装 421 16.5.2 axios的GET请求 422 16.5.3 axios的POST请求 424 16.5.4 axios的配置选项 425 16.5.5 axios的并发请求 425 16.5.6 axios的拦截器 426 16.5.7 axios的实例 427 16.5.8 axios + TypeScript的封装 427 16.6 ECharts的集成和使用 432 16.6.1 认识前端可视化 432 16.6.2 ECharts介绍 432 16.6.3 ECharts的基本使用 433 16.6.4 ECharts的渲染引擎 435 16.6.5 ECharts的配置选项 436 16.6.6 BaseEchart组件的封装 437 16.6.7 ECharts绘制饼图 440 16.6.8 ECharts绘制折线图 441 16.7 本章小结 442 17 后台管理系统 443 17.1 Vue.js 3 + TypeScript项目介绍 443 17.2 Vue CLI新建项目 444 17.3 项目开发规范 447 17.3.1 统一IDE编码格式 447 17.3.2 Prettier格式化代码 447 17.3.3 ESLint 检测代码 449 17.3.4 项目编码规范 449 17.4 快速集成第三方库 449 17.4.1 vue.config.js的配置 449 17.4.2 Vue-Router的集成 451 17.4.3 Vuex的集成 452 17.4.4 Element Plus的按需导入 453 17.4.5 axios的集成与封装 454 17.4.6 区分开发和生成环境 457 17.5 tsconfig.json文件的解析 458 17.6 vue文件的类型声明 459 17.7 defineComponent函数的作用 460 17.8 登录模块 460 17.8.1 搭建登录页面 460 17.8.2 登录表单的实现 464 17.8.3 表单规则的校验 466 17.8.4 登录逻辑的实现 468 17.8.5 网络请求的反向代理 473 17.8.6 登录后获取用户信息 474 17.9 首页模块 476 17.9.1 搭建首页的布局 476 17.9.2 封装菜单组件 478 17.9.3 封装头部栏组件 483 17.9.4 新建页面和配置路由 486 17.9.5 动态注册路由 488 17.9.6 封装面包屑组件 491 17.10 用户模块 493 17.10.1 高级检索功能 493 17.10.2 用户列表功能 500 17.11 路由守卫和国际化 511 17.11.1 添加路由守卫 511 17.11.2 Element Plus的国际化 511 17.12 本章小结 512 18 自动化部署 513 18.1 DevOps开发模式 513 18.1.1 传统开发模式 513 18.1.2 DevOps开发模式 513 18.1.3 持续集成和持续交付 514 18.1.4 自动化部署流程 515 18.2 购买云服务器 516 18.2.1 注册阿里云账号 516 18.2.2 购买云服务器 516 18.3 连接远程云服务器 518 18.4 Nginx安装和配置 519 18.5 Nginx手动部署Vue.js 3项目 520 18.6 Jenkins安装和配置 522 18.6.1 安装Jenkins 522 18.6.2 Jenkins设置向导 523 18.6.3 Jenkins插件安装 524 18.7 项目自动化部署 526 18.7.1 新建任务 526 18.7.2 源码管理 526 18.7.3 构建触发器 527 18.7.4 构建环境 528 18.7.5 构建脚本 528 18.7.6 立即构建 530 18.7.7 构建结果 530 18.8 本章小结 531 19 手写Mini-Vue.js 3框架 532 19.1 Vue.js 3源码概述 532 19.1.1 认识虚拟DOM 532 19.1.2 Vue.js 3源码的三大核心模块 534 19.2 Mini-Vue.js 3框架的实现 535 19.2.1 渲染系统的实现 535 19.2.2 响应式系统的实现 542 19.2.3 应用程序入口模块 548 19.3 本章小结 554
你还可能感兴趣
我要评论
|