vue3.0+vite プロジェクトは低バージョンのブラウザーの互換性をどのように解決しますか

最近、古いバックグラウンド管理システムに組み込まれる新しい PC 側プロジェクトが開発されました。お客様が使用しているGoogle Chromeのバージョンが比較的低く、バージョンアップ処理をしたがらないため、低バージョンのブラウザの互換処理しかできません(残念ながら、一部の新しい技術は使いたくても使えない場合があります) 。そこで、vue3.0+viteプロジェクトの低バージョンブラウザの互換処理についてまとめます。

1. babel/polyfill とその関連依存関係をインストールします。

低バージョンのブラウザ (Google Chrome バージョン 66.0) の互換性の問題を解決するには、率直に言って、低バージョンのブラウザは最新の構文をサポートしていないため、最新の構文を低バージョンのブラウザがサポートできる古い構文に変換する必要があります。認識してロードします。これらの下位バージョンのブラウザは ES6 構文と新しい API をサポートしておらず、Babel はデフォルトで新しい JavaScript 構文のみを変換しますが、Proxy、Symbol、Promise などのグローバル オブジェクトや、グローバル オブジェクトで定義された一部などの新しい API は変換しません。メソッドはトランスコードされません。

npm install --save @babel/polyfill
npm install --save-dev @babel/core @babel/plugin-transform-runtime @babel/preset-env es6-promise babel-polyfill

2. これを main.js に導入します。注: これは先頭の最初の行である必要があります。

import "@babel/polyfill"; //(一定要在最上面,第一行)
import Es6Promise from "es6-promise";
Es6Promise.polyfill();
import {
    
     createApp } from "vue";
import router from "@/router";
import store from "@/store";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import {
    
     createPinia } from "pinia";
const app = createApp(App);
app
  .use(store)
  .use(ElementPlus)
  .use(router)
  .use(createPinia())
  .mount("#app");

3. 新しい babel.config.js ファイルを作成します

module.exports = {
    
    
  presets: [
    [
      "@vue/app",
      {
    
    
        useBuiltIns: "entry",
        polyfills: ["es6.promise", "es6.symbol"],
      },
    ],
    [
      "@babel/preset-env",
      {
    
    
        modules: false,
        useBuiltIns: "entry",
        corejs: 2,
      },
    ],
  ],
};

4. package.json ファイルでブラウザリストを構成します。

	"browserslist": [
	    "> 1%",
	    "last 2 versions",
	    "not ie <= 11"
	  ]

5. vite.config.js と同じレベルに .babelrc ファイルを作成します。

{
    
    
  "presets": ["@babel/preset-env"],
  "plugins": ["@babel/plugin-transform-runtime"]
}

結果

上記の手順に従って構成した後、ローカル開発環境は正常ですが、パッケージ化してテスト環境にデプロイするとエラーが報告されます。

エラー メッセージは次のとおりです。
Uncaught SyntaxError: Unexpected token ?

解析できません???
es6の文法なので互換性がまだよくできていません。

この問題はどうすれば解決できますか? 他のオプションを再度試し始めました。

まず、上で追加したコードを削除せずに、次の解決策を追加したことを言っておきます。

6. 解決策

vite.config.js でブラウザの互換性を設定します。
私たちのプロジェクトは vite で構築されているため、最初に vite 独自の API を使用してブラウザーの互換性を設定することを考えました。
build.target と buid.cssTarget を構成する

build: {
    
    
  target: ['chrome52'],
  cssTarget: ["chrome52"],
}

このコードを vite.config.js に追加すると機能し、下位バージョンの Google ブラウザでもページを実行できるようになります。

これまでのところ、ブラウザの互換性の問題は解決されています。

おすすめ

転載: blog.csdn.net/xiaolinlife/article/details/131549948