前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文带你掌握Vite 处理 Polyfill,从此大佬就是你

一文带你掌握Vite 处理 Polyfill,从此大佬就是你

作者头像
前端逗逗飞
发布2023-04-23 16:12:02
2.4K0
发布2023-04-23 16:12:02
举报
文章被收录于专栏:前端逗逗飞前端逗逗飞
highlight: atelier-estuary-dark theme: channing-cyan
前言

当你吭哧吭哧完成业务开发,提交测试进入业务测试后,当测试人员跟你说"安卓手机白屏、ios白屏",内心是不是崩溃的。

移动端产生白屏的原因大概率是JS高版本语法在低版本浏览器上不支持,例如:Promise.allSettled、Object.fromEntries、... ,那这种问题怎么处理呢。

  • 如何才能知道,JS语法的兼容性呢 通过can i use 查看JS/CSS语法,不兼容的浏览器版本
  • Promise.allSettled
image.png
image.png
  • Object.fromEntries
image.png
image.png

前端有很多构建工具 gulp、rollUp、weback、vite, 无论哪种构建工具,最终都是通过babel将高版本语法转换为低版本语法。

以下vite、webpack解决此类问题的方法

1.vite

虽然vite也可以通过babel的配置文件来解决这类问题,但vite好像更推荐插件 @vitejs/plugin-legacy 来解决问题。

代码语言:javascript
复制
      // ...other config
      legacyPlugin({
        targets: ['Chrome > 70', 'Safari  12.1', 'ios >= 12.3'],
        renderLegacyChunks: true,
        polyfills: ['es.promise.all-settled', 'es.object.entries'],
        modernPolyfills: ['es.promise.all-settled', 'es.object.entries']
      }),
       // ...other config

2.webpack

webpack解决这类的方式,很简单,就是配置babel.config.js(当然也可以配置.babel.rc)

代码语言:javascript
复制
module.exports = {
  plugins: [
     // ...other plugins
    '@babel/plugin-transform-runtime',
    '@babel/plugin-proposal-nullish-coalescing-operator',
    '@babel/plugin-proposal-optional-chaining'
  ]
}

最后

此类文档会持续更新

@vitejs/plugin-legacy官方文档

重点段落

image.png
image.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.vite
  • 2.webpack
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档