3.6.1-beta.2 • Published 3 months ago

@rtarojs/plugin-http v3.6.1-beta.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

@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功能,在编译小程序时将全局的 FormDataBlob 对象替换成 undefined,这样使用 axios 时不会有 FormData is not defined 这类异常,相应的代价是 axios 的上传文件的功能也将不可用, 考虑到小程序有自己的独特上传API,这是可以接受的。

如果需要改变上述行为,可以通过传入选项 disabledFormDatadisabledBlob

// config/index.js
config = {
  // ...
  plugins: [
    ['@rtarojs/plugin-http', {
        disabledFormData: false,
        disabledBlob: false
    }]
  ],
}

2.axios 中使用了document.createElement("a") 动态创建 a 标签设置 href 属性,然后读取 protocolhost 等属性来判断是否同源跨域;@rtarojs/runtime 3.6.0 版本中支持了动态创建 a 标签, 并导出了一些公共函数,因此本插件需要配合 taro 3.6.0及其以上版本 使用

安装

npm i @rtarojs/plugin-http

使用

// config/index.js
config = {
  // ...
  plugins: ['@rtarojs/plugin-http'],
}

插件提供了3个参数:

参数名默认值说明
enableCookiefalse(是否)注入相关代码,支持 document.cookie 、 通过后端返回 Set-Cookie 响应头来设置 cookie
disabledFormDatatrue(是否)禁用掉 FormData 全局对象
disabledBlobtrue(是否)禁用掉 Blob 全局对象