网络在快速发展中,新的框架、工具甚至语言来来去去。然而,许多程序员不得不将速度调整到和最慢更新的用户一样快。
新浏览器在后台自动更新,不需要许可,并且在新的API方面正在实现跨越式发展。然而即使现代浏览器也在不同的时间实现不同的功能,即便你认为是潮流的功能在几年之后未必还是潮流。
如果对所有网友进行调查,很可能现在还有用户在使用IE9,你可以选择继续编代码,或者将所有内容委托给jQuery或一些框架? 这里还有一个不错的选择让程序员永远不需要在纠结于浏览器版本:polyfill。
Polyfill是什么?为什么需要它?
Remy Sharp在2009年的书和博客中创造了这个词。如果浏览器中存在该功能,则polyfill会让浏览器执行其操作,如果没有,则扩展单元会插入缺少的功能。polyfill填补了旧版浏览器的漏洞,对于缺少的功能,它可以使用非本地代码复制本机API。
所以polyfill就足以提供所有ES6功能,也许你使用classList API添加和删除类,或者使用matchMedia进行媒体查询,但是仍然使用IE9。这里还有一个很棒的服务,可以促使你选择polyfill。
Polyfill.io是“Financial Times”开发的开源计划。它目前每天可收到多达2.04亿个请求,并将其描述为“一个规范的聚合库”。这种Polyfills-on-demand交付系统使程序员能够仔细阅读说明并决定是否使用。
理想情况下,程序员将实际需要的多重填充功能发送给特定浏览器,并且只发送特定浏览器实际需要的Polyfill。Polyfill.io可以实现这两个需求,该服务不会向新版浏览器传递过多支持,而是读取User-Agent HTTP头,以便它只能传递必要内容。新版浏览器将收到几乎空的文件,旧版本的IE则将收到一个巨大的代码包。
程序员可以通过查询字符串中指定要使用的功能列表来减轻传递给旧机器的代码重量。如果省略,将使用一组默认值。使用该服务一定要查看HTTP请求,但它的易用性是值得肯定的。
Polyfill.io非常全面,它包括一些流行的浏览器API,如Fetch和Promises。但API远远不足以满足程序员的需求,Polyfill目前还存在许多待填充的新兴API,如果程序员感兴趣,不妨加入到其中,一起来完善这个不错的项目吧。
,