@tarojs/plugin-http
Version:
Taro 小程序端支持使用 web 请求 的插件
60 lines (41 loc) • 2.38 kB
Markdown
# @tarojs/plugin-http
`Taro` 运行时扩展插件, 扩展了 `web` 开发中网络请求相关的能力,让 `taro` 可以使用 [axios](https://github.com/axios/axios) 等网络请求封装库。
> 本插件需搭配 taro 3.6.0 及其以上版本使用
### XMLHttpRequest
在小程序端模仿浏览器的 `XMLHttpRequest` 实现的对象,在浏览器环境中返回浏览器本身的 `XMLHttpRequest`。此对象通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/) 注入到全局对象以供第三方库调用。
### document.cookie
在小程序端通过本地存储模仿浏览器的 `document.cookie` 实现的对象,在浏览器环境中返回浏览器本身的 `document.cookie`。
### 其他影响
1.为了能正常使用 [axios](https://github.com/axios/axios) 库, 本插件会通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/)功能,在编译小程序时将全局的 `FormData`、 `Blob` 对象替换成 `undefined`,这样使用 `axios` 时不会有 `FormData is not defined` 这类异常,相应的代价是 `axios` 的上传文件的功能也将不可用, 考虑到小程序有自己的独特上传API,这是可以接受的。
如果需要改变上述行为,可以通过传入选项 `disabledFormData` 、 `disabledBlob`:
```js
// config/index.js
config = {
// ...
plugins: [
['@tarojs/plugin-http', {
disabledFormData: false,
disabledBlob: false
}]
],
}
```
2.[axios](https://github.com/axios/axios) 中使用了`document.createElement("a")` 动态创建 `a` 标签设置 `href` 属性,然后读取 `protocol`、`host` 等属性来判断是否同源跨域;@tarojs/runtime 3.6.0 版本中支持了动态创建 `a` 标签, 并导出了一些公共函数,因此本插件需要配合 `taro 3.6.0及其以上版本` 使用
### 安装
```
npm i @tarojs/plugin-http
```
### 使用
```js
// config/index.js
config = {
// ...
plugins: ['@tarojs/plugin-http'],
}
```
插件提供了3个参数:
| 参数名 | 默认值 | 说明 |
| :--- | :--- | :--- |
| enableCookie | false | (是否)注入相关代码,支持 `document.cookie` 、 通过后端返回 `Set-Cookie` 响应头来设置 `cookie` |
| disabledFormData | true | (是否)禁用掉 FormData 全局对象 |
| disabledBlob | true | (是否)禁用掉 Blob 全局对象 |