vite项目打包后浏览器的兼容问题

阅读数:377 评论数:0

跳转到新版页面

分类

html/css/js

正文

一、问题描述

vite+vue3项目开发完以后,你会发现打包后的项目运行在新版浏览器可以正常显示,但运行在一些版本比较老的浏览器如 Chrome < 23、Firefox < 21和IE等浏览器上时显示一片空白,并且没有任何的错误提示。

二、问题分析

原因:那些版本较低的浏览器不支持ES6的语法和新API,而Babel默认只转换新的JavaScript句法,不转换新的API,比如Proxy、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法都不会转码。

三、解决方案

vite官方的插件中有一个关于浏览器兼容支持的插件

@vitejs/plugin-legacy

1、安装此插件

npm i @vitejs/plugin-legacy -D

2、然后在vite.config.js中配置

import legacyPlugin from '@vitejs/plugin-legacy'
export default defineConfig( {
    plugins: [
        legacyPlugin({
            targets:['chrome 52'],  // 需要兼容的目标列表,可以设置多个
            additionalLegacyPolyfills:['regenerator-runtime/runtime'] // 面向IE11时需要此插件
        })
    ]
})

使用此插件后,打包完成的目录多出一些带有legacy字样的文件,html文件中新增了一些脚本,这些脚本根据浏览器的支持程序来动态的引入正常版本文件还是带有legacy字样的文件。

 




相关推荐

一、使用pnpm新建项目 可以使用npm 或yarn或pnpm来初始化Vite项目 pnpm create vite xxx(项目名称) #选择vue #选择js cd xxx (进入项目目录) #安

一、build视图分析依赖文件 分析项目中的文件大小及引用情用情况,是优化前的重要一步,从而采取文件分包、cdn引入等相关技术。 Rollup Plugin Visualizer是一个依赖分析插件,它

方法一、使用new URL 在 Vite 中,你可以使用 new URL 的方式来引用静态资源,这样 Vite 会处理资源的路径,并且在构建时会将资源复制到输出目录: <script setup> c

一、生命周期 1、vue2生命周期 beforeCreate #实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用 created #实例创建完成后被立即同步调用 beforeMount #

一、概述 都是现代化打包工具 二、对比 1、底层语言 从底层原理上来说,Vite是基于esbuild预构建依赖。而esbuild是采用go语言编写,因为go语言的操作是纳秒级别,而js是以毫秒计数,所

一、概述 <script setup> 是在单文件组件(SFC)中使用组合式API的编译时语法糖,解决Vue3.0中setup需要频繁将声明的变量、函数以及import引入的内容通过return向外

一、概述 在vue2中,data函数里返回的值直接为响应式,但在vue3中我们需要使用一些函数才能达到这个效果。 setup函数中拿不到vue的this。 二、常用函数 <template> <d

<script> export default { setup() { const func1= () => { console.log("func1");

缓存页面主要Jul为了防止重复渲染dom,减少加载时间及性能消耗,提高用户体验。 一、旧版的语法 <keep-alive> <router-view v-if="$route.meta.kee

一、在main.js挂载 import { createApp } from 'vue' import App from './App.vue' import router from './route