& G+ t* j8 G1 H; B7 J1 i2 Z/ n
5 Z8 ~0 C# C1 ?, h( h
〖课程介绍〗
S# H7 k' l8 } TypeScript是前端的发展趋势,但是很多同学却缺少实战经验,而且市面上缺少TypeScript 的实战课程。本课程首先讲解TypeScript的一些基础语法和常见用法,接着带同学们使用TypeScript一步步去实现一个完整的axios JS库,然后进行完整的单元测试,最后把开发的JS 库打包并发布到npm上。通过课程学习完全掌握axios的实现原理,修炼原生JavaScript内功,提升个人职场竞争力。9 C; A; B9 |' b6 Q* ^, I% @
5 P G& i! u" T4 e; ^9 Z: O! U, y4 x" E' \$ r8 I1 k3 o
2 i1 v% l7 l6 t K〖课程目录〗% R7 y" f9 A- S$ Y" v) m
第1章 课程介绍【悄悄告诉你,一定要看,有福利】
& n+ x% z" k4 H- X0 C2 l介绍本课程的主要内容,通过本次课程可以学到的知识点,学习方法介绍。
: P3 O L% V1 u' e+ N9 a+ [) G( K1-1 课程介绍 试看4 I0 h+ z: N& F# X4 ?! l7 o
+ H. S% ]4 ] n" n第2章 初识 Typescript【初次体验】
+ I+ j3 n, n4 Z; Z教会同学们安装 Typescript 编译器,以及通过编写第一个 TypeScript 程序认识 TypeScript。& ?2 {( ~" S7 K* j
2-1 安装 TypeScript
) Y r" O q. W, Z. V( |2-2 编写第一个 TypeScript 程序 试看8 Z3 V. N5 s+ F- ~
) z3 h7 z. Y6 r- \2 q
第3章 Typescript 类型系统【必备基础,牢固掌握】# N4 m1 O6 q' d m0 k/ T8 b' X2 A- t
参考官方文档,主讲 TypeScript 的一些重要的语法和概念,并配合一些具体的代码示例辅助说明,帮助同学们了解 TypeScript 的常见用法,为之后的实战打下基础。3 ?# b' d5 ^3 w+ Y
3-1 基础类型(上)! Q! J1 ?: H+ F5 p' l2 e6 v
3-2 基础类型(下)8 S. S% q3 I" u" t1 K+ n
3-3 基础类型(注意版本报错问题)
9 R) u' V% @# C6 e1 h( n3-4 变量声明 - var 声明
/ T8 {( t# p9 X3 y$ F' O3-5 变量声明 - let 声明
' a6 s+ A, L1 |' ] X3-6 变量声明 - const 声明& Z# b% T; I h# D- B7 R
3-7 变量声明 - 解构, T! F: [0 f& ~0 n6 \- P
3-8 变量声明 - 展开
d$ z1 l- F h; }! b4 A9 b+ `; e3-9 接口 - 接口初探) i1 c- [: a3 X$ l' i. e
3-10 接口 - 可选属性+只读属性
! n2 M3 s* ]. L* f; z% ~3-11 接口 - 额外属性检查+函数类型+可索引的类型% x2 e/ V- y$ x: Q0 n7 _& v
3-12 接口 -类类型+继承接口+混合类型+接口继承类1 a( {' w) _6 e% f% x
3-13 类 - 基本示例+继承4 \' @- [6 X0 t. U2 }0 r% T
3-14 类 - 公共,私有与受保护修饰符+ readonly 修饰符
5 b5 l% c6 R) y. Q2 q3-15 类 - 存取器+ 静态属性7 M7 Q. k8 R7 O1 _
3-16 类 - 抽象类+ 高级技巧
$ C* I3 } t9 r. H3-17 函数 - 基本示例+ 函数类型5 U5 Y+ u5 L5 o
3-18 函数 - 可选参数和默认参数
/ R! c( a- G0 }# u, U3-19 函数 - this+ 重载
) ~5 ~0 Z* {/ i2 a; o- y1 k3-20 泛型 - 基本示例+ 使用泛型变量+泛型类型/ }% m8 a) T, ` h
3-21 泛型 - 泛型类+泛型约束3 h. _* F8 s, K# h9 Z f
3-22 类型推断 - 基础+ 最佳通用类型+ 上下文类型
4 \# l* D s# J& V5 d! X3-23 高级类型 - 交叉类型0 d0 k5 r4 T5 U1 t, c& K
3-24 高级类型 - 联合类型
% p; m& H; v, \1 z( T3-25 高级类型 - 类型保护
7 e5 e. M# Z+ D: Q6 e2 a3-26 高级类型 - 可以为 null 的类型+ 字符串字面量类型
5 P9 d* y4 s5 q, R: r6 R5 O; G2 \8 {# Y/ L+ `+ Z
第4章 ts-axios 项目构建【工欲善其事必先利其器】
2 |; b6 _: Z( Q3 L分析 axios 项目的重构需求,使用 typescrpit-library-starter 脚手架初始化项目,并编写基础请求的代码,搭建整个 demo 的架构方案。3 S) m6 N- U9 _( n( |' [
4-1 需求分析
- m2 f' o. C4 E4-2 初始化项目 - 创建代码仓库; D6 y8 R+ N* ~/ i4 x, \
4-3 初始化项目 - TypeScript library starter
7 p7 J" O* q# q* j1 T% i4-4 初始化项目 - 关联远程分支
0 N! m* {1 I/ k4-5 编写基础请求代码 - 创建入口文件$ c" A2 T# n9 d: R7 P# z
4-6 编写基础请求代码 - 利用 XMLHttpRequest 发送请求
; A; ~2 w- @# T8 p( d- x' @4-7 编写基础请求代码 - demo 编写
7 V) V, K+ g5 S5 Y
# ]( O& E- O9 l) z" q# c; s/ b第5章 ts-axios 基础功能实现【核心流程】
( J1 I" c0 v8 Y# O' n) Q( S实现 axios 的基础功能,包括对请求 url、data、header 以及响应 data、header 的处理。& y) r6 o5 C& g& r9 s' {) ]& s& V1 |
5-1 处理请求 url 参数 - 需求分析
, K0 m( g; l/ u1 { p$ m/ Y5-2 处理请求 url 参数 - buildURL 函数实现
) c/ |' a) H6 p1 u5-3 处理请求 url 参数 - 实现 url 参数处理逻辑
& X* `( l6 A! ?5-4 处理请求 url 参数 - demo 编写
$ _% b! e# s9 i4 q! k, q5-5 处理请求 body 数据 - 需求分析+ 实现 试看
~% ?- E. H9 c7 y7 _5-6 处理请求 header - 需求分析: o$ v- ^$ k1 s* |
5-7 处理请求 header - processHeaders 函数实现
3 L2 E7 I+ E7 r& Z9 K5-8 处理请求 header - 实现请求 header 处理逻辑
. B& O- E/ k) P6 p- D5-9 处理请求 header - demo 编写, A6 C! u& J2 K+ ?+ Y5 E/ ~
5-10 获取响应数据 - 需求分析+实现6 n5 J8 h& n _) e1 N, c
5-11 处理响应 header - 需求分析+ parseHeaders 函数实现及应用9 }, q8 @. k: {& ]/ z9 l# y3 Q
5-12 处理响应 data - 需求分析+ transformResponse 函数实现及应用
7 v- A3 L$ r8 r7 I0 D/ G R( l x1 G
第6章 ts-axios 异常情况处理【不可忽视的边界条件】) r' ]& V: G: R( `, x+ v
处理 axios 请求的一些异常情况,包括网络错误、请求超时,构造一个信息增强错误处理类。
v7 j: W& Y$ v6-1 错误处理 - 需求分析- ^6 J/ y n F. W: s
6-2 错误处理- 网络错误+超时错误+非200状态码+demo
. C- |8 g; z- c9 k. u6-3 错误信息增强 - 需求分析
& p5 b- @; o$ I4 v7 J# ]6-4 错误信息增强 - 创建 AxiosError 类) }7 x; {9 i. V
6-5 错误信息增强 - createError 方法应用+ 导出类型定义* @9 T" y" w% K6 m4 G
* H0 }; p6 l& X- r
第7章 ts-axios 接口扩展【工厂模式的合理运用,设计思想的转变】
; r4 ?. y& L% I' x把 axios 从普通函数实现到通过工厂模式类的设计转变,并扩展更多调用接口,把 axios 变成了一个 混合对象,以及让响应数据支持泛型。
, Y9 u3 {, e4 ]$ j7 }1 X7-1 -1 扩展接口 - 需求分析
$ z1 B1 @! ], v! m% t6 n, p7-2 -2 扩展接口 -接口类型定义+ 创建 Axios 类
% z; \$ {! C* F5 J% ?; R7-3 -3 扩展接口 - 混合对象实现+ demo 编写( b: v3 a4 `$ r1 M# k9 |5 f
7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写& k6 M# G5 u' D1 d4 l6 y' e
7-5 -1 响应数据支持泛型- 需求分析+ 接口添加泛型参数+ demo 编写/ P4 _8 ]4 w0 {0 c" C
! M$ `( \$ C# c; V7 z$ m9 P
第8章 ts-axios 拦截器实现【巧妙运用 Promise 链式调用】3 W8 c2 O! p- k/ z3 j9 I. I
实现 axios 的拦截器功能,对整个实现做了详细的设计,最后实现拦截器管理类以及链式调用逻辑。+ _& ]. R% E- z3 f" D/ [
8-1 -1 拦截器的设计与实现 - 需求分析+ 整体设计
" t0 J; H2 h- v) A6 V- U1 e8-2 -2 拦截器的设计与实现 - 拦截器管理类实现
0 j$ v8 G& \( z8-3 -3 拦截器的设计与实现 - 链式调用实现8 G0 [8 _; R. M, v `
8-4 -4 拦截器的设计与实现 - demo 编写: ^% L% `: Y2 i* t
. e/ T" ]( S2 I: a. K& `第9章 ts-axios 配置化实现【巧妙运用策略模式实现配置合并】1 \7 p" O/ C0 Q ~" N7 ^% \ S, t
让 axios 支持一些默认配置,实现了配置的合并,根据不同的属性采用不同的合并策略,并且扩展了 axios.create 方法扩展默认配置,生成新的实例。
# C k; d) L* O3 O( n9-1 合并配置的设计与实现 - 需求分析 + 默认配置
4 B1 G* u0 T( b& C# v+ p) N9-2 合并配置的设计与实现 - 配置合并策略(上)
: l" M& t3 n3 \; Y/ u7 D4 t; T9-3 合并配置的设计与实现 - 配置合并策略(下)
& T( t7 b! w9 v* ?( Q1 A4 l3 x9-4 合并配置的设计与实现 - flatten headers + demo 编写
7 y0 O) \# O- d9 ^3 C+ a9-5 请求和响应配置化- 需求分析+ 修改默认配置4 @* c0 @% W; v" D. S7 n" e: |
9-6 请求和响应配置化- transform 逻辑重构 + demo 编写
; ]# Z2 a: E4 d8 ^9-7 扩展 axios.create 静态接口 - 需求分析+ 静态方法扩展+ demo 实现
* s2 ]1 f) O' Q8 k# U8 S2 D$ j0 ?" {" L% l4 { n% E
第10章 ts-axios 取消功能实现【巧妙运用 Promise 实现异步分离】
6 w. C* d/ T ]8 v实现 axios 的取消功能,包括对取消接口的设计,CancelToken 类的设计与实现。# p+ x: K1 K7 f: a
10-1 -1 取消功能的设计和实现 - 需求分析+ 异步分离的设计方案
8 m7 h* h+ J$ ]) [10-2 -2 取消功能的设计和实现 - CancelToken 类实现+ 扩展静态接口
! B7 x: e2 n& W2 O10-3 -3 取消功能的设计和实现 - Cancel 类的实现及 axios 的扩展+ 额外逻辑实现8 R7 J) e5 W. d8 B [, f5 k/ R ~
10-4 -4 取消功能的设计和实现 - demo 编写' b; `; K! \2 p/ P4 {
% e+ [. Z- g3 N9 c/ M# u第11章 ts-axios 更多功能实现【锦上添花】
Z$ T2 M, o( M2 v9 Y1 _' t实现 axios 更多的功能,包括 XSRF 防御、上传、http 认证授权、withCredentials、自定义参数序列化、自定义合法状态码、自定义合法状态码等,百分百实现官方 axio 在浏览器端的功能。% g* m# Q/ z4 V8 |8 r4 K
11-1 withCredentials 需求分析&代码实现& demo 编写
& b/ w4 R Q h* S2 G- W11-2 xsrf 防御 - 需求分析
s" U% Z" y& {+ v8 i$ }11-3 xsrf 防御 - 代码编写1 D+ q M1 O" @
11-4 xsrf 防御 - demo 编写' q5 n$ @1 V5 i: f0 V8 B9 R
11-5 上传和下载的进度监控 需求分析+ 代码实现4 v: ` q6 I7 |9 t
11-6 上传和下载的进度监控 demo 编写
8 y0 _2 X `9 J4 z) l( F11-7 HTTP 授权 需求分析+ 代码实现 + demo 编写1 Q2 v1 n4 y0 d/ y5 I
11-8 自定义合法状态码 需求分析+ 代码编写 + demo编写
; w- ~9 r1 c3 v, ^1 T11-9 自定义参数序列化 需求分析+ 代码编写 + demo编写
3 I3 v, V& l5 O7 T6 k0 m11-10 baseURL 需求分析+ 代码编写 + demo编写# \9 w# k$ C0 m7 H
11-11 静态方法扩展 需求分析+ 代码编写 + demo编写
, H$ n' L, F) U+ i' c( G" B
7 b* k, y! R1 G6 q第12章 ts-axios 单元测试【保障代码高质量】
5 b# I- n+ r1 K先介绍单元测试,再讲解测试环境搭建,最后完整的实现整个 axios 库的单元测试,保证测试覆盖率达到 99%
8 I0 i. n; f$ v% @- O12-1 前言
7 H5 o4 s3 ~' {. ]% X/ Y" V12-2 Jest 的安装和配置 Jest 安装
; W7 b7 Z4 i: M8 P7 [12-3 辅助模块单元测试 准备工作! U- A" K: k# j! B$ z/ d' m6 ^
12-4 辅助模块单元测试 util 模块测试-
- n E/ w- _% L7 H& _12-5 辅助模块单元测试 cookie 模块测试 + data 模块测试 + error 模块测试* Y1 m' l. F4 m" S8 K2 a/ d2 d7 Y$ n
12-6 辅助模块单元测试 headers 模块测试
, i1 @0 j ]5 ]3 y) O0 G12-7 辅助模块单元测试 url 模块测试7 ?0 b! {1 C8 z1 L% V$ E5 w+ {& H
12-8 请求模块单元测试 jasmine-ajax + 测试代码编写
8 [6 g+ Y- f: ~0 \1 Y2 k12-9 header 模块单元测试 测试代码编写! L4 l" j! e+ H* N
12-10 Axios 实例模块单元测试 测试代码编写
6 O' k% z' X( B12-11 拦截器模块单元测试 测试代码编写
, ^1 l; w6 l9 {12-12 mergeConfig 模块单元测试 测试代码编写& A* g3 t2 }2 w# `( I! _
12-13 请求取消模块单元测试 Cancel 类单元测试 + CancelToken 类单元测试 + Cancel 业务逻辑单元测试- i8 A T1 C" N! @
12-14 剩余模块单元测试 defaults 模块单元测试# e( Q# M/ E9 H! t' a2 E
12-15 剩余模块单元测试 transform 模块单元测试 + xsrf 模块单元测试
5 p$ X/ U" z( ?0 i12-16 剩余模块单元测试 上传下载+HTTP 授权+ 静态方法模块单元测试
( k- ]( [' i) ?! G8 ^% p. J. h12-17 剩余模块单元测试 补充未覆盖的代码测试. D8 P* m: }& a5 @0 o O( R
0 `4 K4 a, }4 E, f; @第13章 ts-axios 部署发布【向社区分享你的项目】
) k4 ?- O6 C; h, _讲解 ts-axios 库的部署和发布,使用 Rollup 编写部署构建脚本,使用 semantic-release 管理版本和发布。
8 x6 b1 x3 l3 o13-1 ts-axios 编译与发布 需求分析 + 编译和打包8 Q" Z1 ]8 B$ C( n
13-2 ts-axios 编译与发布 自动化部署" g" V( l2 _) G, m& g" E+ p
13-3 ts-axios 编译与发布 运行部署脚本
5 X+ {4 S* J- p: H5 m( {6 i13-4 ts-axios 库 在 TS 和 JS 项目中引用0 P. ~# U j' F# @$ z4 Z/ d u
8 u7 F, r& q. t
第14章 课程总结【知识梳理,巩固加深】- Y4 q9 I) E- y5 @8 ~
本次课程的整体回顾,总结学习的内容。
# t: h+ A$ K3 H8 j14-1 课程总结 与回顾
$ [) o. H) J- {& a: ^4 K$ i# p: w1 M( l; h9 O" i; ]( N0 _
0 w. d9 ^- \! [7 D〖下载地址〗) p' p( S" \, x9 L* p, g! t8 X9 a8 _
% X' p' s3 t( c- j- s! D
6 f3 h3 @! Y& \2 ^9 s, U9 U. P" `9 L1 l8 k( ~0 W1 d" i
|
|