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のインストールとログインの詳細な説明

推薦する

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

Vueのsync修飾子の詳細な説明

目次1. 手順2. 修飾語3. .sync 修飾子4. まとめ1. 手順指示とは命令です。文字通りの...

IE6はmin-widthを実装している

まず第一に、この効果は古い話題であるはずだということはわかっています。今日ファイルを整理していたら、...

Windows での MySQL 8.X インストール チュートリアル

以前は MySQL 5.7 を使用していましたが、MySQL にいくつか新しい機能が追加されたため、...

非常に実用的なMySQL関数の包括的な概要、詳細な例の分析チュートリアル

目次1. MySQLの関数の説明2. 単行関数の分類3. キャラクター機能4. 数学関数5. 日付と...

VMware 仮想マシンのネットワークの問題の解決方法

目次1. 問題の説明2. 問題解決1. 仮想マシンシステムのインストール時にネットワークがない場合2...

ページ リファクタリング スキル - Javascript、CSS

JS、CSSについてCS: ...上部のスタイルシートCSS式を避ける外部JS、CSSの使用JSと...

JavaScript 開発における標準コミットメッセージの重要性の詳細な説明

目次標準コミットメッセージの重要性コミットするコミットリント依存関係をインストールする.commit...

Alibaba Cloud Server への Web プロジェクトのデプロイについて (5 つの手順)

1.まずAlibaba Cloudのウェブサイトにログインしてアカウントを登録し、サーバータイプを...

MySQL 文字列分割操作 (区切り文字を含む文字列のインターセプション)

区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...

Alibaba Cloud Server Ubuntu 設定チュートリアル

Alibaba Cloud のカスタム Ubuntu イメージのインポートには、OSS スナップショ...

きちんとしたHTMLマークアップを使用してページを構築します

インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...

vue3 学習ノートにおける axios の使用の変更の概要

目次1. axioの基本的な使い方2. クロスドメインの問題を解決するには? 3. パッケージ4. ...

js での遅延読み込みとプリロードの具体的な使用法

遅延読み込み(レイジー読み込み)とプリロードは、Web 最適化によく使用される手段です。 。 1. ...

Vue + 要素を使用して背景データをオプションに動的に表示する

必要:ハードコードされたデータの代わりに、セレクター内のオプション値の動的な表示を実装します。私のロ...