加载中...

Polyfill 指一段在旧运行环境中模拟实现新标准 API 的代码,使开发者可以按最新标准编写代码而无需关心环境差异。该词由英国开发者 Remy Sharp 提出,取自一种填缝剂的品牌名,意为"填平浏览器的坑"。
Polyfill 的典型做法是特性检测后按需注入,如环境缺少 Array.prototype.includes 时在原型上补一份符合规范的实现。它能补齐的是 API(Promise、fetch、Object.assign 等),而箭头函数、class 等新语法无法用运行时代码补齐,必须靠 Babel、SWC 等转译器降级——两者互补构成兼容方案。Proxy 等依赖引擎能力的特性则既不能转译也无法完整 polyfill。
core-js 是最全面的 ECMAScript polyfill 库,Babel 的 preset-env 可依据 browserslist 目标按需引入;曾经流行的 polyfill.io 按 UA 动态下发补丁,后因域名易主注入恶意代码的供应链事件被业界弃用,凸显了自托管的重要性。
随着旧浏览器退场,polyfill 用量整体下降,但在兼容要求苛刻的场景仍不可或缺。

登录 后参与讨论
暂无讨论,来发表第一条评论吧