Vue から Vue 3 への移行方法

Nov 13, 2024 am 07:51 AM

How we migrated from Vue o Vue 3

約 1 年前、私たちは最終的に Vue 2 から Vue 3 に移行しました。正式なサポート終了まであと 6 か月ありました。当時、私たちのアプリには約 100 ページと 300 のコンポーネントがあり、Vue-router、Pinia (および Pinia ORM)、Vue-i18n、TipTap、ElementUI (ElementPlus for Vue 3) など、Vue に関連付けられた古典的な依存関係のいくつかを使用していました。 🎜>

ここでは私たちに役立ったアドバイスをいくつか紹介します。 Vue 2 は依然として十分に機能するため、移行を急いでアプリを壊したりモラルを破壊したりするのではなく、時間をかけて移行を容易にする方がよいでしょう。


1️⃣ 始める前に

他の人に警告する

物は少しでも必ず壊れます。他のチームでも大丈夫かどうか確認したほうがいいです。

最新の Vue 2.7 にアップグレードする

明らかに、新機能のほとんどは Vue 2.7 で利用可能であり、レトロ互換性があるため、まだ持っていない場合は追いつくことが重要です。 Vue 3 に移行しても、引き続きその機能をお楽しみいただけます。移行のステップも小さくなります。

時間をかけて

これはかなり大規模な作業になる可能性があるため、長期にわたってリスクを軽減することを想定した方がよいでしょう。また、それは私たち (開発者) が道徳を守るのにも役立ちました。数週間、場合によっては数か月単位で計画を立てましょう。いつ始めるかはわかりますが、いつ終わるかはわかりません。最後に、毎週ある程度の時間を割くほうがよいでしょう。そうすれば、障害が発生しても悲惨な結果にならないでしょう。

チームを作成する

骨の折れる作業なので、できる限り 1 人の開発者だけに依存しないでください。また、多くの変更がコードベース全体に影響を及ぼし、日常的に競合が発生する可能性があるため、迅速なフィードバックとマージ ループが必要です。これに対処しなくても、すでに十分に難しいです!

テスト駆動の移行

時間の半分はアプリ全体のテストに費やされるため、可能な限り自動化することをお勧めします。私たちの経験では:

    単体テストは通常​​、実際には Vue に関連付けられていないもの (たとえば「純粋な JS」関数のみ) をテストするため、あまり役に立ちません。ここでは重点を置きませんでした。
  • vue-test-utils を使用したコンポーネントのテストは移行が大変で、最終的には一部を無効にする必要さえありました
  • エンドツーエンドのテストは、JS や Vue の内部構造に関連付けられておらず、アプリでエラーが破棄されるとすぐに失敗したため、最も価値がありました
結論として、最善の方法は、いわゆる「スモーク テスト」を作成することです。そこでは、考えられる最も基本的なシナリオでアプリ内をナビゲートするだけです。高速になるようにシンプルにしてください。早く実行できるほど便利になるからです。 (CI などで) マージ前に実行するとボーナス ポイント。

すべてを入力してください

TypeScript は少し役に立ちましたが、Vue 2 でのサポートはまだ不十分です。 TypeScript を使用することは依然として良い考えですが、あまり役に立たない可能性があります。ただし、Vue 3 を使用すると、セットアップ構文はあなたの強い味方になります!

すべてに糸くずが出る

当たり前のことですが、コードには多くの変更が発生し、エラーも多く発生します。シンプルな ESLint / Prettier を使用すると、時間を大幅に節約できます。すでにお持ちの場合は、移行中に Vue 3 の新しいルールを確認できます: https://eslint.vuejs.org/rules/

ヴァイトを使う

Vue の移行を開始する前に、すでに Webpack から Vite に移行していたので、あまり役立つかどうかはわかりませんが、今日の明確な標準であるため、一部のプラグインでは Webpack でのアップグレードの指示さえ与えられない可能性があります。 Vite は Vue 2 をサポートしているため、最初に実行する方が安全だと思いますが、逆に Vue 3 エコシステムは Webpack をサポートしていない可能性があります。


2️⃣ まずは小さなステップから

