Vite と Vue CLI の長所と短所

Vite と Vue CLI の長所と短所

Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 10 ~ 100 倍高速な開発サーバーを備えています。

これは、Vue CLI が時代遅れであることを意味しますか? この記事では、2 つのビルド ツールを比較し、それぞれの長所と短所を説明します。これにより、次のプロジェクトにどちらが適しているかを判断できます。

Vue CLI の概要

ほとんどの Vue 開発者は、Vue CLI が標準のビルド ツールとベスト プラクティス構成を使用して Vue ベースのプロジェクトをすばやくセットアップするために不可欠なツールであることを知っています。

主な機能は次のとおりです。

  • エンジニアリング足場
  • ホットモジュールリロードを備えた開発サーバー
  • プラグインシステム
  • ユーザーインターフェース

この説明の目的上、Vue CLI は Webpack 上に構築されているため、開発サーバーおよびビルド機能とパフォーマンスは Webpack のスーパーセットになることに注意することが重要です。

Viteの概要

Vue CLI と同様に、Vite も基本的なプロジェクト スキャフォールディングと開発サーバーを提供するビルド ツールです。

ただし、Vite は Webpack に基づいているわけではなく、ブラウザのネイティブ ES モジュールを利用する独自の開発サーバーを備えています。このアーキテクチャにより、Vite は Webpack の開発サーバーよりも桁違いに高速になります。 Vite は Rollup を使用して構築されており、より高速です。

Vite はまだテスト段階です。Vite プロジェクトの目的は、Vue CLI のようなオールインワンツールになることではなく、高速な開発サーバーと基本的なビルドツールを提供することに重点を置いているようです。

Vite はなぜこんなに速いのでしょうか?

Vite 開発サーバーは Webpack よりも少なくとも 10 倍高速です。基本的なプロジェクトの場合、開発ビルド/リビルド時間の差は 2.5 秒に対して 250 ミリ秒です。

より大規模なプロジェクトでは、この違いはより顕著になります。 webpack 開発サーバーは、ビルド/リビルド時に 25 ~ 30 秒ほど遅くなることがあり、場合によってはそれよりも遅くなることもあります。同時に、Vite 開発サーバーは同じプロジェクトを一定 250 ミリ秒で処理している可能性があります。

これは明らかに開発体験に大きな変化をもたらす違いですが、Vite はこれをどのように実現するのでしょうか?

Webpack 開発サーバー アーキテクチャ

Webpack の動作は、アプリケーション内のすべての import と require を解析し、実行時にファイル (Sass、TypeScript、SFC など) を変換することで、アプリケーション全体を JavaScript ベースのバンドルに構築します。

これらはすべてサーバー側で行われ、依存関係の数と変更後のビルド/再構築にかかる時間の間にはほぼ直線関係があります。

Vite 開発サーバー アーキテクチャ

Vite にはアプリケーション サーバーはバンドルされていません。代わりに、ブラウザの JavaScript モジュール (比較的新しい機能である ES モジュールとも呼ばれます) に対するネイティブ サポートに依存します。

ブラウザは必要に応じて HTTP 経由で JS モジュールを要求し、実行時に処理します。 Vite 開発サーバーは、あらゆるファイル (Sass、TypeScript、SFC など) をオンデマンドで変換します。

このアーキテクチャは、アプリケーション全体をサーバー側でバンドルすることを回避し、ブラウザの効率的なモジュール処理を活用して、大幅に高速化された開発サーバーを提供します。

ヒント: Vite は、開発中でも必要なモジュールのみをロードするため、アプリケーションをコード分割してツリーシェイクすると高速になります。これは、コード分割がプロダクションバンドルにのみメリットをもたらす Webpack とは異なります。

Viteのデメリット

ご存知のとおり、Vite の主な特徴は、驚くほど高速な開発サーバーです。

この機能がなければ、Vue CLI と比較して追加機能がなく、いくつかの欠点があるため、おそらくこれ以上議論されることはないでしょう。

Vite は JavaScript モジュールを使用するため、依存関係でも JavaScript モジュールを使用するのが最適です。最新の JS パッケージのほとんどはこれを提供していますが、一部の古いパッケージでは CommonJS モジュールのみが提供される場合があります。

Vite は CommonJS を JavaScript モジュールに変換できますが、一部の特殊なケースでは変換できない場合があります。もちろん、JavaScript モジュールをサポートするブラウザも必要です。

Webpack/Vue CLI とは異なり、Vite は古いブラウザや Web コンポーネントなどを対象としたバンドルを作成できません。

また、Vue CLI とは異なり、開発サーバーおよびビルド ツールは異なるシステムであるため、本番環境と開発環境で動作に一貫性がなくなる可能性があります。

