最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3+vite實(shí)現(xiàn)低版本瀏覽器兼容的解決方案(出現(xiàn)白屏問(wèn)題)

 更新時(shí)間:2024年04月15日 09:16:26   作者:AniDe_Bear  
項(xiàng)目全線(xiàn)使用vue3的時(shí)候,自然使用的是配套更加契合的vite打包工具,于是自然而然會(huì)用到很多新的語(yǔ)法,本文給大家介紹了vue3+vite實(shí)現(xiàn)低版本瀏覽器兼容的解決方案(出現(xiàn)白屏問(wèn)題),需要的朋友可以參考下

前言

項(xiàng)目全線(xiàn)使用vue3的時(shí)候,自然使用的是配套更加契合的vite打包工具,于是自然而然會(huì)用到很多新的語(yǔ)法,比如這兩年開(kāi)始普及的可選鏈語(yǔ)法,這個(gè)語(yǔ)法都已經(jīng)納入聲吶的代碼規(guī)范中了,但是vite自身打包的時(shí)候,并不會(huì)做過(guò)多的兼容處理。

默認(rèn)情況vite的兼容目標(biāo)是支持原生ES模塊,原生ESM動(dòng)態(tài)導(dǎo)入import.meta的瀏覽器,官方預(yù)設(shè)的兼容目標(biāo)如下:

  • es2020
  • edge 88
  • firefox 78
  • chrome 87
  • safari 14

而我們的可選鏈正是es2020版本才有的,所以vite在打包后不會(huì)做任何兼容處理,這就導(dǎo)致了一些瀏覽器版本低一點(diǎn)的設(shè)備,打開(kāi)網(wǎng)站就會(huì)出現(xiàn)白屏的情況。

顯然這么新的版本在大部分的目標(biāo)用戶(hù)中,也是很超前的,所以做一些適當(dāng)?shù)募嫒萏幚磉€是有必要的。

教程

// vite.config.ts 
import { defineConfig } from 'vite' 
import vue from '@vitejs/plugin-vue' 

// https://vitejs.dev/config/ 
export default defineConfig({ 
    plugins: [vue()], 
    build: { target: "es2015" } 
})

通過(guò)指定打包后的目標(biāo)版本就行了,vite會(huì)將新的語(yǔ)法通過(guò)esbuild進(jìn)行轉(zhuǎn)換,此時(shí)我們?cè)?strong>支持esm的瀏覽器上訪(fǎng)問(wèn)時(shí)正常的。(注意只有打包后的代碼才會(huì)有效)

這里我特意大寫(xiě)了 支持ESM的瀏覽器是有用意的,我們看下打包后的index.html文件。

可以看到script標(biāo)簽上使用了type="module"屬性,顯然即便我們的腳本里面已經(jīng)兼容到了es2015,但是如果瀏覽器稍微低一點(diǎn)的版本的,它是支持es2015但是它不支持ESM模塊啊。

我們看一下對(duì)應(yīng)的支持統(tǒng)計(jì):

es2015

es6版本最經(jīng)典的就是proxy的支持

ESM模塊

可以看到和es2015的支持度還是有一些差別的。

那么就進(jìn)入到第二個(gè)問(wèn)題,如何兼容不支持esm的瀏覽器!

兼容ESM瀏覽器

官方提供了一個(gè)插件:legacy

官方對(duì)它的定義是:為打包后的文件提供傳統(tǒng)瀏覽器兼容性支持

其實(shí)就是對(duì)不支持esm的瀏覽器的支持,同時(shí)還有語(yǔ)法降級(jí)處理。

先進(jìn)行安裝:

pnpm i @vitejs/plugin-legacy@4.1.1 terser -D

需要注意的是vite4的legacy插件最高目前是4.1.1,再高的版本只支持vite5了,使用起來(lái)會(huì)報(bào)錯(cuò)。

legacy插件需要依賴(lài)terser對(duì)代碼進(jìn)行壓縮。

使用起來(lái)也很簡(jiǎn)單,我們直接引入插件并啟用即可:

// vite.config.ts 
import { defineConfig } from 'vite' 
import vue from '@vitejs/plugin-vue' 
import legacy from "@vitejs/plugin-legacy"; 

// https://vitejs.dev/config/ 
export default defineConfig({ 
    plugins: [ 
        vue(), 
        legacy() 
    ], 
    build: { 
        target: "es2015" 
    } 
})

官方定義,在沒(méi)有明確指定插件配置參數(shù)targets時(shí),他會(huì)去讀取項(xiàng)目中的.browserslistrc文件,我們知道這個(gè)文件是一個(gè)用于配置支持的瀏覽器范圍的文件,通常會(huì)被Babel、Autoprefixer等插件使用。

我個(gè)人根據(jù)es2015的支持版本書(shū)寫(xiě)了一下內(nèi)容:

.browserslistrc

Chrome >= 51 
Edge >= 15 
Safari >= 10 
Firefox >= 54 
Opera >= 38 
iOS >= 10 
not ie <= 11 
Android >= 5 
not IE <= 11

