当前位置: 首页 > Web前端 > HTML

前端页面浏览器兼容性问题的解决方案是

时间:2023-03-28 19:42:24 HTML

react的兼容性问题。react兼容所有主流浏览器,但需要为IE9和IE10添加polyfill代码。但是需要在业务代码中引入,不太友好,于是摸索了一下。预设环境。为高版本的javascript提供与低版本浏览器兼容的代码。常用选项:浏览器,指定哪些浏览器需要兼容那些版本,浏览器列表,兼容性查询工具。注意:就Babel的兼容性查询而言,caniuse是不可靠的,这里是基础。include,如果你使用useBuildIns位使用方式,这里可能会遇到坑。本来写文档是为了强制引入未检测到但我们需要的polyfill代码,但是使用方式的引入早于include,文档一直没有更新。看到如下结论:useBuildIns,包含三个值entry,usage,false。entry,导入入口文件中的所有polyfill。优点是彻底解决了兼容性问题,缺点是最终代码量比较大。用法,根据代码的用法引入polyfill。好处是大大减少了按需导入的代码体积。缺点是无法检测到node_modules中的高版本javascript,无法引入polyfill。false,不添加polyfill,不解决兼容性问题。可以看出这三个值都存在一些不足,需要一个既能按需引入又能解决node_modules中兼容性问题的方案。preset-env无法polyfill依赖包中的代码。在webpack的babel-loader中配置include来包含node_modules,但是打包时间太长(node_modules中的代码太多),引入polyfill时没有引入入口文件,导致引入重复.在babel的GitHubissue中找到一个解决方案,就是自己写一个插件,在入口文件中强制引入需要的core-js模块。polyfill.io带有动态导入的polyfill。解决方法:在项目中插入一个脚本,在请求中附加浏览器的UA信息,然后在服务端解析UA对应的浏览器,然后返回对应的polyfill。polyfill.io是比较好的解决方案,可以解决浏览器兼容性问题,不会浪费资源量。缺点是会针对需要兼容的浏览器引入所有的polyfill。