有条件地加载polyfill

7 javascript modernizr polyfills

我正在建立一个我的目标群体非常普遍的网站(年龄13岁,所以你好IE9,你好古老的android浏览器),所以我需要polyfills一些东西(视口,计算等).之前我使用Modernizr和一些条件用户代理来定位IOS 6-7等.然后使用yepnope.js我正在加载特定的polyfill.

既然modernizr 3.0已经出现了,我注意到了Modernizr.load()已被弃用.此外,不推荐使用yepnope.js库.正如他们在他们的网站上所说

"有一些新的最佳实践,你可能应该遵循."

但我找不到他们中的任何一个.谷歌搜索一段时间后,每个人都推荐Modernizr和Yepnope.但是这个问题是如此新鲜(弃用,新版本的Modernizr),我找不到任何新的替代方法.

也许使用一些模块加载器(如require.js)可以完成这项工作吗?如果是,怎么样?

And*_*rew 6

我在https://cdn.polyfill.io维护 polyfill 服务,这可能会满足您的需求。我们有一个包含大约 800 个 polyfill 的库,它们被有选择地捆绑在一起,只为需要它们的用户提供服务。您可以自己运行该服务,也可以仅从我们的 CDN 加载 polyfill。


Guy*_*Guy 5

我见过的关于此技术的最全面的文章是 Philip Walton 的Loading Polyfills Only When Needed。此处引用任何部分都太长,应完整阅读,因此我不会将部分内容复制/粘贴到此答案中。


Pat*_*ick 1

来自yepnope 仓库

当涉及到有条件地加载内容时,我们建议您为正在测试的内容的每个组合输出一个构建。这听起来可能会生成大量文件(可能会),但计算机在这方面非常擅长。然后,您可以将脚本内联到页面中,该页面仅加载(异步!)根据该用户的功能调整的单个构建脚本。条件加载的所有性能均胜出,并且不会出现一次加载 100 个内容的延迟问题。