検索
ホームページウェブフロントエンドjsチュートリアルVue アプリのビルド プロセス: ロールアップとロールダウン

The Build Process of a Vue App: Rollup vs Rolldown

アンディ・リー著

ビルド ツールは、最新の Web 開発に不可欠であり、生のコードをブラウザーが理解して効率的に実行できるものに変換するエンジンとして機能します。高速で信頼性の高いビルド ツールがないと、開発サーバーを起動するときにイライラするほど長い起動時間に直面する可能性があり、単純なコード変更ですらブラウザに反映されるまでに貴重な数秒を要し、開発フローと生産性が中断される可能性があります。

この記事では、Vite、esbuild、Rollup、およびアップアンドRolldown と呼ばれる Evan You (Vue.js と Vite.js の作成者) によって構築されているツールです。

まず、Vite から始めましょう。


Vite の現在のビルド プロセス

他の多くのフレームワークと同様、Vue.js はビルド ツールとして Vite を使用しています。

Vite には、開発と運用という 2 つの異なるモードがあります。これらはバックグラウンドで別の方法で実装されます。

The Build Process of a Vue App: Rollup vs Rolldown

Vite は、開発環境と運用環境に異なるビルド戦略を使用して、それぞれの固有のニーズに合わせて最適化します。開発中は、スムーズな開発者エクスペリエンスを実現するために、迅速なフィードバックと迅速なホット モジュール交換 (HMR) を提供することに重点が置かれています。運用環境では、エンド ユーザー向けに最適化されたパフォーマンスの高いバンドルを生成することに優先順位が移ります。

Vite が開発ビルドをどのように処理するか、その革新的なアプローチが真価を発揮する場所を見てみましょう。


開発モードの Vite

開発モードでは、ビルド速度が非常に重要です。 Vite は、変更のたびにコードをバンドルするのではなく、変更されたファイルを ESM 形式 (Vue コンポーネントの <script> コードなど) で直接提供するため、最小限の処理でブラウザを迅速に更新できます。</script>

実際には、Vite は TypeScript コードをブラウザ互換の JavaScript に変換します。開発ビルドに必要な手順は実稼働環境 (すぐに説明します) よりも少ないですが、特に数秒以内に変更をブラウザーに表示する必要があるため、コードを迅速に変換することは依然として困難です。

Vite が Go で書かれた高性能ツールである esbuild を採用しているのはそのためです。 Go は機械語 (プロセッサが実行できる低レベルのバイナリ命令) に直接コンパイルするため、esbuild は並外れた速度を実現します。これは、最新の開発サーバー設定にとって重要な要件です。


実稼働モードの Vite

本番環境ではビルド速度が重要ですが、それは最優先事項ではありません。実稼働ビルドを作成する場合、ビルド ツールに関係なく、ある程度の待ち時間が発生することが予想されます。一度に 1 つのファイルとその依存関係のみを処理する開発モードとは異なり、運用ビルドではすべてのコードを最初からバンドルする必要があるため、インスタント ビルドは不可能です。

さらに、運用ビルドでは追加の手順が必要になることがよくあります。たとえば、古いブラウザ用に JavaScript コードをトランスパイルする必要がある場合があります。これは、最新のブラウザを簡単に使用できる開発中は不要です。

その他の重要な実稼働ビルド手順には、縮小化 (機能を維持しながらコードから不要な文字を削除する) とコード分割 (オンデマンドで読み込まれるコードを小さなチャンクに分割する) が含まれます。これらのプロセスは、コードの実行時のパフォーマンスに直接影響します。

実稼働ビルドの最優先事項は、ユーザーのブラウザでコードが効率的に実行されるようにすることです。ユーザーがサイトに頻繁にアクセスする一方で、実稼働ビルドは不定期に行われるため、これはビルド速度よりも優先されます。

Vite は、Vite で直接使用できる豊富なプラグイン エコシステムのため、本番バンドルに Rollup を選択しました。 Vite のプラグイン アーキテクチャは Rollup のアーキテクチャを反映しているため、この互換性はプラグイン コミュニティの繁栄を促進し、Vite の広範な採用に貢献しました。

?
要約すると: Vite は開発ビルドには esbuild (速度を最適化) を使用し、本番ビルドには Rollup (プラグインで知られる) を使用します。

このセットアップはうまく機能していますが、大きな変更が行われます。Vite はすぐに esbuild Rollup の両方を Rolldown と呼ばれる新しいツールに置き換えます。