然后我們?cè)偃ゴ虬?xiàng)目,可以發(fā)現(xiàn)index.html的腳本引入發(fā)生了變化。

可以看到script發(fā)生了變化,除了type="module"還有一個(gè)nomodule腳本,nomodule這個(gè)屬性表示在支持esm的瀏覽器不運(yùn)行里面的代碼,而不支持esm的瀏覽器又無(wú)法識(shí)別type="module",反而會(huì)去運(yùn)行nomodule的script,從而實(shí)現(xiàn)了降級(jí)區(qū)分。

而降級(jí)的腳本都會(huì)攜帶一個(gè)legacy文本

這個(gè)就是用于兼容不支持esm模塊的瀏覽器降級(jí)方案。

這個(gè)方式的好處在較新的瀏覽器中可以使用新的特性,舊的瀏覽器使用legacy降級(jí)腳本,從而避免了以前打包時(shí)一刀切的兼容方式,所有的代碼全部降級(jí)處理,使得一些新設(shè)備沒(méi)法體現(xiàn)出新語(yǔ)法的性能。

以上就是vue3+vite實(shí)現(xiàn)低版本瀏覽器兼容的解決方案(出現(xiàn)白屏問(wèn)題)的詳細(xì)內(nèi)容,更多關(guān)于vue3+vite低版本瀏覽器兼容的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue?element樹(shù)形控件添加虛線(xiàn)詳解

    Vue?element樹(shù)形控件添加虛線(xiàn)詳解

    這篇文章主要為大家介紹了Vue?element樹(shù)形控件添加虛線(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2021-11-11
  • vue中英文切換實(shí)例代碼

    vue中英文切換實(shí)例代碼

    在本篇文章里小編給大家整理了關(guān)于vue中英文切換實(shí)例代碼,需要的朋友們學(xué)習(xí)參考下。
    2020-01-01
  • el-table表格點(diǎn)擊該行任意位置時(shí)也勾選上其前面的復(fù)選框

    el-table表格點(diǎn)擊該行任意位置時(shí)也勾選上其前面的復(fù)選框

    本文主要介紹了在el-table組件中實(shí)現(xiàn)雙擊表格某一行任意位置自動(dòng)勾選復(fù)選框的功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Vue.js實(shí)現(xiàn)點(diǎn)擊左右按鈕圖片切換

    Vue.js實(shí)現(xiàn)點(diǎn)擊左右按鈕圖片切換

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)點(diǎn)擊左右按鈕圖片切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue3中使用Vchart的示例代碼

    vue3中使用Vchart的示例代碼

    使用vue開(kāi)發(fā)的web項(xiàng)目中使用圖表,可以使用v-charts,本文主要介紹了vue3中使用Vchart的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • bootstrap vue.js實(shí)現(xiàn)tab效果

    bootstrap vue.js實(shí)現(xiàn)tab效果

    這篇文章主要為大家詳細(xì)介紹了bootstrap vue.js實(shí)現(xiàn)tab效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Vue3中的Token失效攔截處理方式

    Vue3中的Token失效攔截處理方式

    這篇文章主要介紹了Vue3中的Token失效攔截處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 從零開(kāi)始實(shí)現(xiàn)Vue簡(jiǎn)單的Toast插件

    從零開(kāi)始實(shí)現(xiàn)Vue簡(jiǎn)單的Toast插件

    這篇文章主要給大家介紹了如何從零開(kāi)始實(shí)現(xiàn)Vue簡(jiǎn)單的Toast插件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 詳解如何在vue項(xiàng)目中使用eslint+prettier格式化代碼

    詳解如何在vue項(xiàng)目中使用eslint+prettier格式化代碼

    在開(kāi)發(fā)中我們需要一種能夠統(tǒng)一團(tuán)隊(duì)代碼風(fēng)格的工具,作為強(qiáng)制性的規(guī)范,統(tǒng)一整個(gè)項(xiàng)目的代碼風(fēng)格,這篇文章主要介紹了詳解如何在vue項(xiàng)目中使用eslint+prettier格式化代碼,需要的朋友可以參考下
    2018-11-11
  • Vue駝峰與短橫線(xiàn)分割命名中有哪些坑

    Vue駝峰與短橫線(xiàn)分割命名中有哪些坑

    這篇文章主要介紹了Vue駝峰與短橫線(xiàn)分割命名中的注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

安远县| 天等县| 永春县| 七台河市| 汕尾市| 桦南县| 高淳县| 昭觉县| 罗山县| 额尔古纳市| 永胜县| 新安县| 汕尾市| 昌江| 漳浦县| 嘉鱼县| 班玛县| 黄骅市| 全椒县| 禄丰县| 石渠县| 昌都县| 绿春县| 梁河县| 大方县| 邵武市| 安吉县| 屏东县| 十堰市| 金平| 正安县| 社旗县| 介休市| 剑阁县| 大城县| 金川县| 北川| 无棣县| 华池县| 读书| 道孚县|