0 D) W$ C5 j3 J$ r" c
( S& U% N/ s: h8 E" r〖课程介绍〗
0 v+ Q7 V' t' P TypeScript是前端的发展趋势,但是很多同学却缺少实战经验,而且市面上缺少TypeScript 的实战课程。本课程首先讲解TypeScript的一些基础语法和常见用法,接着带同学们使用TypeScript一步步去实现一个完整的axios JS库,然后进行完整的单元测试,最后把开发的JS 库打包并发布到npm上。通过课程学习完全掌握axios的实现原理,修炼原生JavaScript内功,提升个人职场竞争力。9 C; A; B9 |' b6 Q* ^, I% @2 W* c" k- @+ l( j3 y. ^: p% n
, y4 x" E' \$ r8 I1 k3 o4 o4 E' v( N4 H: _9 R
〖课程目录〗
4 u6 E5 n5 N/ l7 S; N第1章 课程介绍【悄悄告诉你,一定要看,有福利】
: \: T* W. N8 u* c介绍本课程的主要内容,通过本次课程可以学到的知识点,学习方法介绍。
! X" C% x- g% p7 A& f1-1 课程介绍 试看
& [3 }6 Z) M: Q8 ?* A
8 j: X' P9 |5 I第2章 初识 Typescript【初次体验】3 \# P+ i. y: f5 G+ ~: K
教会同学们安装 Typescript 编译器,以及通过编写第一个 TypeScript 程序认识 TypeScript。
) G; {& ^& t5 G2-1 安装 TypeScript
# v- V1 a( q( k6 A6 f3 ^; l2-2 编写第一个 TypeScript 程序 试看
; y6 @9 b3 ?- Y
# t0 ]/ ?" {+ m0 G( V% Y第3章 Typescript 类型系统【必备基础,牢固掌握】- N v s1 v/ G4 E& u
参考官方文档,主讲 TypeScript 的一些重要的语法和概念,并配合一些具体的代码示例辅助说明,帮助同学们了解 TypeScript 的常见用法,为之后的实战打下基础。- q, d) B+ [. ?$ g; }; S
3-1 基础类型(上)
. \; y0 w+ F3 u- d/ {+ W3-2 基础类型(下)
! O: }" H( f [7 z3-3 基础类型(注意版本报错问题)
# W( Z8 q% L, k9 s( \3 Q3-4 变量声明 - var 声明! p# u: f `3 w, o# }( W' v
3-5 变量声明 - let 声明& Y4 t0 i( s( ^7 F% L/ U8 |& h S
3-6 变量声明 - const 声明
% {7 X. P; [3 W3-7 变量声明 - 解构( n8 d) \# g! j5 @+ s8 z \% K( M
3-8 变量声明 - 展开+ O% g, Z9 j! F8 F
3-9 接口 - 接口初探& C$ B( t9 D* x
3-10 接口 - 可选属性+只读属性9 f3 o4 B. j# n7 W- d3 O) w7 e7 S
3-11 接口 - 额外属性检查+函数类型+可索引的类型, b: C5 o- g- s. H% e
3-12 接口 -类类型+继承接口+混合类型+接口继承类
$ D( A; a9 t( a& `3-13 类 - 基本示例+继承* D; t* C8 N b# C/ E
3-14 类 - 公共,私有与受保护修饰符+ readonly 修饰符: C" Z: e) W+ n: L
3-15 类 - 存取器+ 静态属性
; c' J, M: J, j! k6 p3-16 类 - 抽象类+ 高级技巧3 Z( ]+ }$ S5 f9 y
3-17 函数 - 基本示例+ 函数类型
5 Y. {: `: w; |& n/ _3-18 函数 - 可选参数和默认参数) ? r" ^5 @7 T8 f. B$ \
3-19 函数 - this+ 重载
0 Y* ^% Q* J2 j3-20 泛型 - 基本示例+ 使用泛型变量+泛型类型
. _" y! O1 H' ^4 J# M3-21 泛型 - 泛型类+泛型约束
7 W7 w8 b8 o! K3 E3-22 类型推断 - 基础+ 最佳通用类型+ 上下文类型7 b* ^, `4 R- X
3-23 高级类型 - 交叉类型
0 g; U, N$ }) D$ L7 \ }" X5 t3-24 高级类型 - 联合类型
, x. q+ r& d' K$ B# q, B3-25 高级类型 - 类型保护% x9 k+ \$ g1 l
3-26 高级类型 - 可以为 null 的类型+ 字符串字面量类型
9 K) [' L# v0 d/ o
* G8 |" e- \2 ?$ [0 J+ }5 J2 p2 H第4章 ts-axios 项目构建【工欲善其事必先利其器】
) C: Q* g' _) ~: _; ~ |1 X分析 axios 项目的重构需求,使用 typescrpit-library-starter 脚手架初始化项目,并编写基础请求的代码,搭建整个 demo 的架构方案。+ j. f- F# w- A* n0 B' [& p2 ^ w
4-1 需求分析
; a! E5 G! e- ^+ N0 Z* A+ r4-2 初始化项目 - 创建代码仓库
- m5 O3 ~1 o( _+ C4 }. f9 K4-3 初始化项目 - TypeScript library starter
( K+ N) c' f8 N% W2 b4-4 初始化项目 - 关联远程分支
8 E! D0 r5 K' E' k6 Q4-5 编写基础请求代码 - 创建入口文件2 {' B$ `- p ?4 o+ [, d2 Q1 @# w
4-6 编写基础请求代码 - 利用 XMLHttpRequest 发送请求$ {" b+ E9 s, ]) N! C
4-7 编写基础请求代码 - demo 编写
0 ]2 k U3 h; ], C
) |- @5 r" v+ m( j9 ?第5章 ts-axios 基础功能实现【核心流程】
- P! N$ J1 u0 _3 w实现 axios 的基础功能,包括对请求 url、data、header 以及响应 data、header 的处理。
9 }7 D8 y! B$ k! j5-1 处理请求 url 参数 - 需求分析
8 y" x V- n2 L) L5-2 处理请求 url 参数 - buildURL 函数实现0 Z# S1 ^9 f$ M R( Y" A8 [
5-3 处理请求 url 参数 - 实现 url 参数处理逻辑8 j0 u/ B; Q+ Y# d4 ?1 i. K
5-4 处理请求 url 参数 - demo 编写0 p0 h8 U$ v+ m! r
5-5 处理请求 body 数据 - 需求分析+ 实现 试看
5 i' M, r; [" d. V1 j" C+ C5-6 处理请求 header - 需求分析
9 u4 f! c- B# a8 ~( ?/ v9 w5-7 处理请求 header - processHeaders 函数实现
8 S& M. |' [ Z: C3 z8 x: x: I5-8 处理请求 header - 实现请求 header 处理逻辑
$ h; I# z+ _8 K0 l( w! ?' {4 E& M- n) V5-9 处理请求 header - demo 编写
1 ?/ M" V) y: A5-10 获取响应数据 - 需求分析+实现
% J% F) ]3 z3 u$ q! t8 {# G7 Y5-11 处理响应 header - 需求分析+ parseHeaders 函数实现及应用/ x/ ]0 U e# w* a, U
5-12 处理响应 data - 需求分析+ transformResponse 函数实现及应用# |0 C l# M) h( c6 V6 D/ Z
$ @' i9 M+ |, _$ @0 q第6章 ts-axios 异常情况处理【不可忽视的边界条件】
, l/ S4 p9 l- U: Y) o" Y0 D Q# z( L处理 axios 请求的一些异常情况,包括网络错误、请求超时,构造一个信息增强错误处理类。. f6 o* }9 d% }" k$ [; `4 z' Y
6-1 错误处理 - 需求分析
1 P, p+ o$ |2 Z3 Q6 a0 @$ i- r6-2 错误处理- 网络错误+超时错误+非200状态码+demo
: _& ?2 l1 e; O- H5 Q) T- {; W6-3 错误信息增强 - 需求分析8 e6 V6 g K6 O8 o# |
6-4 错误信息增强 - 创建 AxiosError 类
. [3 C9 G1 b& V. Z0 E( _7 B6 I* x6-5 错误信息增强 - createError 方法应用+ 导出类型定义9 c/ i0 n. f! t2 d
0 ] Q3 S. \3 p0 H0 O- U
第7章 ts-axios 接口扩展【工厂模式的合理运用,设计思想的转变】& [8 Y& }1 a/ z& t6 R7 Q
把 axios 从普通函数实现到通过工厂模式类的设计转变,并扩展更多调用接口,把 axios 变成了一个 混合对象,以及让响应数据支持泛型。6 ^8 B7 E8 T$ z8 c$ }- t. k/ q
7-1 -1 扩展接口 - 需求分析
& M5 A e# x' \ J. t. H, Q" }9 l7-2 -2 扩展接口 -接口类型定义+ 创建 Axios 类
4 | c0 q4 H- F5 W7-3 -3 扩展接口 - 混合对象实现+ demo 编写( R# p5 I5 L- m
7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写! ?: b6 C; Y, y z' a( Q8 m
7-5 -1 响应数据支持泛型- 需求分析+ 接口添加泛型参数+ demo 编写. O' M; f3 o6 Y$ ]2 H
2 C$ o7 S \& l, O N# ~: W
第8章 ts-axios 拦截器实现【巧妙运用 Promise 链式调用】
/ f9 h4 U: q( B5 W实现 axios 的拦截器功能,对整个实现做了详细的设计,最后实现拦截器管理类以及链式调用逻辑。
) J9 ^6 L% t( p8-1 -1 拦截器的设计与实现 - 需求分析+ 整体设计
: h! B1 A/ q- ]( n8-2 -2 拦截器的设计与实现 - 拦截器管理类实现
9 d, y( l# }# q- b0 I8-3 -3 拦截器的设计与实现 - 链式调用实现
# l* Z: [+ m: l! x& l1 X8-4 -4 拦截器的设计与实现 - demo 编写1 p6 ^2 W$ w& {# L# [7 R0 ^
0 d/ H: b0 C4 h F. N) `
第9章 ts-axios 配置化实现【巧妙运用策略模式实现配置合并】3 x+ Q$ I" [) m$ k( D- X. J. O. N; X
让 axios 支持一些默认配置,实现了配置的合并,根据不同的属性采用不同的合并策略,并且扩展了 axios.create 方法扩展默认配置,生成新的实例。
- }: Q& V* ^# G8 m [- w2 e1 W9-1 合并配置的设计与实现 - 需求分析 + 默认配置
2 S' ~( {' t; G, n$ Y( U+ O/ n8 Q9-2 合并配置的设计与实现 - 配置合并策略(上)2 h5 U% _1 U' A$ |
9-3 合并配置的设计与实现 - 配置合并策略(下)4 S }9 T4 L$ K
9-4 合并配置的设计与实现 - flatten headers + demo 编写
) ~+ c: f' C6 G. O' H9-5 请求和响应配置化- 需求分析+ 修改默认配置
" R. N6 M4 L [9-6 请求和响应配置化- transform 逻辑重构 + demo 编写0 h2 p3 F+ y1 W+ S6 M
9-7 扩展 axios.create 静态接口 - 需求分析+ 静态方法扩展+ demo 实现
0 ^3 V8 r. h9 Y0 x( A
+ r. n: {2 a }3 Q9 K6 F% C7 f8 T第10章 ts-axios 取消功能实现【巧妙运用 Promise 实现异步分离】
. w# C6 w6 j+ d% {5 R实现 axios 的取消功能,包括对取消接口的设计,CancelToken 类的设计与实现。
$ G& g( C1 _( a# x4 ]' O8 I6 _10-1 -1 取消功能的设计和实现 - 需求分析+ 异步分离的设计方案
" b* X/ p7 b) K; V* K& L7 c10-2 -2 取消功能的设计和实现 - CancelToken 类实现+ 扩展静态接口, C0 S. |. l: U+ e
10-3 -3 取消功能的设计和实现 - Cancel 类的实现及 axios 的扩展+ 额外逻辑实现
4 e+ c, e8 G5 y+ |) }! Z10-4 -4 取消功能的设计和实现 - demo 编写
6 r) }6 x6 a5 O( X) |* j3 S6 x$ G J5 O" J. r- M+ N$ ~+ F: u n* Y
第11章 ts-axios 更多功能实现【锦上添花】, N3 T% w" S1 L- Y
实现 axios 更多的功能,包括 XSRF 防御、上传、http 认证授权、withCredentials、自定义参数序列化、自定义合法状态码、自定义合法状态码等,百分百实现官方 axio 在浏览器端的功能。( x% g% o, T/ h) r7 j o
11-1 withCredentials 需求分析&代码实现& demo 编写5 v1 g6 m: m) T, d6 e$ c3 W4 U4 q7 h
11-2 xsrf 防御 - 需求分析" z8 z3 C4 \" r. l! W* c
11-3 xsrf 防御 - 代码编写- H7 E+ V3 t9 ^' t; G, E
11-4 xsrf 防御 - demo 编写
4 z, a9 l0 }. z( f5 O& A/ q11-5 上传和下载的进度监控 需求分析+ 代码实现& q, A. X5 G8 [# R* X9 U6 Q
11-6 上传和下载的进度监控 demo 编写
4 _6 x: Z2 G3 G2 R: L; x0 ^" O& a' `11-7 HTTP 授权 需求分析+ 代码实现 + demo 编写
1 S M/ K( D/ B6 @3 \, B3 c5 }3 p4 w11-8 自定义合法状态码 需求分析+ 代码编写 + demo编写- x) P; P2 X3 [0 j
11-9 自定义参数序列化 需求分析+ 代码编写 + demo编写: {, ^5 r- Y; M# k$ Q
11-10 baseURL 需求分析+ 代码编写 + demo编写# G. D& R9 A1 \6 D9 _
11-11 静态方法扩展 需求分析+ 代码编写 + demo编写( K% ?! D- G$ \- ~8 |+ d$ U
3 Z, U1 Y* N2 S6 r' y9 j2 ^
第12章 ts-axios 单元测试【保障代码高质量】
3 ]; m, v* j# \8 R先介绍单元测试,再讲解测试环境搭建,最后完整的实现整个 axios 库的单元测试,保证测试覆盖率达到 99%
) b3 S. @# b9 t12-1 前言' s$ j; `6 d8 X* x- i
12-2 Jest 的安装和配置 Jest 安装/ T% V: l7 u. o. f8 z" o0 S3 b1 n
12-3 辅助模块单元测试 准备工作
5 s$ d* ?9 m+ v. r$ ~4 g12-4 辅助模块单元测试 util 模块测试-: t# F2 { `5 \+ L- `. c3 W
12-5 辅助模块单元测试 cookie 模块测试 + data 模块测试 + error 模块测试
; p8 u$ d5 g) A2 `3 h12-6 辅助模块单元测试 headers 模块测试
! B! A: g7 X! X; Q12-7 辅助模块单元测试 url 模块测试& H0 y- V/ f t; W. Q6 l
12-8 请求模块单元测试 jasmine-ajax + 测试代码编写- K: p% j* @. T7 ?# L+ k
12-9 header 模块单元测试 测试代码编写& k8 t' s; R( P/ L: l+ N* V' K
12-10 Axios 实例模块单元测试 测试代码编写
6 v! D" f* U( l' f, a12-11 拦截器模块单元测试 测试代码编写9 H2 R& O) Y2 f* v( z3 z' J3 l
12-12 mergeConfig 模块单元测试 测试代码编写
: d9 g8 r" }4 Z5 Z12-13 请求取消模块单元测试 Cancel 类单元测试 + CancelToken 类单元测试 + Cancel 业务逻辑单元测试& c: u5 |1 C" _
12-14 剩余模块单元测试 defaults 模块单元测试# [) S7 P! b) o8 r' b! `
12-15 剩余模块单元测试 transform 模块单元测试 + xsrf 模块单元测试7 i' _0 R b5 E* r. \4 y! J
12-16 剩余模块单元测试 上传下载+HTTP 授权+ 静态方法模块单元测试. u W Z8 k) X) ~0 c
12-17 剩余模块单元测试 补充未覆盖的代码测试9 B0 Q3 `. |: c& v1 o# x
/ V* T5 ~3 H: w! Y
第13章 ts-axios 部署发布【向社区分享你的项目】4 i. l4 M4 c( V* n. K/ E, E
讲解 ts-axios 库的部署和发布,使用 Rollup 编写部署构建脚本,使用 semantic-release 管理版本和发布。0 t, X, X% r5 I& S8 C) W9 x
13-1 ts-axios 编译与发布 需求分析 + 编译和打包/ a7 i2 ~, O6 k% C$ n8 t1 A
13-2 ts-axios 编译与发布 自动化部署
5 ~0 b6 D, ^, D13-3 ts-axios 编译与发布 运行部署脚本
, f4 `. E7 _- ]5 J5 E8 T13-4 ts-axios 库 在 TS 和 JS 项目中引用3 G+ u3 R4 c$ [7 D
2 `+ I5 R7 Z2 Z, A
第14章 课程总结【知识梳理,巩固加深】
& D4 R8 v, N( V* P本次课程的整体回顾,总结学习的内容。. ~; L% z; m) k
14-1 课程总结 与回顾
6 p" J- Z/ W: B$ H2 v, Y2 F
( v* Y& ^4 t8 Q: f' N7 x( W. N; g9 i7 C; o5 V2 `
〖下载地址〗1 H: x6 d# E% z. B7 v% \# T4 m& g
" {' Q/ F# \5 `+ S- m4 ]
6 j! u+ \2 a1 T+ W' g) {. }' h- m
+ ]1 C3 j+ c6 e+ k3 q [' I |
|