@minisheep/mini-program-polyfill-core
模块功能
它是一系列小程序缺失的 Web API 的 polyfill 集合。你可以在任何需要它的项目中使用,并不限制于这个项目。
安装
shell
pnpm i @minisheep/mini-program-polyfill-coreshell
npm i @minisheep/mini-program-polyfill-coreshell
yarn add @minisheep/mini-program-polyfill-core用法
你可以简单的让其应用在 globalThis 上:
js
import '@minisheep/mini-program-polyfill-core/wechat-polyfill'如果你不希望污染 globalThis, 你也可以:
js
import { sharedGlobals } from '@minisheep/mini-program-polyfill-core/wechat'
// 然后使用 sharedGlobals.xxxx
// 使用这种方式你还需手动将其应用于 THREEGlobals
Object.assign(THREEGlobals, sharedGlobals);包含的 polyfill
除了部分功能在小程序环境无法实现,它们都尽可能的符合了 W3C 标准。 完整导出类型见 ts 声明。
完全符合 W3C 的
你可以像在 web 中一样使用它们。
- AbortController
- AbortSignal
- DOMException
- Event
- EventTarget
- FormData
- Headers
- KeyboardEvent
- MouseEvent
- PointerEvent
- ProgressEvent
- Touch
- TouchEvent
- UIEvent
下面两个相较于浏览器提供的难以避免的有性能损失
- atob
- btoa
大部分兼容的
- Blob
- Fetch
- File
- FileReader
- Request
- ReadableStream
- Response
- XMLHttpRequest
仅支持部分功能的
- URL:仅支持
createObjectURL和revokeObjectURL, 可手动读取blob url数据,详见代码声明。
以下两个仅支持
utf-8编码,并且是默认 polyfill 到全局对象上的
- TextDecoder
- TextEncoder
XML 拓展
由于用于支持 DOMParser 和 XMLSerializer 相关功能的依赖包体积过大,所以默认未包含在本包内,可以在真正需要它时导入
js
import '@minisheep/mini-program-polyfill-core/xml-addon';会自动根据之前导入主包的方式调整自身行为,如果使用的是 polyfill 形式:
js
import '@minisheep/mini-program-polyfill-core/wechat-polyfill'那么你可以在 globalThis 上访问到 DOMParser 和 XMLSerializer。 如果使用的是:
js
import { sharedGlobals } from '@minisheep/mini-program-polyfill-core/wechat'这种形式,那么你也可以在 sharedGlobals 上访问到 DOMParser 和 XMLSerializer。 当然,你也可以使用模块导出:
js
import { XMLSerializer, DOMParser } from '@minisheep/mini-program-polyfill-core/xml-addon'typescript
SharedGlobals
ts
export const sharedGlobals = {
AbortController,
AbortSignal,
Blob,
DOMException,
Event,
EventTarget,
File,
FileReader,
FormData,
Headers,
KeyboardEvent,
MouseEvent,
PointerEvent,
ProgressEvent,
Request,
ReadableStream,
Response,
TextDecoder,
TextEncoder,
Touch,
TouchEvent,
UIEvent,
URL,
XMLHttpRequest,
atob,
btoa,
fetch
};
export type SharedGlobals = typeof sharedGlobals;