目標は、実際に Vue 自体をアップグレードする際の変更を可能な限り少なくすることです。

依存関係をアップグレードする

使用しているすべての Vue 関連の依存関係を確認し、Vue 2 と Vue 3 の両方をサポートするバージョンがあるかどうかを確認し、それにアップグレードします。 Vue-demi は多くのプラグイン管理者がそれを達成するのに貢献したため、利用可能になる可能性は十分にあります。

たとえば、Vuex から Ponia に移行するとよいでしょう。Ponia は両方のバージョンをサポートし (Vuex はまだ小規模な移行が必要です)、とにかく新しい標準です。

依存関係を置き換える

他の依存関係については、最新の代替手段がニーズに合うかどうかを確認してください。たとえば、vue-mq を vue-use に置き換えました。

必要な場合のモンキーパッチ

私たちは現実的である必要があったため、一部の移行は他の移行よりも困難だったため、最終的にそれを修正するために小さな抽象化レイヤーを作成することになりました。たとえば、いくつかの (文書化されていない) 重大な変更をもたらす vue-i18n v9 には苦労しました。そこで最終的に、すべてのコンポーネントを書き直す必要がないように、$t のカスタム バージョンを公開するヘルパーを作成しました (この最もよく使用される関数は現在、基本的に理由もなく "null" 値を受け入れないためです)。言い換えれば、完璧主義になりすぎないでください!


3️⃣ 移行を開始する

さあ、大変な作業が始まります。私たちが以前に行ったことはすべて痛みを和らげます。ここには魔法はありません。おそらく移行で最も難しい部分になるでしょう。

すべてを変えるが、何も変えない

指示に従って、Vue 2 を「移行ビルド」(互換モードとも呼ばれる) の Vue 3 に置き換えます。

利用可能なすべてのフラグをオフにして、アプリがバージョン 2 とほぼ同じように動作するようにします。

アプリに影響を与える重大な変更がないことを確認するか、修正してください。

小さな一歩

各フラグを段階的に有効にし、アプリを徹底的にテストします。一部のコンポーネントの移行が難しい場合は、その互換性オプションをオーバーライドできることに留意してください。したがって、アプリ全体が今すぐ動作するのを待つのではなく、すべてをマージしますが、後で移行できるようにいくつかのコンポーネントを残しておくことをお勧めします。一度にすべてを修正しようとせず、数日経過してバグを見つけてください (そして精神的健康を充電してください)。

大きな一歩

一部の依存関係ではショートカットが提供されません。私たちの場合、UI ライブラリを ElementUI (Vue 2) から ElementPlus (Vue 3) に移行するのは難しく、小さなステップに分割することはできませんでした。 Vuetifyの場合はさらに難しかったと聞きました。そのためには、強く、忍耐強く、時間をかけてすべてを一度に行う必要があります。チームのカレンダーに丸 1 週間の予定を入れておいてください!

実行時にインポートする各コンポーネントの互換性動作をオーバーライドできることに注意してください。

import { ElButton } from 'element-plus'

ElButton.compatConfig = {
  FEATURE_ID_A: true // features can also be toggled at component level
}
ログイン後にコピー

最後のステップ

すべてのフラグをオンにしたら、移行ビルドを削除します。今までに新たな予期せぬ問題が発見されないことを祈ります!

お祝いすることを忘れないでください。あなたには当然のことです! ?

以上がVue から Vue 3 への移行方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScriptとWeb:コア機能とユースケース JavaScriptとWeb:コア機能とユースケース Apr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScript in Action:実際の例とプロジェクト JavaScript in Action:実際の例とプロジェクト Apr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンの理解:実装の詳細 JavaScriptエンジンの理解:実装の詳細 Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Python vs. JavaScript:開発環境とツール Python vs. JavaScript:開発環境とツール Apr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScript通訳者とコンパイラにおけるC/Cの役割 JavaScript通訳者とコンパイラにおけるC/Cの役割 Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

Python vs. JavaScript:ユースケースとアプリケーションと比較されます Python vs. JavaScript:ユースケースとアプリケーションと比較されます Apr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

See all articles