@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 全局对象 |