mini-program-polyfill-core
它是一系列小程序缺失的
Web API
的polyfill
集合。你可以在任何需要它的项目中使用,并不限制于这个项目。
用法
你可以简单的让其应用在 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;