Svelte vs React: 機能、パフォーマンスなど
公開: 2023-02-25現在の Web 開発エコシステムでは、JavaScript フレームワークは、ほぼすべての Web 開発者が開発プロセスをより簡単かつ生産的にするために使用しているものです。 しかし、私たちが使用するテクノロジーが向上し続けるにつれて、フレームワークも進化し続け、より優れた、よりシンプルな、時にはさらに複雑なフレームワークがリリースされています.
このように多くの選択肢があるため、ニーズに合った最適なフレームワークを選択することは非常に困難になる可能性があります。
この記事では、現時点で最大の JavaScript フレームワークの 2 つ、Svelte と React について説明します。 それらを正面から比較し、各フレームワークの長所と短所をリストアップして、いずれかを選択できるようにします.
スベルトとは?
Svelte は、高速で柔軟な、サイバネティックに強化された Web アプリケーションを構築するためのフレームワークです。 また、GitHub リポジトリで 60,000 を超えるスターを獲得しており、「最も満足している開発者」がいる「最も愛されている JavaScript フレームワーク」としても知られています。
Svelte アプリケーションとコンポーネントは、JSX に似たテンプレート構文で拡張された HTML ファイルである.svelteファイルで定義されます。
歴史
Svelte は、Svelte 自体の作成者である Rich Harris によって開発された Ractive.js に由来します。 Svelte は Ractive の後継として設計されました。 2016 年にリリースされた Svelte の最初のバージョンは、基本的に Ractive でしたが、コンパイラがありました。
「Svelte」という名前は、The Guardian の Rich Harris と彼の同僚によって選ばれました。 時が経つにつれ、Svelte を知り、興味を持つ開発者が増えました。 2019 年までに、Svelte は、すぐに使用できる TypeScript をサポートする Web アプリを構築するための本格的なツールになりました。
SvelteKit Web フレームワークは 2020 年に発表され、2021 年にベータ版になりました。
主な機能
Svelte は、ユーザー インターフェイスを構築するための根本的な新しいアプローチです。 React や Vue などの従来のフレームワークは、ブラウザーで作業の大部分を行いますが、Svelte は、その作業をアプリのビルド時に発生するコンパイル ステップに移行します。
Svelte は、実行時にアプリケーション コードを解釈するのではなく、ビルド時にアプリケーションを理想的な JavaScript に変換します。 これは、フレームワークの抽象化のパフォーマンス コストを支払わず、アプリの最初の読み込み時にペナルティが発生しないことを意味します。
アプリ全体を Svelte で構築することも、既存のコードベースに段階的に追加することもできます。 コンポーネントを、従来のフレームワークに依存するオーバーヘッドなしで、どこでも動作するスタンドアロン パッケージとして出荷することもできます。
Svelteの長所と短所
他のフレームワークと同様に、Svelte には利点と欠点の両方があります。 Svelte と React の比較に専念する前に、全体像を理解することが重要です。
Svelte が開発者に提供する長所と短所を見てみましょう。
Svelteの長所
Svelte を使用する主な利点の一部を次に示します。
- 仮想 DOM なし: Svelte はコンパイラであり、仮想 DOM を使用しません。Svelte は、実行時に作業を行うのを待つのではなく、ビルド時にアプリでどのように変化するかを認識しているコンパイラです。 これは、他の Web フレームワークに対する Svelte の非常に重要な利点です。
- ボイラープレートの削減:記述しなければならないコードの量を削減することは、Svelte の明確な目標です。 Svelte は、この記事の後半で説明する、より優れた反応性、バインディング、トップレベル要素などを実装することでコードの可読性を向上させる、最小限の労力でユーザー インターフェイスを構築するのに役立ちます。
- 真のリアクティブ: Svelte はそれ自体が言語であり、デフォルトでリアクティブが有効になっています。 コードをリアクティブにするために必要な特別なコード行はありません。宣言するすべての変数はデフォルトでリアクティブです。 Svelte は、状態変化時に計算される派生宣言とステートメントもサポートしています。
- 習得が容易: Svelte は、基本的な HTML、CSS、および JavaScript/TypeScript で構成されるハイブリッド言語を提供します。 新しい概念や、JSX のような特別な構文を学ぶ必要がないため、習得が容易になります。 Svelte のドキュメントは非常に理解しやすく、詳細な組み込みのチュートリアルが特徴です。
Svelteの短所
Svelte を使用する主な欠点は次のとおりです。
- 比較的小さなエコシステム: Svelte は新しいフレームワークであるため、React などのフレームワークと比較すると、まだそれほど大きなエコシステムがありません。つまり、Svelte に関連するライブラリやツールは、React の場合ほど多くありません。
- 独自の UX: Svelte は HTML、CSS、および JavaScript/TypeScript を使用しますが、他のほとんどのフレームワークの動作とは異なる独自の要素を導入しています。 JSX に慣れていて Svelte に移行しようとすると、 export キーワードの使用方法が異なる、
onClick
の代わりにon:click
を使用するなど、いくつかの癖に気付くかもしれません。
Reactとは?
React は、JavaScript エコシステムに存在する最初の古い Web フレームワークの 1 つであり、今日最も人気があり、広く使用されている Web フレームワークです。 インタラクティブな UI を簡単かつ効率的に作成する方法を提供します。
React は JSX を使用してアプリケーションを作成し、その周りに膨大な数のライブラリが構築されているため、非常に信頼性の高いフレームワークになっています。
歴史
React は、さまざまな Web サイトの動的なインターフェイスを作成するためのツールとして、Meta によって 2013 年に作成されました。 React コンポーネントで構築された DOM 要素の表現である仮想 DOM は、React の基盤です。
それ以来、JavaScript コミュニティ全体の Web 開発を容易にするための多数の新機能を含むように進化してきました。
主な機能
React とは何かについてよく理解できたので、React の人気を高めた主な機能のいくつかを見てみましょう。
JSX
React は、レンダリング ロジックを他の UI ロジック (イベント、状態管理) と結合し、一緒に管理する必要があるという事実に基づいて開発されています。 このため、React はテクノロジを分離する (HTML と JavaScript を別のファイルに分割する) 代わりに、JSX ( JavaScript XML) を使用します。 JSX を使用すると、 JavaScript 内にマークアップを記述でき、単一の.jsxファイル内にコンポーネントのロジックとマークアップを記述できる強力な機能が提供されます。
コンポーネントベース
React では、独自の状態を管理するカプセル化されたコンポーネントを構築し、それらを構成して複雑な UI を作成します。 コンポーネント ロジックはテンプレートではなく JavaScript で記述されているため、豊富なデータをアプリに簡単に渡し、状態を DOM から切り離すことができます。
宣言的
React を使用すると、インタラクティブな UI を簡単に作成できます。 アプリケーションの各状態のシンプルなビューを設計でき、React はデータが変更されたときに適切なコンポーネントだけを効率的に更新およびレンダリングします。
React の長所と短所
React には、Svelte と同様に、フレームワークとして選択する前に知っておくべき利点と欠点がいくつかあります。
Reactの長所
React を使用することの主な利点は次のとおりです。
- コードの再利用性: React はコンポーネントを開発に利用します。これらのコンポーネントのほとんどは再利用可能であり、小道具を使用して必要に応じて変更できます。
- 効率的な SEO 最適化:一般に、検索エンジンは負荷の高い JavaScript アプリケーションの読み取りに問題があります。 React はこの問題を克服し、開発者がさまざまな検索エンジンで簡単にナビゲーションできるようにします。 React アプリはサーバー上で実行でき、仮想 DOM がレンダリングされ、通常のページとしてブラウザーに返されます。
- 大規模なエコシステム:最も古い Web フレームワークの 1 つである React は、新しいものと比較すると非常に大きなエコシステムを持っています。 これは、React ユーザーが利用できる多くのリソースと、開発関連のヘルプがたくさんあることを意味します。
- ライブラリ: React には大きなエコシステムがあるため、これは、React を中心にツールやライブラリを構築する多くの開発者がいることも意味します。 コミュニティは、何百万人もの React 開発者が定期的に使用する素晴らしいプロジェクトを継続的にリリースしています。
Reactの短所
React の欠点には次のようなものがあります。
- 学習曲線の難しさ:前に見たように、React は JSX を利用しています。これは、React を使い始めたばかりの新しい開発者向けに作られた非常に新しいテクノロジです。 多くの開発者は、JSX の学習曲線が急勾配で困難であるため、JSX の使用を好みません。
- ライブラリとしての制限: React はライブラリであり、真の Web フレームワークではありません。つまり、必要な機能や重要な開発ツールがそのままパッケージ化されていないことを意味します。 さらに、これによりアプリはセキュリティと一貫性の問題にさらされ、開発者は外部ライブラリの継続性に依存して、React アプリが常に適切に機能するようにする必要があります。
- 貧弱なドキュメント: React 環境には追跡が困難になる可能性のある絶え間ない更新があるため、React には適切なドキュメントがありません。 このため、初心者が React を使い始めるのは難しい場合があります。
Svelte vs React: 直接比較
両方の Web フレームワークの基本的な機能、長所と短所がわかったので、それらを正面から比較して、どちらが優れているか、どちらを使用する必要があるかについて結論を出すことができます。
人気
人気に関して言えば、現在、React を上回るフレームワークは他にありません。 React は State of JavaScript 2021 の時点で最も人気のある Web フレームワーク ツールです。React は 2013 年から JavaScript エコシステムの周りにあり、Svelte のような新しく開発されたフレームワークよりも優位に立っているため、Svelte と比較すると非常に合理的です。
スケーラビリティと拡張性
Svelte と React はどちらも、スケーラブルで安定したプロダクション指向のフレームワークです。 しかし、拡張性に関して言えば、React は、その巨大なエコシステムとそれを取り巻くコミュニティのおかげで、Svelte より少し有利かもしれません。
上で見たように、React 用に作成された外部ライブラリとツールが大量にあるため、React は Svelte やその比較的小さなエコシステムよりも拡張性が高くなります。
スピードとパフォーマンス
パフォーマンスと速度に関して言えば、Svelte は React に勝るものはありません。 すでに見たように、Svelte はほとんどの作業を React のようにブラウザで行うのではなく、コンパイル ステップで行います。 これにより、パフォーマンスが大幅に向上し、サーバーの起動時間が短縮されます。
Svelte のパフォーマンスを向上させる次の要素は、Virtual DOM を使用していないことです。 Svelte によると、Virtual DOM は Real DOM よりも高速かもしれませんが、遅いとのことです。 Svelte のサイトには、これに関する詳細な記事もあります。
構文と学習曲線
Svelte と React はどちらもコンポーネント ベースの開発アーキテクチャに従いますが、違いは React が JSX を使用しているのに対し、Svelte はそれ自体が言語であり、HTML、CSS、および JavaScript の 3 つの標準言語で構成されています。
さらに、Svelte コードは非常に読みやすく、不要なコードがありません。 この場合、Svelte はデフォルトで真にリアクティブであるという事実が、React よりも優れています。
学習の容易さについて言えば、Svelte は React よりも優れています。その理由は、ほとんどの開発者がフレームワークを使い始める前から HTML、CSS、JavaScript に精通しているためです。 React は JSX を使用しているため、多くの開発者は JSX が非常に複雑で理解しにくいと感じています。
ライブラリのサイズ
ライブラリのサイズについて言えば、Svelte はより軽量で、縮小されて GZip 化されたバージョンはわずか 1.7 KB です。 一方、React は約 44.5 KB 縮小され、GZip 化されています (React と ReactDOM の両方を組み合わせたもの)。
ご覧のとおり、Svelte は React よりも約 22 倍軽量です。これは、Svelte アプリがデフォルトで React アプリよりも高速にロードされることも意味します。
さらにスピードを求める場合は、ホスティング プラットフォームの選択を慎重に検討する必要があります。 Kinsta のアプリケーション ホスティング サービスは、速度やセキュリティを犠牲にすることなく、低コストで簡単な展開と管理のエクスペリエンスを求める開発者向けです。 最初から最後まで、Svelte と React アプリのデプロイは、MyKinsta ダッシュボードからわずか数分で完了します。
エコシステムとドキュメンテーション
React は JavaScript エコシステムで最も古い Web フレームワークの 1 つであるため、Svelte よりもはるかに大きなエコシステムを持っていることは上で既に説明しました。 これは、Svelte よりも React を使用する方が、サポート、コードのヘルプ、およびリソースの検索がはるかに簡単であることを意味します。
ただし、ドキュメントに関しては、Svelte が React よりも優れています。 Svelte のドキュメントは、Svelte の学習に利用できる最高のスタンドアロン リソースの一部です。組み込みのインタラクティブなチュートリアルもあります。
一方、React のドキュメントは比較的貧弱であり、インタラクティブではありません。 ただし、React チームは新しいドキュメントのリリースに取り組んでおり、現在はベータ版であり、まもなく公開される予定です。
雇用機会
The State of JavaScript 2021 によると、React は認知度と使用率の両方のランキングで 1 位、Svelte は 4 位にランクされています。
ここでは、React と Svelte の間に大きなギャップがあることがはっきりとわかります。これは、Svelte よりも React で作業する機会が多いことも意味します。
あなたが新しい開発者である場合は、採用される可能性を高めるために React から始めることをお勧めします。
動的スタイリング
React と Svelte はどちらも動的スタイリングをサポートしていますが、違いは、React が JSX を介してインライン スタイリングをサポートしているという事実にあります。 Svelte では、コンポーネント ファイル内の個別の<style></style>
ブロックにスタイルを配置します。
まとめ
React と Svelte はどちらも、ユースケースに応じて優れたユーザー インターフェイスを構築するための優れたフレームワークであり、それぞれに長所と短所があります。 ここで説明した比較に基づいて、どちらがニーズに最も適しているかを判断できるはずです.
情報に基づいた決定を下すスキルを向上させたいだけの初心者なら、ぜひ Svelte を試してみてください。 パフォーマンスと満足度に関して言えば、Svelte はあらゆる点で React より優れています。
しかし、あなたが経験豊富な開発者で、すでに確固たる地位を築いているのであれば、リソースを見つけてサポートを受けることがはるかに簡単な広大なエコシステムを備えている React が最適です。 就職が最優先の開発者にとって、React は最良の選択であり、ジュニア開発者からシニア開発者、さらにはそれ以降の求人が絶え間なく流れています。
ただし、2 つのテクノロジのどちらを選択しても、次のステップはアプリケーションのホストを選択することです。 GitHub による迅速な展開、超高速、クラス最高のセキュリティについては、Kinsta のアプリケーション ホスティング ソリューションをご覧ください。 すべてのプロジェクトに適合する計画があり、それぞれに経験豊富な開発者チームによる 24 時間年中無休の専門家サポートが付属しています。
Svelte と React のどちらを次に使用する予定ですか? また、何を構築しますか? ぜひお聞かせください。 以下のコメントセクションで共有してください。