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