Rolldown について調べる前に、Rolldown の発明につながった Vite の現在のセットアップの課題を調べてみましょう。


Viteの問題点

ビルド ツールまたはバンドラーがソース コードを処理するとき、最初に抽象構文ツリー (AST)、つまりコードの構文と構造を表すツリー状のデータ構造が作成されます。たとえば、関数宣言は AST の「FunctionDeclaration」ノードになり、パラメーターと本体の子ノードが含まれます。

同じソース コードを解析するために 2 つの異なるツールを使用することは、単一のツール (または互換性のあるツールのセット) がプロセス全体を通じて解析結果を再利用できるため、コード変換の効率が悪くなります。

esbuild は Vite の開発モードを処理しますが、縮小化を通じて実稼働モードでも役割を果たします。これは、esbuild と Rollup がビルド プロセスで連続して動作することを意味します。 React アプリケーションの場合、esbuild と Rollup に加えて SWC (Rust で書かれた別のビルド ツール) が追加されるため、プロセスはさらに複雑になります。

複数のツールを順番に使用すると、各ツールが個別にコードを解析し、ツール間で結果を渡す必要があるため、非効率が生じます。 Rollup の堅牢なプラグイン エコシステムは実稼働ビルドに価値をもたらしますが、esbuild と比較して速度が遅いため、トレードオフが生じます。理想的なソリューションは、esbuild のパフォーマンスと Rollup の拡張性を組み合わせたツールです。これはまさに Rolldown が達成しようとしていることです。


ロールダウンの概要

The Build Process of a Vue App: Rollup vs Rolldown

Rolldown は、Go と同様に直接マシンコードにコンパイルされるプログラミング言語である Rust で書かれたバンドラーです。これは、Rolldown が esbuild と同様の速度を達成することを意味します。

Rolldown は Rollup と同様のプラグイン API を共有しているため、既存の Vite 互換プラグインのほとんどは、Rolldown を搭載した新しいバージョンの Vite とシームレスに動作します。

本質的には、パフォーマンスが向上するだけで、現在と同じように Vite を使用できるようになります。

では、どれくらい高速になっているのでしょうか? 速度が主なセールスポイントである場合、新しいツールの採用を正当化するには、大幅に高速化する必要がありますよね?

Evan You によるベンチマークによると、Vue のコア ソース コードのバンドル速度をテストする場合、ロールダウンのビルド セットアップはロールアップ ベースのセットアップより 7 倍以上高速に実行されます。

このベンチマークは、特に本番環境のビルド時間を測定します。 開発についてはどうですか?

現在、Vite は開発に esbuild を使用しています。 Evan You のベンチマークによると、Rolldown は esbuild のほぼ 2 倍の速度で実行されます。 esbuild はすでに高性能であるため、この改善はロールアップ比較よりも控えめです。

これらのパフォーマンス アップグレードはすべて、ロールダウンの基礎となるツール スイートによって強化されています。これらには、新しいパーサー、リンター、リゾルバー、トランスフォーマーなどが含まれており、これらはすべて Oxc プロジェクト (Rolldown チームによって作成) の一部です。

Oxc は JavaScript 言語ツールのセットです。これらのツールはロールダウンで使用されますが、ロールダウン以外のコンテキストで個別に使用することもできます。たとえば、Oxc リンターは ESLint よりも高速であるため、CI ワークフローで使用して、ESLint を実行する前にコード エラーをすばやくキャッチできます。

Oxc ツールは、パフォーマンスを主な目標としてゼロから作成されているため、一般に他の同様のツールよりも高速です。


ヴィテの未来

Rolldown はまだ本番環境に対応していませんが、Rolldown の統合を特徴とする Vite のアルファ リリースは 2024 年末までに予定されています。今後数か月間、Vue、Vite、Rolldown の最新開発について引き続きレポートしていきます。

Vite についてさらに詳しく知りたい場合は、Vite の作成者である Evan You 自身が教える Vue Mastery のコース「Lightning Fast Builds」をご覧ください。

元々は、2024 年 12 月 4 日に https://www.vuemastery.com で公開されました。


以上がVue アプリのビルド プロセス: ロールアップとロールダウンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

JavaScript、C、およびブラウザの関係JavaScript、C、およびブラウザの関係May 01, 2025 am 12:06 AM

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、型を使用してストリーミングしますnode.jsは、型を使用してストリーミングしますApr 30, 2025 am 08:22 AM

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

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