4 _( M: ~1 R' F7 x$ `
' Q+ ?# n; |( e' J6 m& D
〖课程介绍〗
- b1 L; O2 A3 d8 F2 E [+ r TypeScript是前端的发展趋势,但是很多同学却缺少实战经验,而且市面上缺少TypeScript 的实战课程。本课程首先讲解TypeScript的一些基础语法和常见用法,接着带同学们使用TypeScript一步步去实现一个完整的axios JS库,然后进行完整的单元测试,最后把开发的JS 库打包并发布到npm上。通过课程学习完全掌握axios的实现原理,修炼原生JavaScript内功,提升个人职场竞争力。9 C; A; B9 |' b6 Q* ^, I% @
3 v0 J2 O7 E, C6 d$ \6 U, y4 x" E' \$ r8 I1 k3 o
3 z, O3 i- d; ]9 \; a9 r* Q〖课程目录〗
% x+ e# k8 y" m' \: {& w第1章 课程介绍【悄悄告诉你,一定要看,有福利】
- {- q, e8 n% C' L介绍本课程的主要内容,通过本次课程可以学到的知识点,学习方法介绍。 \+ t v( t( L. _2 a8 M
1-1 课程介绍 试看
8 J8 r: ^! T' l' H0 ]3 T3 b1 q$ q, J2 ^: l* _
第2章 初识 Typescript【初次体验】
2 m8 E& L9 c( h& O- E: L0 C" K教会同学们安装 Typescript 编译器,以及通过编写第一个 TypeScript 程序认识 TypeScript。" y0 T; V; s7 x
2-1 安装 TypeScript7 a% H& O! ^: F$ j7 [
2-2 编写第一个 TypeScript 程序 试看& |% s3 j" T1 O) H! T, M, t) d
+ C1 G$ |' N* z3 e3 s第3章 Typescript 类型系统【必备基础,牢固掌握】
0 d# I" ?2 P4 G: A4 E参考官方文档,主讲 TypeScript 的一些重要的语法和概念,并配合一些具体的代码示例辅助说明,帮助同学们了解 TypeScript 的常见用法,为之后的实战打下基础。# E, }; v/ h3 q
3-1 基础类型(上)
8 L( Y4 T0 f0 d$ b3-2 基础类型(下)
8 | o1 F$ H6 Q$ |' Z& v0 U' l- S7 n5 j3-3 基础类型(注意版本报错问题)
1 ?2 _5 Z: g* A( W3-4 变量声明 - var 声明
# X6 [6 ?6 Z/ F3-5 变量声明 - let 声明$ f8 i% l" K1 m0 |8 {9 w3 z
3-6 变量声明 - const 声明
4 R+ p, ]9 J7 X9 Y. ^# Y, w- u' ?3-7 变量声明 - 解构3 w3 U7 }8 Q+ R$ ~/ @
3-8 变量声明 - 展开
+ G9 ^9 n2 ]8 s: q) Z1 @3-9 接口 - 接口初探' W% [4 ?( c! G; S3 X6 [
3-10 接口 - 可选属性+只读属性; ^- c/ }( X$ n$ o$ d) w$ ~
3-11 接口 - 额外属性检查+函数类型+可索引的类型
3 z1 p7 ]& r/ M( |3-12 接口 -类类型+继承接口+混合类型+接口继承类
% g: w+ R6 l. g f# C7 T5 {( o3-13 类 - 基本示例+继承* K: m( f! B; ` ]0 k+ O8 ~
3-14 类 - 公共,私有与受保护修饰符+ readonly 修饰符2 _) S/ ^9 X0 V* V
3-15 类 - 存取器+ 静态属性- a! C+ ]1 y. S! j" _
3-16 类 - 抽象类+ 高级技巧5 g: C! t8 e+ T* x# f5 V" Z
3-17 函数 - 基本示例+ 函数类型
- x) L. O$ d- C+ D3-18 函数 - 可选参数和默认参数
- I" D8 a9 |6 i. i2 ]7 x% n, m1 ?! q3-19 函数 - this+ 重载
2 o7 y0 m7 d8 T, o! L; _3-20 泛型 - 基本示例+ 使用泛型变量+泛型类型& p5 z" q. Z, m% X# c. ~, |
3-21 泛型 - 泛型类+泛型约束
6 q0 x' b* U; R% d/ @/ a3-22 类型推断 - 基础+ 最佳通用类型+ 上下文类型
0 E Z" V: W- O" I1 Z7 M: Y3-23 高级类型 - 交叉类型
7 F) t/ ?- k" z9 f7 H- O! v" I' C3-24 高级类型 - 联合类型1 l! q) H4 b0 G& ^5 e- r
3-25 高级类型 - 类型保护
4 Y; d* P$ k$ } `/ E; e" _3-26 高级类型 - 可以为 null 的类型+ 字符串字面量类型
7 Q p; X9 l6 w8 G7 B4 n( @" T
( {, n0 ?2 c7 O. ]/ b第4章 ts-axios 项目构建【工欲善其事必先利其器】
! @. Y2 n3 ^5 z' T9 e2 m分析 axios 项目的重构需求,使用 typescrpit-library-starter 脚手架初始化项目,并编写基础请求的代码,搭建整个 demo 的架构方案。& m3 k) S# |/ r/ H# C+ M" h
4-1 需求分析
/ k8 [. ?& t- V4-2 初始化项目 - 创建代码仓库
# z. _8 t* p/ Y T+ N+ r4-3 初始化项目 - TypeScript library starter
2 C' R3 z7 X1 z2 H0 g4-4 初始化项目 - 关联远程分支
2 N5 q" F0 ~4 h# I9 e5 t9 [- i4-5 编写基础请求代码 - 创建入口文件
% S" n8 h8 E4 N% W& O# p4-6 编写基础请求代码 - 利用 XMLHttpRequest 发送请求
+ Z+ |1 D, h& d d+ Z) Z7 M4-7 编写基础请求代码 - demo 编写: k& |: i! [7 `; N: ^8 e
( Q, w/ q# h$ t% N: v+ A$ F4 @
第5章 ts-axios 基础功能实现【核心流程】. l- M/ v$ V, ?, O+ i6 u4 H
实现 axios 的基础功能,包括对请求 url、data、header 以及响应 data、header 的处理。
/ L! i8 k7 Y1 [* g1 ?! I- O7 G. P5-1 处理请求 url 参数 - 需求分析
+ r* X2 \: N. S% o+ K$ L; e9 p( }( U5-2 处理请求 url 参数 - buildURL 函数实现; ]! ^: K* _+ _+ ^9 |" M5 s$ k" z
5-3 处理请求 url 参数 - 实现 url 参数处理逻辑# Z9 c$ o2 Z2 P% w8 L
5-4 处理请求 url 参数 - demo 编写
0 k# ~+ ^2 @, B! j8 L/ ^5-5 处理请求 body 数据 - 需求分析+ 实现 试看
" o* a/ }/ u" U O& K8 D& ?9 l5-6 处理请求 header - 需求分析# S+ j: n8 E5 p- Z ?
5-7 处理请求 header - processHeaders 函数实现
7 s: j* S) p/ ~ y! r5 s' `6 ?5 Q0 |5-8 处理请求 header - 实现请求 header 处理逻辑# ^5 }6 Q8 ?1 H' k/ p) f
5-9 处理请求 header - demo 编写
! A4 O7 l; j5 `1 G5-10 获取响应数据 - 需求分析+实现4 L+ @1 b) @" B
5-11 处理响应 header - 需求分析+ parseHeaders 函数实现及应用
6 G- }' i$ ?9 \% S! q6 R5-12 处理响应 data - 需求分析+ transformResponse 函数实现及应用2 b! d p! Y/ ~0 J& Q
4 a* r- z5 n2 Y- i
第6章 ts-axios 异常情况处理【不可忽视的边界条件】
2 Y, ?% {" u: O( ~& \7 z( k0 R% ^处理 axios 请求的一些异常情况,包括网络错误、请求超时,构造一个信息增强错误处理类。
- ^, o6 t6 f2 m+ {: a2 B8 a9 k6-1 错误处理 - 需求分析" l1 t$ D6 n5 g% q8 p1 G
6-2 错误处理- 网络错误+超时错误+非200状态码+demo' L7 n; f/ } @
6-3 错误信息增强 - 需求分析! K2 Z5 w9 P" a8 j4 y, ~0 @5 z3 F
6-4 错误信息增强 - 创建 AxiosError 类! Y- P3 b2 C7 S8 k0 K1 i* C
6-5 错误信息增强 - createError 方法应用+ 导出类型定义9 K) q& D9 ^& I7 ~9 q# c
& E2 W) y) E( H
第7章 ts-axios 接口扩展【工厂模式的合理运用,设计思想的转变】
1 g4 V+ ^2 a& s: i把 axios 从普通函数实现到通过工厂模式类的设计转变,并扩展更多调用接口,把 axios 变成了一个 混合对象,以及让响应数据支持泛型。
: i& o# x6 ]. o5 Y7-1 -1 扩展接口 - 需求分析& k$ N. |+ M$ @" p- x- B
7-2 -2 扩展接口 -接口类型定义+ 创建 Axios 类
" Z: S/ \: w* y: I4 K$ J! k+ b- Y) F7-3 -3 扩展接口 - 混合对象实现+ demo 编写8 \ L/ I" h) y! @
7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写
! M5 n/ q! I0 L* c7-5 -1 响应数据支持泛型- 需求分析+ 接口添加泛型参数+ demo 编写
4 H- f: v. x7 Z3 T% D
1 T+ T$ w% k: k9 v7 v2 y- W& r第8章 ts-axios 拦截器实现【巧妙运用 Promise 链式调用】! l0 D( D/ R( j7 T5 P4 ~
实现 axios 的拦截器功能,对整个实现做了详细的设计,最后实现拦截器管理类以及链式调用逻辑。
/ Y' A& z5 b; j; }8-1 -1 拦截器的设计与实现 - 需求分析+ 整体设计
) t* ^0 K# G7 [: K% u8-2 -2 拦截器的设计与实现 - 拦截器管理类实现4 A# B9 O0 J9 C" E
8-3 -3 拦截器的设计与实现 - 链式调用实现* i q5 G; L% I' j2 S% g9 {
8-4 -4 拦截器的设计与实现 - demo 编写0 D4 ~: J$ D' ^1 i+ }
: k8 k5 V, r4 r: s* K0 E$ E( P第9章 ts-axios 配置化实现【巧妙运用策略模式实现配置合并】
% Q" w, t: p; g9 \" A: A9 h$ v0 _+ T" j" e让 axios 支持一些默认配置,实现了配置的合并,根据不同的属性采用不同的合并策略,并且扩展了 axios.create 方法扩展默认配置,生成新的实例。* O# m u& i# P" J! j: z
9-1 合并配置的设计与实现 - 需求分析 + 默认配置 g( z9 w2 T. t3 B/ P
9-2 合并配置的设计与实现 - 配置合并策略(上)
: V. k0 |! \5 Y- g, [8 U0 S7 \1 K9-3 合并配置的设计与实现 - 配置合并策略(下)
0 y5 @4 I' ]% m" Z+ F% H; ?9-4 合并配置的设计与实现 - flatten headers + demo 编写
1 J- L' o0 [4 @; {3 \: Y1 `9-5 请求和响应配置化- 需求分析+ 修改默认配置! l( C- [, b) j; U5 w- A1 u
9-6 请求和响应配置化- transform 逻辑重构 + demo 编写# \& R8 N1 k2 W7 T, o5 J4 H1 ~7 o
9-7 扩展 axios.create 静态接口 - 需求分析+ 静态方法扩展+ demo 实现) [1 A7 Q1 Q7 a% F
% D2 Q, f3 ?7 |, J- T& _1 g. e第10章 ts-axios 取消功能实现【巧妙运用 Promise 实现异步分离】4 r: T; ^0 ~. ^( d1 o3 t
实现 axios 的取消功能,包括对取消接口的设计,CancelToken 类的设计与实现。+ q" F- ], L) O
10-1 -1 取消功能的设计和实现 - 需求分析+ 异步分离的设计方案4 Q4 W, O6 z. L
10-2 -2 取消功能的设计和实现 - CancelToken 类实现+ 扩展静态接口4 ?" q! C- {) Z# q7 Y* @
10-3 -3 取消功能的设计和实现 - Cancel 类的实现及 axios 的扩展+ 额外逻辑实现
# v2 ` c1 W9 e3 F! j10-4 -4 取消功能的设计和实现 - demo 编写+ X( f6 M% |+ c7 D9 @1 ^
; J. e7 m d9 w( _第11章 ts-axios 更多功能实现【锦上添花】: O7 D/ k0 |! o# Q8 y
实现 axios 更多的功能,包括 XSRF 防御、上传、http 认证授权、withCredentials、自定义参数序列化、自定义合法状态码、自定义合法状态码等,百分百实现官方 axio 在浏览器端的功能。
0 {2 j! r9 z; B8 T1 G, t11-1 withCredentials 需求分析&代码实现& demo 编写2 m9 O0 x' |9 V3 C. @
11-2 xsrf 防御 - 需求分析
/ F) U, r3 f1 o3 J5 ?7 E' t& ]% b11-3 xsrf 防御 - 代码编写
' c" `+ d+ b& N9 K6 W8 Q11-4 xsrf 防御 - demo 编写" P0 E G( }- B5 n. v
11-5 上传和下载的进度监控 需求分析+ 代码实现
- V6 k) v {4 e: N# Z, {7 N, R11-6 上传和下载的进度监控 demo 编写5 q) o4 O8 O2 c$ C( l; ?. M5 Z- W
11-7 HTTP 授权 需求分析+ 代码实现 + demo 编写" n# A) R- e9 f: m/ Z
11-8 自定义合法状态码 需求分析+ 代码编写 + demo编写
. _2 A- @. `2 K0 ~0 u1 V: t11-9 自定义参数序列化 需求分析+ 代码编写 + demo编写
& T. Q# o) N) O% ?/ M7 @, ~11-10 baseURL 需求分析+ 代码编写 + demo编写
8 ?6 [% C$ k/ E% P, w! z4 V11-11 静态方法扩展 需求分析+ 代码编写 + demo编写 Q5 I8 ?3 y! S h: {3 T, C
; o, L* U' T" u5 o2 O$ q! I第12章 ts-axios 单元测试【保障代码高质量】9 k. H0 ~' P) c$ [7 |0 _7 k
先介绍单元测试,再讲解测试环境搭建,最后完整的实现整个 axios 库的单元测试,保证测试覆盖率达到 99%. C/ ^- c A1 e! X4 Q- r( R
12-1 前言
6 f" L8 C: Y# E) R4 _12-2 Jest 的安装和配置 Jest 安装9 ^# _7 S! T" J, D4 [. A7 i
12-3 辅助模块单元测试 准备工作
\8 n1 l# [$ j* Q( h$ _12-4 辅助模块单元测试 util 模块测试-
$ l9 I( w) }1 |9 \, i1 r) b12-5 辅助模块单元测试 cookie 模块测试 + data 模块测试 + error 模块测试- p2 Q) K5 a# A
12-6 辅助模块单元测试 headers 模块测试- J4 F( F, `- |+ j7 `6 v
12-7 辅助模块单元测试 url 模块测试' G6 h) h- G" X, Y; g5 u* s
12-8 请求模块单元测试 jasmine-ajax + 测试代码编写$ `) r( o) v5 v0 {+ n' A
12-9 header 模块单元测试 测试代码编写- d, ?$ H2 G2 i, ~9 D' M) G
12-10 Axios 实例模块单元测试 测试代码编写# J! a! L) T$ U% c& l F; A' T$ d
12-11 拦截器模块单元测试 测试代码编写
% G7 a3 B) |1 J+ k& G: a12-12 mergeConfig 模块单元测试 测试代码编写# Z, m; q" {6 K
12-13 请求取消模块单元测试 Cancel 类单元测试 + CancelToken 类单元测试 + Cancel 业务逻辑单元测试
0 l, ?( n( V& d9 I y# c4 L12-14 剩余模块单元测试 defaults 模块单元测试
$ E0 x1 b& o6 ]( q2 C12-15 剩余模块单元测试 transform 模块单元测试 + xsrf 模块单元测试: \/ z7 P. v9 X" V1 [
12-16 剩余模块单元测试 上传下载+HTTP 授权+ 静态方法模块单元测试
) g+ ~' A z; j) g& h- X12-17 剩余模块单元测试 补充未覆盖的代码测试5 g# n& m6 ^4 P$ ^3 a" B
' h. v5 a$ u$ X第13章 ts-axios 部署发布【向社区分享你的项目】) G4 p8 D @0 k% O
讲解 ts-axios 库的部署和发布,使用 Rollup 编写部署构建脚本,使用 semantic-release 管理版本和发布。& B& I6 [% r* S- H
13-1 ts-axios 编译与发布 需求分析 + 编译和打包
- C; c# Y$ G- ?& C% l13-2 ts-axios 编译与发布 自动化部署1 f; K& A$ Y: ~8 D9 i8 @" `4 @; r
13-3 ts-axios 编译与发布 运行部署脚本, f& c. a+ a( l( S$ Y
13-4 ts-axios 库 在 TS 和 JS 项目中引用) X1 w# g: h5 P- t! }+ ?
1 S7 Q# B! _; ^& E9 @! `. P9 s8 C
第14章 课程总结【知识梳理,巩固加深】
+ o% D& i4 n6 p- u$ u本次课程的整体回顾,总结学习的内容。
4 |3 p; l1 K+ e, U8 p1 Z) c+ K& k$ B' i# q14-1 课程总结 与回顾
; y$ X/ K5 c2 C5 Q( M n4 Q% [
3 S# M2 V e8 ~+ V) S. b% S- G2 _7 u9 E' d* T7 e4 M8 _8 i
〖下载地址〗8 O+ o$ e; G. R# U7 N
0 d& n/ Z8 o9 S9 J0 S6 j
9 R$ e7 x- }- F- T- ^- ^* T$ ^" a5 J- a5 N7 j! h C
|
|