亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Vue から Vue 3 への移行方法

Nov 13, 2024 am 07:51 AM

How we migrated from Vue o Vue 3

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

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


1?? 始める前に

他の人に警告する

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

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

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

時(shí)間をかけて

これはかなり大規(guī)模な作業(yè)になる可能性があるため、長(zhǎng)期にわたってリスクを軽減することを想定した方がよいでしょう。また、それは私たち (開(kāi)発者) が道徳を守るのにも役立ちました。數(shù)週間、場(chǎng)合によっては數(shù)か月単位で計(jì)畫(huà)を立てましょう。いつ始めるかはわかりますが、いつ終わるかはわかりません。最後に、毎週ある程度の時(shí)間を割くほうがよいでしょう。そうすれば、障害が発生しても悲慘な結(jié)果にならないでしょう。

チームを作成する

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

テスト駆動(dòng)の移行

時(shí)間の半分はアプリ全體のテストに費(fèi)やされるため、可能な限り自動(dòng)化することをお?jiǎng)幛幛筏蓼?。私たちの経験では:

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

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

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

すべてに糸くずが出る

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

ヴァイトを使う

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


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

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

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

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

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

依存関係を置き換える

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

必要な場(chǎng)合のモンキーパッチ

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


3?? 移行を開(kāi)始する

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

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

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

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

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

小さな一歩

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

大きな一歩

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

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

import { ElButton } from 'element-plus'

ElButton.compatConfig = {
  FEATURE_ID_A: true // features can also be toggled at component level
}

最後のステップ

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

お祝いすることを忘れないでください。あなたには當(dāng)然のことです! ?

以上がVue から Vue 3 への移行方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動(dòng)作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動(dòng)的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaScriptモジュールの決定的なJSラウンドアップ:ESモジュールvs CommonJS JavaScriptモジュールの決定的なJSラウンドアップ:ESモジュールvs CommonJS Jul 02, 2025 am 01:28 AM

ESモジュールとCommonJSの主な違いは、ロード方法と使用シナリオです。 1.CommonJSは同期的にロードされ、node.jsサーバー側(cè)環(huán)境に適しています。 2.ESモジュールは、ブラウザなどのネットワーク環(huán)境に適した非同期にロードされています。 3。Syntax、ESモジュールはインポート/エクスポートを使用し、トップレベルのスコープに配置する必要がありますが、CommonJSは実行時(shí)に動(dòng)的に呼ばれるrequire/Module.Exportsを使用します。 4.CommonJSは、Expressなどのnode.jsおよびLibrariesの古いバージョンで広く使用されていますが、ESモジュールは最新のフロントエンドフレームワークとnode.jsv14に適しています。 5.混合することはできますが、簡(jiǎn)単に問(wèn)題を引き起こす可能性があります。

Garbage CollectionはJavaScriptでどのように機(jī)能しますか? Garbage CollectionはJavaScriptでどのように機(jī)能しますか? Jul 04, 2025 am 12:42 AM

JavaScriptのごみ収集メカニズムは、タグクリアリングアルゴリズムを介してメモリを自動(dòng)的に管理して、メモリ漏れのリスクを減らします。エンジンはルートオブジェクトからアクティブオブジェクトを橫斷およびマークし、マークされていないオブジェクトはゴミとして扱われ、クリアされます。たとえば、オブジェクトが參照されなくなった場(chǎng)合(変數(shù)をnullに設(shè)定するなど)、次のリサイクルでリリースされます。メモリリークの一般的な原因には以下が含まれます。 closurures閉鎖の外部変數(shù)への參照。 globalグローバル変數(shù)は引き続き大量のデータを保持しています。 V8エンジンは、世代のリサイクル、増分マーキング、並列/同時(shí)リサイクルなどの戦略を通じてリサイクル効率を最適化し、メインスレッドのブロック時(shí)間を短縮します。開(kāi)発中、不必要なグローバル?yún)⒄栅虮埭?、パフォーマンスと安定性を改善するためにオブジェクトの関連付けを迅速に裝飾する必要があります。

node.jsでHTTPリクエストを作成する方法は? node.jsでHTTPリクエストを作成する方法は? Jul 13, 2025 am 02:18 AM

node.jsでHTTPリクエストを開(kāi)始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない內(nèi)蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動(dòng)処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡(jiǎn)潔な構(gòu)文と強(qiáng)力な機(jī)能を備えており、非同期/待ち聲、自動(dòng)JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡(jiǎn)素化することをお?jiǎng)幛幛筏蓼埂?3.Node-Fetchは、約束と単純な構(gòu)文に基づいて、ブラウザフェッチに似たスタイルを提供します

var vs let vs const:クイックJSラウンドアップ説明 var vs let vs const:クイックJSラウンドアップ説明 Jul 02, 2025 am 01:18 AM

var、let、constの違いは、範(fàn)囲、昇進(jìn)、繰り返し宣言です。 1.VARは機(jī)能範(fàn)囲であり、変動(dòng)的なプロモーションを備えており、繰り返しの宣言が可能になります。 2.一時(shí)的なデッドゾーンを備えたブロックレベルの範(fàn)囲であり、繰り返される宣言は許可されていません。 3.Constはブロックレベルの範(fàn)囲でもあり、すぐに割り當(dāng)てる必要があり、再割り當(dāng)てすることはできませんが、參照型の內(nèi)部値を変更できます。最初にconstを使用し、変數(shù)を変更するときにletを使用し、varの使用を避けます。

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問(wèn)題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書(shū)くのに役立ちます。

DOMツリーを通過(guò)する方法(例:ParentNode、Children、NextElementibling)? DOMツリーを通過(guò)する方法(例:ParentNode、Children、NextElementibling)? Jul 02, 2025 am 12:39 AM

DOMトラバーサルは、Webページ要素操作の基礎(chǔ)です。一般的な方法は次のとおりです。1。親ノードを取得するためにparentNodeを使用し、上向きに見(jiàn)つけるために連鎖させることができます。 2。子供は、子供の要素のコレクションを返し、インデックスを介して最初の子または末端の要素にアクセスします。 3. nextelementsiblingは次の兄弟要素を取得し、以前のエレメントを組み合わせて同性ナビゲーションを?qū)g現(xiàn)します。次のブラザーノードを強(qiáng)調(diào)表示するボタンをクリックするなど、構(gòu)造、インタラクティブな効果などの動(dòng)的に変更するなどの実用的なアプリケーション。これらの方法を習(xí)得した後、複雑な操作を組み合わせて達(dá)成できます。

See all articles