8 W: d/ m0 R" n$ V7 s
: u5 Q1 e4 z! d: C- R! r' G+ Q
〖课程介绍〗" m3 i$ s2 p- G5 Z, g. m6 }
TypeScript是前端的发展趋势,但是很多同学却缺少实战经验,而且市面上缺少TypeScript 的实战课程。本课程首先讲解TypeScript的一些基础语法和常见用法,接着带同学们使用TypeScript一步步去实现一个完整的axios JS库,然后进行完整的单元测试,最后把开发的JS 库打包并发布到npm上。通过课程学习完全掌握axios的实现原理,修炼原生JavaScript内功,提升个人职场竞争力。9 C; A; B9 |' b6 Q* ^, I% @+ B0 K" g6 C% Y' x
, y4 x" E' \$ r8 I1 k3 o* l$ \3 r; w: H ]$ U- m
〖课程目录〗
; m1 f5 E: [6 B: i) P' p% Z3 s+ `第1章 课程介绍【悄悄告诉你,一定要看,有福利】
z' o6 Y- `7 z/ T介绍本课程的主要内容,通过本次课程可以学到的知识点,学习方法介绍。
/ K/ u9 X% O9 P; v1-1 课程介绍 试看* N- D% i. c% |8 D3 L" j% {# D7 j
: b) M: R2 m/ j8 j+ e q7 |第2章 初识 Typescript【初次体验】
- e# s9 {$ d; T教会同学们安装 Typescript 编译器,以及通过编写第一个 TypeScript 程序认识 TypeScript。
1 m7 o1 g: w+ z' f1 h2-1 安装 TypeScript
9 |+ O l- o" {9 |; A3 K2-2 编写第一个 TypeScript 程序 试看
8 A/ I7 v, k+ g( z! {4 S9 X; ]: M9 l7 y# N' L% T9 J
第3章 Typescript 类型系统【必备基础,牢固掌握】
' C4 D- e* y q, T% j7 o$ h参考官方文档,主讲 TypeScript 的一些重要的语法和概念,并配合一些具体的代码示例辅助说明,帮助同学们了解 TypeScript 的常见用法,为之后的实战打下基础。
/ J& ]- I" w* |+ f& u1 P& C' R3-1 基础类型(上)) @0 z: g9 {% y+ ~! ~" `
3-2 基础类型(下). e0 `1 B9 {% S- {0 h3 @6 U2 s. V
3-3 基础类型(注意版本报错问题)
+ l8 u7 O6 C( F$ C, R3-4 变量声明 - var 声明
- p& V6 S$ K5 g1 c" e% H/ @! e3-5 变量声明 - let 声明! D9 F& d+ q" C
3-6 变量声明 - const 声明0 F& L7 ] R1 X# c! a) Q3 ~5 L
3-7 变量声明 - 解构3 n' i' \# y' c8 P/ t
3-8 变量声明 - 展开
" T) s3 g! k8 N: [+ a3-9 接口 - 接口初探
9 s' @ O4 ?5 R& |3-10 接口 - 可选属性+只读属性/ l& |- H0 L1 n9 G; I
3-11 接口 - 额外属性检查+函数类型+可索引的类型 k$ u( |& n L6 G+ J) H7 |' ?/ V
3-12 接口 -类类型+继承接口+混合类型+接口继承类
% Y/ M7 ?; \, E9 q+ P0 v3-13 类 - 基本示例+继承
# q5 x. V# w8 T3-14 类 - 公共,私有与受保护修饰符+ readonly 修饰符& O; V7 E+ b- p, M3 ~& z6 C" e2 T+ i
3-15 类 - 存取器+ 静态属性
3 t2 U' e9 j6 p$ g9 k+ t3-16 类 - 抽象类+ 高级技巧
! z4 O8 T% M& F/ {* T* r4 K( ?3-17 函数 - 基本示例+ 函数类型4 d3 S. T ?6 L' z- ^3 z' b
3-18 函数 - 可选参数和默认参数/ L0 l4 |& Z, M/ u7 W' [# B1 Y( }" s
3-19 函数 - this+ 重载( {8 y% B" \6 Z, S: c. A3 U
3-20 泛型 - 基本示例+ 使用泛型变量+泛型类型
; Y" b9 Y4 \3 b" ?! t3-21 泛型 - 泛型类+泛型约束( Q0 j- {+ w7 p- c M! p& C8 T
3-22 类型推断 - 基础+ 最佳通用类型+ 上下文类型
' b) e& N8 Y/ \& \4 T3-23 高级类型 - 交叉类型
3 w& k9 |5 }; d# L I" S3 ?* r; }! ]5 u" |3-24 高级类型 - 联合类型
1 q: j2 v& G7 E2 |) A3-25 高级类型 - 类型保护
5 j% l& N& Y, V" b/ N( _2 f9 a u" I, ?3-26 高级类型 - 可以为 null 的类型+ 字符串字面量类型
( F/ H8 O; A; Z# p
; J7 w; H* ]4 u9 I第4章 ts-axios 项目构建【工欲善其事必先利其器】
* U: d& i' w+ w0 i! [5 @$ t+ N' w1 g分析 axios 项目的重构需求,使用 typescrpit-library-starter 脚手架初始化项目,并编写基础请求的代码,搭建整个 demo 的架构方案。 o+ j7 i. F8 g% n6 j( `
4-1 需求分析
4 z7 t( G' L0 X6 d/ F& a2 {3 Z4-2 初始化项目 - 创建代码仓库' K. K8 |0 v# d0 L; f
4-3 初始化项目 - TypeScript library starter! d; ^; v, }0 |7 T. Z
4-4 初始化项目 - 关联远程分支
# _! D6 I. G: {/ w% F4-5 编写基础请求代码 - 创建入口文件$ q3 P4 R3 j0 e0 j
4-6 编写基础请求代码 - 利用 XMLHttpRequest 发送请求4 ~# W6 m$ K( [ J6 L
4-7 编写基础请求代码 - demo 编写# t* L, R5 b* |. [$ r* P
5 k$ U8 \- y1 b- Q- i; d# o
第5章 ts-axios 基础功能实现【核心流程】5 e+ ~8 @/ g3 G; r
实现 axios 的基础功能,包括对请求 url、data、header 以及响应 data、header 的处理。* k& N1 ] c/ r
5-1 处理请求 url 参数 - 需求分析
: Y2 S! J3 I I6 {8 l' Q* x& a5-2 处理请求 url 参数 - buildURL 函数实现
7 r4 q( T; D% A2 u5-3 处理请求 url 参数 - 实现 url 参数处理逻辑
) [" _6 a S/ M/ A+ W, n v- o0 }5-4 处理请求 url 参数 - demo 编写
7 S% _0 g8 }, N* g; h" P' M( J5-5 处理请求 body 数据 - 需求分析+ 实现 试看3 Y7 x" O( x: s
5-6 处理请求 header - 需求分析2 r9 s% B p3 a
5-7 处理请求 header - processHeaders 函数实现; o u8 g( z. V7 R) ^" Z
5-8 处理请求 header - 实现请求 header 处理逻辑
6 E7 J$ C$ w5 c* `5-9 处理请求 header - demo 编写0 S1 C9 _, K* }: O* F3 f
5-10 获取响应数据 - 需求分析+实现4 q2 t8 N0 [* L2 w/ |4 u
5-11 处理响应 header - 需求分析+ parseHeaders 函数实现及应用/ y. R& D3 i; x
5-12 处理响应 data - 需求分析+ transformResponse 函数实现及应用
# q4 q1 W4 W' P; ~- j% O, G( a! Y" z4 o8 c+ X7 }; n
第6章 ts-axios 异常情况处理【不可忽视的边界条件】# b9 v! T7 q5 |. Z+ h6 ^
处理 axios 请求的一些异常情况,包括网络错误、请求超时,构造一个信息增强错误处理类。7 N; {4 A2 Y, Z' V9 W( m! G
6-1 错误处理 - 需求分析
X6 e; `: R: g/ Z3 J6-2 错误处理- 网络错误+超时错误+非200状态码+demo# O. V6 V5 H; w) C' y
6-3 错误信息增强 - 需求分析
: i: Z# Y! D, n4 l6-4 错误信息增强 - 创建 AxiosError 类
+ M8 q$ \/ j1 X v. S" \6-5 错误信息增强 - createError 方法应用+ 导出类型定义" |" C# }9 ]! S# J% J0 p
! ^# S0 u+ x, |8 b6 |+ P第7章 ts-axios 接口扩展【工厂模式的合理运用,设计思想的转变】
/ x( b c7 c! y/ S4 E把 axios 从普通函数实现到通过工厂模式类的设计转变,并扩展更多调用接口,把 axios 变成了一个 混合对象,以及让响应数据支持泛型。1 p8 J h8 @4 e$ ]; Q! {
7-1 -1 扩展接口 - 需求分析
; ^* X. M* E4 q$ N0 |$ k f& L: x6 j7-2 -2 扩展接口 -接口类型定义+ 创建 Axios 类
4 G2 F! ?) p7 g' r7-3 -3 扩展接口 - 混合对象实现+ demo 编写3 ~- x) o! @/ F. v: O5 N0 q
7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写! n4 y8 v2 i. d
7-5 -1 响应数据支持泛型- 需求分析+ 接口添加泛型参数+ demo 编写4 [( ~, W( {3 ^5 Y6 ?, U
+ U9 F# |! Q) a第8章 ts-axios 拦截器实现【巧妙运用 Promise 链式调用】7 c% C! z) m1 {
实现 axios 的拦截器功能,对整个实现做了详细的设计,最后实现拦截器管理类以及链式调用逻辑。, A, b1 @) e& ]- G( j
8-1 -1 拦截器的设计与实现 - 需求分析+ 整体设计
% y8 V2 l, H) w5 X' F5 P8-2 -2 拦截器的设计与实现 - 拦截器管理类实现
5 q o: k" S$ m8-3 -3 拦截器的设计与实现 - 链式调用实现
2 |3 v, M/ b( N$ J1 }) O$ w8-4 -4 拦截器的设计与实现 - demo 编写+ Z# j8 x3 F' F1 g
/ b6 s; L$ _! i% @2 w, x第9章 ts-axios 配置化实现【巧妙运用策略模式实现配置合并】$ U/ ?) e4 } U* g0 B/ I L
让 axios 支持一些默认配置,实现了配置的合并,根据不同的属性采用不同的合并策略,并且扩展了 axios.create 方法扩展默认配置,生成新的实例。5 t/ b$ j% w' q$ ?+ ^6 ]/ C" V' j; V7 V! c6 W
9-1 合并配置的设计与实现 - 需求分析 + 默认配置5 p2 A0 ]% ~0 _/ n# D k) ^
9-2 合并配置的设计与实现 - 配置合并策略(上): k/ u& ^! d. Z/ Q
9-3 合并配置的设计与实现 - 配置合并策略(下)
4 y1 g w0 w. M5 N* r& E! I% n9-4 合并配置的设计与实现 - flatten headers + demo 编写
' b6 S3 W* K; ?7 N" k9-5 请求和响应配置化- 需求分析+ 修改默认配置
! W* w: B: a& d, T! R9-6 请求和响应配置化- transform 逻辑重构 + demo 编写
" m6 V7 W/ n% c0 Z1 K9-7 扩展 axios.create 静态接口 - 需求分析+ 静态方法扩展+ demo 实现
/ M2 }/ {0 v# \" [4 t* b( ]
V/ N9 L" ?/ j' D/ u第10章 ts-axios 取消功能实现【巧妙运用 Promise 实现异步分离】- b$ W2 }6 D+ x* Z6 t
实现 axios 的取消功能,包括对取消接口的设计,CancelToken 类的设计与实现。
! [9 F0 W2 k" N2 ^! K8 b/ U10-1 -1 取消功能的设计和实现 - 需求分析+ 异步分离的设计方案
+ I& t1 p, V7 ]5 @. Y10-2 -2 取消功能的设计和实现 - CancelToken 类实现+ 扩展静态接口5 e# S$ Z* N n
10-3 -3 取消功能的设计和实现 - Cancel 类的实现及 axios 的扩展+ 额外逻辑实现/ M" E3 H- C9 Z
10-4 -4 取消功能的设计和实现 - demo 编写! x8 j m* Y U
/ d& B4 c1 ]: r' b: P
第11章 ts-axios 更多功能实现【锦上添花】9 y( E- E# Q# \: R8 D
实现 axios 更多的功能,包括 XSRF 防御、上传、http 认证授权、withCredentials、自定义参数序列化、自定义合法状态码、自定义合法状态码等,百分百实现官方 axio 在浏览器端的功能。
7 R' w% a6 W& l11-1 withCredentials 需求分析&代码实现& demo 编写
. ~# Q; ]3 `! d% r11-2 xsrf 防御 - 需求分析
( u; a3 w$ h: F+ ~+ C/ Y* W% d11-3 xsrf 防御 - 代码编写
C& h! r! j8 v! v9 B$ {2 v11-4 xsrf 防御 - demo 编写
8 n0 Y* h! s/ C, o5 P& Y11-5 上传和下载的进度监控 需求分析+ 代码实现/ e l' p8 z8 L
11-6 上传和下载的进度监控 demo 编写
4 W8 G7 H) _- u1 v6 L8 p11-7 HTTP 授权 需求分析+ 代码实现 + demo 编写' B4 m! c: ^4 s$ k2 d" Q' }- L' w6 J0 W
11-8 自定义合法状态码 需求分析+ 代码编写 + demo编写5 m( a8 p# k: N+ d% V) ^4 D j
11-9 自定义参数序列化 需求分析+ 代码编写 + demo编写( P( J9 f* d) @# s7 w" {
11-10 baseURL 需求分析+ 代码编写 + demo编写
- `8 ~5 h/ k+ c% s& L0 n4 g* P11-11 静态方法扩展 需求分析+ 代码编写 + demo编写
. C6 c7 j" {3 S( D1 v' C- b$ R K2 ]4 q2 K; z1 |& Y# p
第12章 ts-axios 单元测试【保障代码高质量】
' c* n1 E9 d: w, W3 S0 V先介绍单元测试,再讲解测试环境搭建,最后完整的实现整个 axios 库的单元测试,保证测试覆盖率达到 99%
) W T+ K1 g4 c$ R5 m {" n' I; v8 n12-1 前言8 J8 Y0 M: D4 [) B( b9 ?4 h: ^
12-2 Jest 的安装和配置 Jest 安装- Z2 @. `5 ?% L8 `3 ^; {8 i: H
12-3 辅助模块单元测试 准备工作8 a- L5 B, R8 P# k# n' x
12-4 辅助模块单元测试 util 模块测试-( n* M1 s5 W! S2 n5 U# u* d
12-5 辅助模块单元测试 cookie 模块测试 + data 模块测试 + error 模块测试4 S/ z+ b* O6 W
12-6 辅助模块单元测试 headers 模块测试
# J& [0 Y A8 S& I6 U12-7 辅助模块单元测试 url 模块测试
+ G# J6 {& W8 m3 `3 [ |/ b12-8 请求模块单元测试 jasmine-ajax + 测试代码编写# V2 j. r. y, Z2 |9 |" L3 C
12-9 header 模块单元测试 测试代码编写& \( N: \! [' d1 ], h& I4 `! J- W
12-10 Axios 实例模块单元测试 测试代码编写
/ ?3 O3 }% e) i7 X3 `) Z: o12-11 拦截器模块单元测试 测试代码编写! W F/ P: ]/ v9 P3 Z
12-12 mergeConfig 模块单元测试 测试代码编写
4 T3 J5 A# D) R5 r x+ n12-13 请求取消模块单元测试 Cancel 类单元测试 + CancelToken 类单元测试 + Cancel 业务逻辑单元测试. y& }( }7 E+ n; c& \
12-14 剩余模块单元测试 defaults 模块单元测试; X- X8 w: v: i0 s# c- u$ \0 _
12-15 剩余模块单元测试 transform 模块单元测试 + xsrf 模块单元测试8 D# v; t& R- p, ?; e, J# d
12-16 剩余模块单元测试 上传下载+HTTP 授权+ 静态方法模块单元测试8 t7 \2 Y, ]0 k* z
12-17 剩余模块单元测试 补充未覆盖的代码测试
- _& u- U" q/ t ^! c' Q: L: A" A8 j$ ?: k4 g9 v% M
第13章 ts-axios 部署发布【向社区分享你的项目】' E1 t# \9 u. [) t X
讲解 ts-axios 库的部署和发布,使用 Rollup 编写部署构建脚本,使用 semantic-release 管理版本和发布。" L' T$ {, o6 l, v7 Q; k( x1 @
13-1 ts-axios 编译与发布 需求分析 + 编译和打包
3 O& W Y4 [/ c$ W/ o6 w13-2 ts-axios 编译与发布 自动化部署" Y# ~- Y/ L" w S
13-3 ts-axios 编译与发布 运行部署脚本' \7 O0 ]8 N! x5 M( d! @1 ~
13-4 ts-axios 库 在 TS 和 JS 项目中引用
& D: Q# x( \/ z# G; [9 {' P# Z- S) g7 R
第14章 课程总结【知识梳理,巩固加深】7 i9 Q2 \' E% z$ U. ]
本次课程的整体回顾,总结学习的内容。( Y% T7 b& z! B) m, P
14-1 课程总结 与回顾9 }/ z: m2 v( }3 m# D" @, G
# b# n6 Z2 Q3 ^: l1 k$ u
/ ~, r4 p! M j4 ]4 ~' ~
〖下载地址〗" y2 G7 {7 \7 U2 x; `6 [2 G
& Z, s. |+ o1 q5 |& Q2 y0 d
, z% `, C( M5 M( y& ^: u1 I# H v. |) f* S& Q. s0 O
|
|