使用 TypeScript 实现一版 axios
- 已支持的主要功能.
- 在浏览器端使用 XMLHttpRequest 对象通讯
- 支持 Promise 链式调用
- 支持请求和响应的拦截器
- 支持默认配置和用户自定义配置
- 支持请求数据和响应数据的转换
- 支持 axios.create 创建新的 axios 实例
- JSON 数据的自动转换
- 支持请求的取消(基于 promise 分离 code)
- 跨域携带 cookie xhr.withCredentials
- XSRF: header 自动添加 token 键值对
- 支持上传/下载进度回调
- 支持 baseURL
- 支持 paramsSerializer
- 支持 axios.all / axios.spread / axios.Axios / getUri
- 使用 TS 配置 webpackConfig,
- 使用 tsc 先编译 webpack.config.ts,
- 再运行 webpack-dev-server
- 使用 webpack-dev-server 的 beforeHook 实现 mock 功能,省去搭建 server 步骤
- 使用 eslint+gitCommitHook 来进行 tsCheck
- 进行单元测试
- 发布到 npm
npm install -D typescript ts-node ts-loader
npm install -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-alloy
npm install -D cross-env npm-run-all husky body-parser
npm install -D webpack webpack-cli webpack-dev-server html-webpack-plugins
npm install -D axios qs nprogress atob connect-multiparty