' i4 o2 V- ?! S/ x8 p7 G
4 U9 P( \5 \+ J3 s〖课程介绍〗
) } ^3 R" v+ r6 [. E' O TypeScript是前端的发展趋势,但是很多同学却缺少实战经验,而且市面上缺少TypeScript 的实战课程。本课程首先讲解TypeScript的一些基础语法和常见用法,接着带同学们使用TypeScript一步步去实现一个完整的axios JS库,然后进行完整的单元测试,最后把开发的JS 库打包并发布到npm上。通过课程学习完全掌握axios的实现原理,修炼原生JavaScript内功,提升个人职场竞争力。9 C; A; B9 |' b6 Q* ^, I% @) X9 [3 i' p/ R' a+ X
, y4 x" E' \$ r8 I1 k3 o% B! a$ \: V5 z
〖课程目录〗
& [! M& g8 x2 u, @- q第1章 课程介绍【悄悄告诉你,一定要看,有福利】
; y* F. _7 U' h% _介绍本课程的主要内容,通过本次课程可以学到的知识点,学习方法介绍。: [ d) n& b7 b* J) u4 _
1-1 课程介绍 试看8 E9 u4 ?* H7 [- O) ~3 x D; J
+ M; x7 q+ A& O& I! |
第2章 初识 Typescript【初次体验】% G3 j! O' {$ e. }) @1 |0 t
教会同学们安装 Typescript 编译器,以及通过编写第一个 TypeScript 程序认识 TypeScript。
' I2 v6 `- ]: x1 Q% f2-1 安装 TypeScript l/ }6 X b7 d% R Z" D
2-2 编写第一个 TypeScript 程序 试看
/ k2 t; r/ Q- P3 p8 l/ x- k8 w# G
第3章 Typescript 类型系统【必备基础,牢固掌握】8 `0 |% i. q3 m* T
参考官方文档,主讲 TypeScript 的一些重要的语法和概念,并配合一些具体的代码示例辅助说明,帮助同学们了解 TypeScript 的常见用法,为之后的实战打下基础。) e1 @0 L* S5 ]* d) x
3-1 基础类型(上); L( H6 I- \8 {% f6 r
3-2 基础类型(下)4 b+ ^5 U1 T# D3 ~/ {# {4 x* r
3-3 基础类型(注意版本报错问题)
1 d$ t d' k) g/ U0 P G3-4 变量声明 - var 声明
+ e6 V/ E: \1 _' g9 _4 y4 H3-5 变量声明 - let 声明
3 V8 b- w8 f% h3-6 变量声明 - const 声明
- g- ~8 m' M# C8 G7 O: Y3-7 变量声明 - 解构! g6 J0 w, Y( ~0 f! w1 K
3-8 变量声明 - 展开
/ }) J. d+ A, p! _3-9 接口 - 接口初探
' H& ^. H f( [: `3 R' L3-10 接口 - 可选属性+只读属性1 H* z! F% M) L) K
3-11 接口 - 额外属性检查+函数类型+可索引的类型' E* r. a/ b( L
3-12 接口 -类类型+继承接口+混合类型+接口继承类
5 B0 V; f. r# V3-13 类 - 基本示例+继承
% k* E* k3 a3 v5 d' i# `, Y3-14 类 - 公共,私有与受保护修饰符+ readonly 修饰符
# C+ T8 P2 A" e* m' B) a3-15 类 - 存取器+ 静态属性
6 D3 i4 @ Y: x- w( R) a4 j3-16 类 - 抽象类+ 高级技巧
- F% `, M$ I6 Y% ^% Q& [3-17 函数 - 基本示例+ 函数类型
7 M0 t: k M. C, o3-18 函数 - 可选参数和默认参数
5 P% M7 J4 U" Y1 w3-19 函数 - this+ 重载
! e4 w# b: b6 j( x3-20 泛型 - 基本示例+ 使用泛型变量+泛型类型. A* Q+ B0 C1 h j/ E
3-21 泛型 - 泛型类+泛型约束
) o* V% Q( E. h Q9 V1 |3-22 类型推断 - 基础+ 最佳通用类型+ 上下文类型
- {. ]* ^* @; ~( l4 F/ `2 B7 a3-23 高级类型 - 交叉类型
, K: I% Z- d p& `6 b3-24 高级类型 - 联合类型. S& f6 A/ U6 O8 ~( Y2 F9 K, T7 T
3-25 高级类型 - 类型保护
' U% T! f( o3 l) h3-26 高级类型 - 可以为 null 的类型+ 字符串字面量类型
3 t1 h' Q# b; m/ i8 k9 A6 X" Q# j4 | [4 A) s8 O+ w
第4章 ts-axios 项目构建【工欲善其事必先利其器】# a7 h3 s: K9 O/ N9 x& t$ k: T
分析 axios 项目的重构需求,使用 typescrpit-library-starter 脚手架初始化项目,并编写基础请求的代码,搭建整个 demo 的架构方案。
5 I) k; K8 ^7 g# W( S4-1 需求分析
6 x9 v1 ?+ ]! [) i. O& t) r4-2 初始化项目 - 创建代码仓库
& k. m. c! f! ~; A& U" [0 O4-3 初始化项目 - TypeScript library starter7 L$ Z( L% Z; h9 D
4-4 初始化项目 - 关联远程分支
3 j4 P4 B: p3 [8 E4-5 编写基础请求代码 - 创建入口文件6 S7 b2 i" E ~
4-6 编写基础请求代码 - 利用 XMLHttpRequest 发送请求, x+ f; v3 }' `
4-7 编写基础请求代码 - demo 编写" \$ v- K2 t! T9 L: ~+ P
3 d. i2 T4 x: d9 {% T0 z& u
第5章 ts-axios 基础功能实现【核心流程】$ m, h4 r" ~9 n z8 ^& u$ E( U$ [
实现 axios 的基础功能,包括对请求 url、data、header 以及响应 data、header 的处理。+ V) L+ a# W! L" `+ E
5-1 处理请求 url 参数 - 需求分析
( ~& P/ r/ G# k7 f5-2 处理请求 url 参数 - buildURL 函数实现& y- ]% ]7 L2 j* ?1 M7 S; [
5-3 处理请求 url 参数 - 实现 url 参数处理逻辑: h5 d4 g5 Z( q( u( M6 @
5-4 处理请求 url 参数 - demo 编写' h9 i$ r! ]* P3 V
5-5 处理请求 body 数据 - 需求分析+ 实现 试看9 L: {! B$ S) Z# l* c: c/ z
5-6 处理请求 header - 需求分析
6 F) E, y( P. _" D5-7 处理请求 header - processHeaders 函数实现- Z8 S' c, z1 ~7 c
5-8 处理请求 header - 实现请求 header 处理逻辑) q `; r, d$ |! ?2 y4 q( }1 D9 ?
5-9 处理请求 header - demo 编写9 z8 ?, r2 V0 U& A
5-10 获取响应数据 - 需求分析+实现% ~. Q& i5 F% o$ M- f: B
5-11 处理响应 header - 需求分析+ parseHeaders 函数实现及应用0 T" G! O/ b& Q! ]" Y4 O d e
5-12 处理响应 data - 需求分析+ transformResponse 函数实现及应用0 a3 x7 ~; J3 s4 W
: U) \4 p( @* H+ H/ [
第6章 ts-axios 异常情况处理【不可忽视的边界条件】1 |: l3 w6 {6 t$ k! d
处理 axios 请求的一些异常情况,包括网络错误、请求超时,构造一个信息增强错误处理类。
9 W% o" ]* y) o$ x0 V4 G0 q) `6-1 错误处理 - 需求分析* z3 ^( y r& e7 R9 Z8 \0 v
6-2 错误处理- 网络错误+超时错误+非200状态码+demo
4 T8 p. W) l) M2 L/ @/ N6-3 错误信息增强 - 需求分析
+ `% I% }6 b& m: f/ `9 @ {6-4 错误信息增强 - 创建 AxiosError 类
" i7 C7 e: ]) d% ?' ^3 R$ B6-5 错误信息增强 - createError 方法应用+ 导出类型定义, C+ p0 W. v. v' \4 E8 `
2 |$ P* I! n( _/ z
第7章 ts-axios 接口扩展【工厂模式的合理运用,设计思想的转变】
2 i. \; t5 i& K2 f$ y+ n把 axios 从普通函数实现到通过工厂模式类的设计转变,并扩展更多调用接口,把 axios 变成了一个 混合对象,以及让响应数据支持泛型。
( H: v, F4 A& U' p1 D; ?: a1 [7-1 -1 扩展接口 - 需求分析& y3 y8 E6 u; A9 l4 b8 f
7-2 -2 扩展接口 -接口类型定义+ 创建 Axios 类
% o5 }7 M0 z" L: G7-3 -3 扩展接口 - 混合对象实现+ demo 编写# G2 L3 T% _ B& R
7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写# t- [5 {: T( }) z: g! f
7-5 -1 响应数据支持泛型- 需求分析+ 接口添加泛型参数+ demo 编写6 | W. x! G% m& f( V
; |) ?7 ^! k3 ?+ m; X. X
第8章 ts-axios 拦截器实现【巧妙运用 Promise 链式调用】; H N8 W' |( T3 ~8 J- }5 P6 ~) H
实现 axios 的拦截器功能,对整个实现做了详细的设计,最后实现拦截器管理类以及链式调用逻辑。
( a7 ]- j( y2 j H: y. M( j3 ~' Y8-1 -1 拦截器的设计与实现 - 需求分析+ 整体设计
2 ?# n ]5 E; f* {* P E8-2 -2 拦截器的设计与实现 - 拦截器管理类实现0 U0 L/ Q2 l9 k; L( \
8-3 -3 拦截器的设计与实现 - 链式调用实现
9 Y: q; _2 j, d* H8-4 -4 拦截器的设计与实现 - demo 编写
" T6 Z T/ E5 ~, P4 d7 ?& G a! T
: _% k/ E9 x% s3 q第9章 ts-axios 配置化实现【巧妙运用策略模式实现配置合并】' Q, j4 Z9 U4 j6 h9 u9 |
让 axios 支持一些默认配置,实现了配置的合并,根据不同的属性采用不同的合并策略,并且扩展了 axios.create 方法扩展默认配置,生成新的实例。* K+ C9 _0 l1 ~7 i, E& m
9-1 合并配置的设计与实现 - 需求分析 + 默认配置
; h% W0 [0 Y6 Y0 @9-2 合并配置的设计与实现 - 配置合并策略(上)( L) Z( I/ I4 }: {, J" W w3 T6 {1 E
9-3 合并配置的设计与实现 - 配置合并策略(下)& ~0 K( B. H0 `6 G2 [% }
9-4 合并配置的设计与实现 - flatten headers + demo 编写0 s2 b8 B. E5 q
9-5 请求和响应配置化- 需求分析+ 修改默认配置
. C" Z% z& t4 G+ f+ d% i1 r/ }9-6 请求和响应配置化- transform 逻辑重构 + demo 编写
! Q% F" l3 c r9-7 扩展 axios.create 静态接口 - 需求分析+ 静态方法扩展+ demo 实现% A. a6 C! S2 R* }- |0 D! V d
0 n( O7 B+ ^# V. j: b1 j$ e: ]& g
第10章 ts-axios 取消功能实现【巧妙运用 Promise 实现异步分离】
3 W0 v/ Z' C# S8 h% |) {& H- w实现 axios 的取消功能,包括对取消接口的设计,CancelToken 类的设计与实现。" @; u; B3 l! Q
10-1 -1 取消功能的设计和实现 - 需求分析+ 异步分离的设计方案
- a1 h+ S8 E% m' Y1 v0 }0 r, t10-2 -2 取消功能的设计和实现 - CancelToken 类实现+ 扩展静态接口9 t/ B3 j' B, r% ]
10-3 -3 取消功能的设计和实现 - Cancel 类的实现及 axios 的扩展+ 额外逻辑实现
" P% q z" _" \ h10-4 -4 取消功能的设计和实现 - demo 编写
8 i! ]+ W8 H: D+ @$ X6 X% g- v/ X6 v( h- S3 B, J) {, l2 R
第11章 ts-axios 更多功能实现【锦上添花】7 {6 j+ e7 l* w0 Z7 l* [) `0 k
实现 axios 更多的功能,包括 XSRF 防御、上传、http 认证授权、withCredentials、自定义参数序列化、自定义合法状态码、自定义合法状态码等,百分百实现官方 axio 在浏览器端的功能。
+ m7 N8 d- ^0 c1 A( W0 l11-1 withCredentials 需求分析&代码实现& demo 编写
' ?2 I: q* ?8 r+ S- P( I11-2 xsrf 防御 - 需求分析
& h; M! D" H( M1 U" ~7 L, e11-3 xsrf 防御 - 代码编写
# o" Q9 E" G4 h" ~8 ?11-4 xsrf 防御 - demo 编写; ^- p Q& N9 r
11-5 上传和下载的进度监控 需求分析+ 代码实现
1 e& ~2 j! `; Y4 [) h11-6 上传和下载的进度监控 demo 编写% ~7 w1 B' a0 T( C! i3 W
11-7 HTTP 授权 需求分析+ 代码实现 + demo 编写: i$ L" }; J6 z6 X. }) c2 W- x, w
11-8 自定义合法状态码 需求分析+ 代码编写 + demo编写9 d/ y: I1 e5 D( v
11-9 自定义参数序列化 需求分析+ 代码编写 + demo编写+ R9 Y9 P+ D$ X. e( |: v2 s3 ~- Y2 T8 q
11-10 baseURL 需求分析+ 代码编写 + demo编写" L1 w0 J& Y! E6 y$ B0 m
11-11 静态方法扩展 需求分析+ 代码编写 + demo编写
/ l6 I8 l) E: `5 b& Q0 \. Z5 @
) d: c- F7 P/ Y: ^第12章 ts-axios 单元测试【保障代码高质量】/ x G$ ^* {: S k6 D; z/ E
先介绍单元测试,再讲解测试环境搭建,最后完整的实现整个 axios 库的单元测试,保证测试覆盖率达到 99%
/ l0 _$ Z0 F n5 i: o12-1 前言
' H6 ~- x: m# q( _& @12-2 Jest 的安装和配置 Jest 安装& I/ z. x2 n' @6 u0 P
12-3 辅助模块单元测试 准备工作
9 S* c8 T- a" r12-4 辅助模块单元测试 util 模块测试-2 b) y7 `$ o0 z+ Q7 z3 g" G" Y; X
12-5 辅助模块单元测试 cookie 模块测试 + data 模块测试 + error 模块测试
0 L; d. R" `" }9 l2 k12-6 辅助模块单元测试 headers 模块测试) t1 t3 E7 c, B4 o# l8 \
12-7 辅助模块单元测试 url 模块测试) d1 R# A% L/ T0 j) y0 ^ d
12-8 请求模块单元测试 jasmine-ajax + 测试代码编写
( J3 w" M$ D% ^" W9 E1 ~7 q12-9 header 模块单元测试 测试代码编写! Y; n' `$ @; u
12-10 Axios 实例模块单元测试 测试代码编写1 C! p+ e# s& R
12-11 拦截器模块单元测试 测试代码编写
' u+ W n9 G" W, ^) ~* W12-12 mergeConfig 模块单元测试 测试代码编写: @& c8 y% G! d* o% f& q# p
12-13 请求取消模块单元测试 Cancel 类单元测试 + CancelToken 类单元测试 + Cancel 业务逻辑单元测试/ `3 l; S: L' ~) r3 q
12-14 剩余模块单元测试 defaults 模块单元测试
0 T/ F5 e% L: t4 `2 ^5 \12-15 剩余模块单元测试 transform 模块单元测试 + xsrf 模块单元测试
3 A; ]. T+ X( y- r! z( c12-16 剩余模块单元测试 上传下载+HTTP 授权+ 静态方法模块单元测试7 S$ G8 Q+ z7 L( ~# L
12-17 剩余模块单元测试 补充未覆盖的代码测试
; s9 t- H8 ^& K3 Z8 Y
3 I" d# W- [# i4 P" E/ g第13章 ts-axios 部署发布【向社区分享你的项目】
- _7 |0 f6 Y5 ?( `! s! p# ?) \讲解 ts-axios 库的部署和发布,使用 Rollup 编写部署构建脚本,使用 semantic-release 管理版本和发布。
4 P) O7 X% }9 ~( C; o5 K1 ?% e13-1 ts-axios 编译与发布 需求分析 + 编译和打包6 o( d4 d/ {+ v) @
13-2 ts-axios 编译与发布 自动化部署
/ |4 q& W: e( Z8 z$ E% X13-3 ts-axios 编译与发布 运行部署脚本
/ ]2 M: [7 `: \13-4 ts-axios 库 在 TS 和 JS 项目中引用" ?! Q! Q) F" K
1 |% N5 ?- N( ~7 @5 z9 q
第14章 课程总结【知识梳理,巩固加深】
. K6 Q# v) M5 k; u0 V本次课程的整体回顾,总结学习的内容。
- Y l8 R+ R a2 Y14-1 课程总结 与回顾8 ^1 }+ Z+ H' n5 O8 {/ z
% s* s9 O7 r2 J$ K w
) \$ H8 C# L" D! v9 A〖下载地址〗
$ d3 K7 X% \4 s. b; D- U" B. T" W) n5 U- s; z
! v* ` o- Z0 E
- K" O# j; y6 d w, n& }. \9 | |
|