目录
第一部分 基础知识
第 1章前端基础 ··················································································································· 3
1.1前端技术简介 ·········································································································· 3
1.2 HTML·······················································································································4
1.2.1 HTML简介 ·································································································· 4
1.2.2 HTML编辑器 ······························································································ 5
1.2.3 HTML标签 ·································································································· 7
1.3 CSS··························································································································· 8
1.3.1 CSS简介 ······································································································ 8
1.3.2 CSS选择器 ·································································································· 8
1.3.3 CSS样式入门 ···························································································· 10
1.4 JavaScript················································································································ 12
1.4.1 JavaScript简介··························································································· 12
1.4.2 JavaScript语法入门 ··················································································· 13
1.4.3 JavaScript到 TypeScript············································································· 15
1.5 SPA与 MPA ··········································································································· 16
第 2章 TypeScript基础······································································································ 17
2.1 TypeScript初体验 ·································································································· 17
2.1.1 TypeScript简介 ·························································································· 17
2.1.2 安装 TypeScript ·························································································· 17
2.1.3 TypeScript示例 ·························································································· 18
2.1.4 TypeScript代码调试 ·················································································· 19
2.2 TypeScript基础语法 ······························································································ 20
2.2.1 变量 ············································································································ 20
2.2.2 函数 ············································································································ 21
2.2.3 模块 ············································································································ 21
2.2.4 命名空间 ···································································································· 23
2.3类
···························································································································· 23
2.4接口
························································································································ 26
2.5泛型
························································································································ 27
2.
6迭代器和生成器 ···································································································· 29
2.6.1
迭代器 ········································································································ 29
2.6.2
生成器 ········································································································ 30
2.7编译选项
················································································································ 30
2.8习题
························································································································ 31
第 3章 Vue.js基础·············································································································· 32
3.1
Vue.js简介 ············································································································· 32
3.1.1
渐进式框架 ································································································ 32
3.1.2
单文件组件 ································································································ 33
3.1.3
API风格····································································································· 33
3.2环境搭建
················································································································ 35
3.2.1
安装 Node.js ······························································································· 35
3.2.2
Vue Cli脚手架 ··························································································· 36
3.3开发工具
················································································································ 36
3.4开发示例
················································································································ 38
3.4.1
创建项目 ···································································································· 38
3.4.2
项目结构 ···································································································· 39
3.4.3
示例解析 ···································································································· 40
3.5代码调试
················································································································ 42
3.6习题
························································································································ 46
第 4章 Vue模板·················································································································· 47
4.1模板基础
················································································································ 47
4.1.1
模板语法 ···································································································· 47
4.1.2
模板插值 ···································································································· 47
4.1.3
模板指令 ···································································································· 50
4.2条件渲染
················································································································ 51
4.2.1
v-if条件渲染 ······························································································ 51
4.2.2
v-show条件渲染························································································ 52
4.3循环渲染
················································································································ 53
4.3.1
v-for指令基本用法···················································································· 53
4.3.2
v-for指令高级用法···················································································· 55
4.4模板引用
················································································································ 56
4.5自定义指令
············································································································ 57
4.5.1
使用场景 ···································································································· 57
4.5.2
钩子函数 ···································································································· 58
4.5.3
指令实例属性 ····························································································· 59
4.5.4
元素指令 ···································································································· 60
4.5.5
高级选项 ···································································································· 60
4.6习题
························································································································ 62
目录 V
第 5章 Vue组件基础·········································································································· 63
5.1基本使用
················································································································ 63
5.1.1
创建组件 ···································································································· 63
5.1.2
组件注册 ···································································································· 64
5.1.3
使用组件 ···································································································· 65
5.2属性与方法
············································································································ 66
5.2.1
属性基础 ···································································································· 66
5.2.2
组件方法 ···································································································· 67
5.2.3
属性声明 ···································································································· 68
5.2.4
属性校验 ···································································································· 69
5.
3计算属性与监听器 ································································································· 70
5.3.1
计算属性 ···································································································· 70
5.3.2
计算属性赋值 ····························································································· 71
5.3.3
属性监听 ···································································································· 72
5.3.4
函数限流 ···································································································· 73
5.4双向绑定
················································································································ 74
5.4.1
文本输入框 ································································································ 74
5.4.2
复选框与单选框 ························································································· 75
5.4.3
选择列表 ···································································································· 76
5.5样式绑定
················································································································ 76
5.5.1
class属性样式···························································································· 76
5.5.2
内联样式 ···································································································· 78
5.5.3
样式表作用域 ····························································································· 78
5.6习题
························································································································ 80
第 6章 Vue组件进阶·········································································································· 81
6.
1组件的生命周期 ···································································································· 81
6.2组件通信
················································································································ 82
6.2.1
父子组件通信 ····························································································· 83
6.2.2
兄弟组件通信 ····························································································· 84
6.2.3
全局组件通信 ····························································································· 86
6.3组件混入
················································································································ 88
6.3.1
混入基础 ···································································································· 88
6.3.2
选项合并 ···································································································· 89
6.3.3
全局混入 ···································································································· 89
6.4组件插槽
················································································································ 90
6.4.1
插槽简介 ···································································································· 90
6.4.2
具名插槽 ···································································································· 91
6.4.3
默认插槽 ···································································································· 92
6.4.4
作用域插槽 ································································································ 92
6.5动态组件
················································································································ 93
6.6异步组件
················································································································ 94
6.6.1
基本用法 ···································································································· 94
6.6.2
加载与错误状态 ························································································· 95
6.6.3 Suspense ····································································································· 96
6.7习题
························································································································ 97
第二部分 开发进阶
第 7章事件监听与处理 ··································································································· 101
7.1事件监听
·············································································································· 101
7.1.1
事件基础 ·································································································· 101
7.1.2
多事件处理 ······························································································ 102
7.1.3
事件修饰符 ······························································································ 103
7.2事件类型
·············································································································· 104
7.2.1
常用事件类型 ··························································································· 104
7.2.2
按键修饰符 ······························································································ 105
7.2.3
系统按键修饰符 ······················································································· 106
7.3自定义事件
·········································································································· 106
7.4综合示例
·············································································································· 107
7.5习题
······················································································································ 108
8.1动画概述
·············································································································· 109
8.2
CSS动画 ·············································································································· 109
8.2.1
过渡动画 ·································································································· 110
8.2.2
关键帧动画 ·······························································································111
8.3
JavaScript动画····································································································· 112
8.3.1 setInterval ································································································· 112
8.3.2 requestAnimationFrame ············································································ 113
8.3.3 动画事件监听 ··························································································· 115
8.4
Vue过渡动画 ······································································································· 116
8.4.1
Transition组件 ························································································· 116
8.4.2
多元素过渡 ······························································································ 117
8.4.3
多组件过渡 ······························································································ 119
8.4.4
列表过渡 ·································································································· 120
8.4.5
动画监听 ·································································································· 122
8.5
Lottie动画············································································································ 123
8.5.1
Lottie简介································································································ 123
8.5.2
基本使用 ·································································································· 124
8.5.3
动画配置 ·································································································· 126
8.6习题
······················································································································ 127
第 8章动画 ······················································································································· 109
目录 VII
第 9章导航与路由 ··········································································································· 128
9.1 Vue Router············································································································ 128
9.1.1
路由概述 ·································································································· 128
9.1.2
Vue Router安装 ······················································································· 129
9.1.3
快速上手 ·································································································· 129
9.2路由匹配
·············································································································· 132
9.2.1
路由参数匹配 ··························································································· 132
9.2.2
路由通配符 ······························································································ 133
9.2.3
路由参数语法 ··························································································· 134
9.2.4
嵌套路由 ·································································································· 135
9.2.5
命名路由 ·································································································· 137
9.2.6
路由重定向 ······························································································ 138
9.3编程式导航
·········································································································· 138
9.3.1
路由导航 ·································································································· 138
9.3.2
导航历史 ·································································································· 139
9.3.3
导航历史模式 ··························································································· 140
9.4路由传参
·············································································································· 141
9.5导航守卫
·············································································································· 143
9.5.1
全局前置守卫 ··························································································· 143
9.5.2
全局解析守卫 ··························································································· 144
9.5.3
路由独享守卫 ··························································································· 146
9.5.4
组件级守卫 ······························································································ 147
9.6动态路由
·············································································································· 148
9.6.1
添加路由 ·································································································· 149
9.6.2
删除路由 ·································································································· 150
9.7习题
······················································································································ 151
第 10章网络请求 ············································································································· 152
10.1 网络基础 ············································································································ 152
10.1.1 HTTP····································································································· 152
10.1.2 GET与 POST ······················································································· 154
10.2 Axios ·················································································································· 155
10.2.1
免费数据服务 ······················································································· 155
10.2.2
vue-axios基本操作 ··············································································· 158
10.2.3
vue-axios实用功能 ··············································································· 160
10.2.4
请求配置与响应结构 ··········································································· 162
10.2.5
拦截器 ··································································································· 163
10.2.6
取消请求 ······························································································· 164
10.3 Fetch ··················································································································· 165
10.3.1
Fetch简介 ····························································································· 165
10.3.2
Fetch基本操作 ····················································································· 166
10.3.3
Request接口 ························································································· 167
10.3.4
Response接口······················································································· 168
10.4 Mock··················································································································· 169
10.4.1 Mock简介····························································································· 169
10.4.2 Mock.js·································································································· 170
10.4.3 Apifox ··································································································· 171
10.5 习题 ···················································································································· 174
第 11章状态管理 ············································································································· 176
11.1概述
···················································································································· 176
11.
2本地状态管理 ····································································································· 177
11.3 Vuex···················································································································· 178
目录 IX
11.3.1
Vuex简介······························································································ 178
11.3.2
Vuex组成······························································································ 179
11.3.3
Vuex基本操作······················································································ 180
11.3.4
Vuex核心概念······················································································ 182
11.4 Pinia···················································································································· 189
11.4.1
Pinia简介······························································································ 189
11.4.2
Pinia基本使用 ······················································································ 190
11.4.3
Pinia持久化·························································································· 193
11.4.4
Pinia核心概念 ······················································································ 195
11.4.5
Pinia插件······························································································ 199
11.5习题 ···················································································································· 200
第 12章 Element Plus······································································································· 201
12.1
Element Plus简介 ······························································································ 201
12.1.1
UI框架简介·························································································· 201
12.1.2
Element Plus入门 ················································································· 201
12.2
常用组件 ············································································································ 203
12.2.1
基础组件 ······························································································· 203
12.2.2
表单组件 ······························································································· 204
12.2.3
下拉选择器 ··························································································· 208
12.2.4
日期选择器 ··························································································· 210
12.2.5
数据类组件 ··························································································· 213
12.2.6
导航组件 ······························································································ 215
12.3
综合示例 ············································································································ 219
12.4
习题 ···················································································································· 222
第 13章 Vant ····················································································································· 223
13.1
Vant简介············································································································ 223
13.2
Vant基础入门 ···································································································· 223
13.2.1
安装 Vant ······························································································ 223
13.2.2
引入 Vant组件······················································································ 224
13.2.3
浏览器适配 ··························································································· 226
13.3
常用组件 ············································································································ 228
13.3.1
基础组件 ······························································································· 228
13.3.2
导航组件 ······························································································· 230
13.3.3
展示组件 ······························································································· 233
13.4
综合示例 ············································································································ 237
13.5
习题 ···················································································································· 238
第 14章 Vite ······················································································································ 239
14.1
Vite简介············································································································· 239
14.1.1
Vite诞生背景 ······················································································· 239
14.1.2
Vite特性 ······························································································· 240
14.2
Vite基础入门 ····································································································· 241
14.2.1
环境搭建 ······························································································· 241
14.2.2
项目结构 ······························································································· 241
14.2.3
配置文件 ······························································································· 243
14.3
Vite核心概念 ····································································································· 243
14.3.1
Vite构建过程 ······················································································· 243
14.3.2
Esbuild预构建······················································································ 245
14.3.3
Rollup打包 ··························································································· 246
14.4
Vite插件开发 ····································································································· 247
14.4.1
Vite插件简介 ······················································································· 247
14.4.2
Vite通用 API························································································ 248
14.4.3
Vite独有 API························································································ 249
14.4.4
插件开发实战 ······················································································· 252
14.5
静态资源处理 ···································································································· 255
14.5.1
图片加载 ······························································································· 255
14.5.2
JSON加载 ···························································································· 256
14.5.3 Web Worker··························································································· 256
14.5.4 WebAssembly························································································ 257
14.6
服务器渲染 ········································································································ 258
14.6.1
SSR基本概念······················································································· 258
14.6.2
SSR生命周期······················································································· 260
14.6.3
使用 Vite构建 SSR ·············································································· 260
14.7
习题 ···················································································································· 265
第三部分 项目实战
第 15章移动招聘客户端 ·································································································· 269
15.1
项目概述 ············································································································ 269
15.2
项目搭建 ············································································································ 270
15.2.1
初始化项目 ··························································································· 270
15.2.2
搭建主页面 ··························································································· 271
15.2.3
路由管理 ······························································································· 272
15.2.4
请求 API ······························································································· 275
15.2.5
引入 Pinia······························································································ 277
15.3
账号管理 ············································································································ 278
15.3.1
账号登录 ······························································································· 278
15.3.2
用户协议 ······························································································· 281
15.4
任务模块 ············································································································ 283
15.4.1
任务首页 ······························································································· 283
15.4.2
城市切换 ······························································································· 286
15.4.3
任务筛选 ······························································································· 287
15.4.4
任务搜索 ······························································································· 289
15.4.5
任务详情 ······························································································· 291
15.5
合约模块 ············································································································ 294
15.5.1
合约首页 ······························································································· 294
15.5.2
合约详情 ······························································································· 295
15.6
消息模块 ············································································································ 297
15.6.1
消息首页 ······························································································· 297
15.6.2
系统消息 ······························································································· 300
15.6.3
表情输入 ······························································································· 302
15.6.4
聊天详情 ······························································································· 303
15.7
本章小结 ············································································································ 305
第 16章知乎社区客户端 ·································································································· 307
16.1
项目概述 ············································································································ 307
16.2
服务端开发 ········································································································ 308
16.2.1
Spring Boot简介··················································································· 308
16.2.2
搭建 Spring Boot项目 ·········································································· 309
16.2.3
安装 MySQL························································································· 312
16.2.4
MySQL数据服务 ················································································· 314
16.2.5
集成 Redis····························································································· 316
16.2.6
集成 Knife4j·························································································· 318
16.2.7
JWT登录接口 ······················································································ 321
16.3
项目搭建 ············································································································ 327
16.3.1
初始化项目 ··························································································· 327
16.3.2
引入 UnoCSS ························································································ 328
16.3.3
引入 SVG······························································································ 331
16.3.4
网络请求 API························································································ 332
16.3.5
路由管理 ······························································································· 333
16.4
功能开发 ············································································································ 334
16.4.1
搭建主页面 ··························································································· 334
16.4.2
推荐模块 ······························································································· 337
16.4.3
话题搜索 ······························································································· 339
16.4.4
文章详情 ······························································································· 341
16.4.5
视频列表 ······························································································· 344
16.4.6
视频详情 ······························································································· 345
16.4.7
文章评论 ······························································································· 348
16.5
账号管理 ············································································································ 351
16.5.1
账号登录 ······························································································· 351
16.5.2
二维码登录 ··························································································· 354
16.5.3
第三方登录 ··························································································· 356
16.6
创作中心 ············································································································ 358
16.7
国际化 ················································································································ 361
16.8
本章小结 ············································································································ 363
第 17章性能优化与版本发布 ·························································································· 365
17.1
性能优化 ············································································································ 365
17.1.1
性能优化简介 ······················································································· 365
17.1.2
网络优化 ······························································································· 365
17.1.3
资源压缩 ······························································································· 368
17.1.4
资源加载优化 ······················································································· 370
17.1.5
预渲染优化 ··························································································· 372
17.2
构建生成版本 ···································································································· 376
17.2.1
修改默认配置 ······················································································· 376
17.2.2
构建生产版本 ······················································································· 377
17.2.3
Nginx部署···························································································· 378
17.3
本章小结 ············································································································ 380
