@tb-app/polyfill
v0.1.1
Published
提供一些最新特性的polyfill
Downloads
2
Maintainers
Readme
@tb-app/polyfill
简介
小程序引擎中禁止访问 globalThis、global ,因此无法直接使用 babel-polyfill(babel-polyfill 访问了 global 对象)。
开发者使用新的 JavaScript 特性时,需要关心新特性的兼容性。如果必须使用新特性,需要自己提供内置对象的 polyfill。
Polyfill :用于实现浏览器或其他 JavaScript 引擎不支持的原生 API 的代码
为了能够在小程序中使用最新版本的特性,我从 core-js 源码中拷贝了一些目前小程序中可能存在兼容性问题的 API 的 polyfill 实现。
我对这些代码进行了修改,使之能够兼容小程序引擎。并且,删除了这些 polyfill 中对 ie8 或 es3 的兼容代码。修改过的代码,仍然能够百分百通过 core-js 的单元测试(我对 core-js 的单元测试也拷贝了一份)。
为什么自己不实现 polyfill?
要实现符合 ESMA 规范 的 polyfill,需要注重很多细节,要很熟悉 ESMA 规范,实现难度比较大。因此,我选择了十分成熟的 库, core-js。
小程序支持哪些新的特性
ios8 已经不需要考虑了,因为手机端千牛要求的最低版本是 Ios9.因此,表中所列出的 API, 你都可以直接使用(Reflect,Proxy 还需要小心使用)。
安装
npm i @tb-app/polyfill --save
使用
import '@tb-app/polyfill';
注意:一定要在 app.js 的最顶层中 引入 @tb-app/polyfill
引入 @tb-app/polyfill 后,如果用户的小程序引擎中没有对应的 api, 会自动提供 polyfill 版本。
目前提供了以下 API 的 polyfill
- Array.prototype.flatMap
- Array.prototype.flat
- Object.entries
- Object.fromEntries
- Object.getOwnPropertyDescriptors
- Object.values
- String.prototype.matchAll
- String.prototype.padEnd
- String.prototype.padStart
- String.prototype.replaceAll
- String.prototype.trimEnd
- String.prototype.trimRight
- String.prototype.trimLeft
- String.prototype.trimStart