国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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 で利用可能であり、レトロ互換性があるため、まだ持っていない場合は追いつくことが重要です。 Vue 3 に移行しても、引き続きその機(jī)能をお楽しみいただけます。移行のステップも小さくなります。

時(shí)間をかけて

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

チームを作成する

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

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

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

    単體テストは通常??、実際には Vue に関連付けられていないもの (たとえば「純粋な JS」関數(shù)のみ) をテストするため、あまり役に立ちません。ここでは重點(diǎn)を置きませんでした。
  • vue-test-utils を使用したコンポーネントのテストは移行が大変で、最終的には一部を無効にする必要さえありました
  • エンドツーエンドのテストは、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é)約できます。すでにお持ちの場合は、移行中に Vue 3 の新しいルールを確認(rèn)できます: https://eslint.vuejs.org/rules/

ヴァイトを使う

Vue の移行を開始する前に、すでに 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 に置き換えました。

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

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


3?? 移行を開始する

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

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

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

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

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

小さな一歩

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

大きな一歩

一部の依存関係ではショートカットが提供されません。私たちの場合、UI ライブラリを ElementUI (Vue 2) から ElementPlus (Vue 3) に移行するのは難しく、小さなステップに分割することはできませんでした。 Vuetifyの場合はさらに難しかったと聞きました。そのためには、強(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
}

最後のステップ

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

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

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

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

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

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

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

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

JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 Jul 08, 2025 pm 02:27 PM

こんにちは、JavaScript開発者!今週のJavaScriptニュースへようこそ!今週は、DenoとのOracleの商標(biāo)紛爭、新しいJavaScript Timeオブジェクトがブラウザ、Google Chromeアップデート、およびいくつかの強(qiáng)力な開発ツールによってサポートされています。始めましょう! 「JavaScript」の商標(biāo)を登録しようとするDeno Oracleの試みとのOracleの商標(biāo)紛爭は、論爭を引き起こしました。 Node.jsとDenoの作成者であるRyan Dahlは、商標(biāo)をキャンセルするために請願(yuàn)書を提出しました。

ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ Jul 08, 2025 am 02:40 AM

約束は、JavaScriptで非同期操作を処理するためのコアメカニズムです。チェーンコール、エラー処理、コンビナーの理解は、アプリケーションをマスターするための鍵です。 1.チェーンコールは、.then()を通じて新しい約束を返し、非同期プロセスの連結(jié)を?qū)g現(xiàn)します。それぞれ.then()は以前の結(jié)果を受け取り、値または約束を返すことができます。 2。エラー処理は、.catch()を使用して例外をキャッチしてサイレント障害を回避し、キャッチのデフォルト値を返すためにプロセスを継続する必要があります。 3。promise.all()などの組み合わせ(すべての成功後にのみ成功しました)、promise.race()(最初の完了が返されます)、promise.allsettled()(すべての完了を待っています)

キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? Jul 08, 2025 am 02:43 AM

Cacheapiは、ブラウザからネットワークリクエストをキャッシュするツールです。これは、ウェブサイトのパフォーマンスとオフラインエクスペリエンスを改善するために、サービスワーカーと併用することがよくあります。 1.開発者は、スクリプト、スタイルシート、寫真などのリソースを手動(dòng)で保存できるようにします。 2。要求に応じてキャッシュ応答と一致させることができます。 3.特定のキャッシュの削除またはキャッシュ全體のクリアをサポートします。 4.フェッチイベントを聞いているサービスワーカーを介して、キャッシュの優(yōu)先順位またはネットワークの優(yōu)先戦略を?qū)g裝できます。 5.オフラインサポート、繰り返しのアクセス速度の高速化、主要なリソースのプリロード、バックグラウンドアップデートコンテンツによく使用されます。 6.それを使用する場合、キャッシュバージョンの制御、ストレージ制限、およびHTTPキャッシングメカニズムとの違いに注意する必要があります。

JSラウンドアップ:JavaScriptイベントループに深く潛り込む JSラウンドアップ:JavaScriptイベントループに深く潛り込む Jul 08, 2025 am 02:24 AM

JavaScriptのイベントループは、コールスタック、WebAPIS、およびタスクキューを調(diào)整することにより、非同期操作を管理します。 1.コールスタックは同期コードを?qū)g行し、非同期タスクに遭遇すると、処理のためにWebAPIに引き渡されます。 2。WebAPIがバックグラウンドでタスクを完了した後、コールバックを?qū)潖辘工毳濠`(マクロタスクまたはマイクロタスク)に入れます。 3.イベントループは、コールスタックが空であるかどうかをチェックします。空の場合、コールバックはキューから取り出され、実行のためにコールスタックに押し込まれます。 4.マイクロタスク(Promise.thenなど)は、マクロタスク(SettimeOutなど)より優(yōu)先されます。 5.イベントループを理解するには、メインスレッドのブロックを避け、コード実行順序を最適化するのに役立ちます。

JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 Jul 08, 2025 am 02:36 AM

イベントの泡は、ターゲット要素から祖先ノードに外側(cè)に伝播し、イベントキャプチャは外側(cè)の層からターゲット要素に內(nèi)側(cè)に伝播します。 1。イベントバブル:子要素をクリックした後、イベントは親要素のリスナーを上向きにトリガーします。たとえば、ボタンをクリックした後、最初に保育を出してから、親クリックしました。 2。イベントキャプチャ:3番目のパラメーターをtrueに設(shè)定して、リスナーが[親子要素のキャプチャリスナー]をクリックする前に[親要素のキャプチャリスナーをトリガーするなど、キャプチャステージで実行されるようにします。 3.実用的な用途には、子どもの要素イベントの統(tǒng)一された管理、傍受前処理、パフォーマンスの最適化が含まれます。 4. DOMイベントストリームは、キャプチャ、ターゲット、バブルの3つの段階に分割され、デフォルトのリスナーはバブルステージで実行されます。

マップとフィルターを超えて高次関數(shù)のJSラウンドアップ マップとフィルターを超えて高次関數(shù)のJSラウンドアップ Jul 10, 2025 am 11:41 AM

JavaScriptアレイには、Map and Filterに加えて、他の強(qiáng)力で使用されていない方法があります。 1.還元は、合計(jì)するだけでなく、カウント、グループ、フラットンアレイ、新しい構(gòu)造を構(gòu)築することもできます。 2。FindおよびFindIndexは、個(gè)々の要素またはインデックスを見つけるために使用されます。 3.一部とすべてが條件が存在するか、すべての出會(huì)いかを判斷するために使用されます。 4.ソートはソートできますが、元の配列を変更します。 5.副作用を避けるために、それを使用するときにアレイをコピーすることに注意してください。これらの方法により、コードがより簡潔で効率的になります。

See all articles