Vue CLI と Vite の概要

Vue CLI の利点Vue CLI の欠点
実戦でテストされ、信頼性が高い開発サーバーの速度は依存関係の数に反比例します
Vue 2と互換性あり
あらゆるタイプの依存関係をバンドルできる
プラグインエコシステム
さまざまなターゲット向けに構築可能

Viteの利点Viteのデメリット
開発サーバーはWebpackより10~100倍高速です最新のブラウザ(ES2015+)のみをターゲットにできます
コード分​​割を優先するCommonJSモジュールと完全に互換性がない
ベータ版ではVue 3のみサポートされます
最小限のスキャフォールディングには、Vuex、ルーターなどは含まれません。
さまざまな開発サーバーとビルドツール

Viteの未来

上記の比較は Vite と Vue CLI の現在の状態に焦点を当てていますが、考慮すべき点がいくつかあります。

  • ブラウザでの JavaScript モジュールのサポートが改善されるにつれて、Vite も改善されます。
  • JS エコシステムが追いつくにつれて、より多くのパッケージが JavaScript モジュールをサポートするようになり、Vite が処理できないエッジケースの数が減ります。
  • Vite はまだベータ版であり、機能は変更される可能性があります。
  • Vue CLI は最終的に Vite と統合され、どちらか一方を使用する必要がなくなる可能性があります。

注目すべきは、ブラウザの JavaScript モジュールを活用する開発サーバー プロジェクトは Vite だけではないということです。さらに有名な Snowpack もあり、Vite の開発を圧迫する可能性もあります。時間が教えてくれる

以上がViteとVue CLIのメリットとデメリットの詳しい内容です。ViteとVue CLIの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • vite2.0+vue3 モバイルプロジェクトの詳細な説明
  • Vue3.0 + TypeScript + Vite初体験の詳しい説明
  • vue3 プロジェクトを素早く構築し、関連機能を紹介する vite+ts の詳細な説明
  • Vue3.0+vite2は動的非同期コンポーネントの遅延読み込みを実装します
  • vite を使用して vue3 アプリケーションを構築する方法
  • 古い Vue プロジェクトに Vite サポートを追加する方法

<<:  MySQL のフィールドに一意のインデックスを追加および削除する方法

>>:  MySqlのインストールとログインの詳細な説明

推薦する

Alibaba CloudがCloud Shieldから無料のSSL証明書(https)を申請

プロジェクトでは https サービスを使用する必要があるため、Alibaba Cloud では無料...

html2canvas で破線境界線を実装する例

html2canvas は、HTML 要素からキャンバスを生成するライブラリです。描画されるキャンバ...

Linux で SpringBoot jar プログラム デプロイメント シェル スクリプトを起動および停止する方法

では早速、コードをお見せしましょう。具体的なコードは次のとおりです。 #!/bin/bash cd ...

Docker-compose を使用して Django アプリケーションをオフラインでデプロイする方法

目次開発環境用のDocker-ceをインストールする開発環境用のDocker-composeをインス...

JavaScript における継承の 3 つの方法

継承する1. 継承とは何か継承: まず、継承とは関係、つまりクラス間の関係です。JS にはクラスはあ...

VMware仮想マシンの起動時に黒い画面が表示される問題を解決する

# VMware ハードディスクの起動優先順位を調整するステップ 1: 電源をオンにすると、BIOS...

MySQL の union と union all の簡単な分析

データベースでは、UNION キーワードと UNION ALL キーワードの両方が 2 つの結果セッ...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

Dockerfile における ENTRYPOINT と CMD の違い

Docker システムの学習チュートリアルでは、Dockerfile を使用して Docker イメ...

Docker 可視化グラフィックツール portainer の詳細な説明

目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...

MySQL 8のパスワードを忘れた場合のベストな対処法の簡単な分析

序文MySQL に精通している読者は、MySQL が非常に迅速に更新されることに気付くかもしれません...

MySQL でのストアド プロシージャと関数の作成の詳細な説明

目次1. ストアドプロシージャ1.1. 基本構文1.2 実行権限を指定してストアドプロシージャを作成...

GoogleとFacebookがDockerを使わない理由

この記事を書いた理由は、修正した分散 PyTorch プログラムを Facebook のクラスター上...

Vueで親子コンポーネント通信を実装する方法

目次1. 親コンポーネントと子コンポーネントの関係2. 小道具3. $エミット4. $親V. 結論 ...

JavaScriptはクリックするとランダムなグラフィックを生成します

この記事では、クリックするとランダムグラフィックの生成を実現するJavaScriptの具体的なコード...