開発者向けの Next.js と React の違い
公開: 2022-12-13React は、ユーザー インターフェイスを構築するための最も一般的なライブラリの 1 つです。Next.js は、ユーザー インターフェイスを構築するための最も一般的なフレームワークの 1 つです。
Next.js は React を使用して構築されています。 したがって、それらの間には多くの類似点があります。 この 2 つを混同するのは明らかです。
これら 2 つを深く掘り下げて、混乱を明確にする上でどのように異なるかを見てみましょう。 Reactから始めましょう。
React: はじめに

React は、JavaScript を使用してユーザー インターフェイスを構築するためのオープンソース ライブラリです。 React は、単一ページの Web アプリケーションを作成するために使用されます。 単一ページのアプリケーションとはどういう意味ですか? アプリケーションには 1 つの HTML ドキュメントがあり、必要に応じてそれを更新します。
単一ページ Web アプリケーションの作成は、現在最高のピークに達しています。 React は、この分野で現在最も人気のあるライブラリであると言えます。 誇張ではありません。
多くの React パッケージが利用可能で、開発者の生活を楽にします。 Web アプリケーションの構築に関しては、React を使用してあらゆるタイプの Web アプリケーションを作成できます。
React は Facebook によって開発されました。 今では、誰でもそれに貢献できます。 そしてそれはFacebookによって維持されています。
Reactのいくつかの機能を確認してみましょう。
仮想DOM
Web アプリケーションは、データの取得中にローダーを表示し、取得したデータで Web アプリケーションのその部分を更新するなど、他の部分に影響を与えることなく、特定の部分を更新します。 もっと技術的に言えば、ブラウザの DOM を更新することです。
React のようなライブラリがなければ、普通の JavaScript を使っていたでしょうが、DOM 操作は非常にコストがかかるため非効率的です。 React は、この問題に対処するために仮想 DOMの概念を導入しています。
仮想 DOM は実際の DOM のコピーです。 更新がある場合、React はまず仮想 DOM でそれらを更新し、実際の DOM と比較します。 そして、React は、変更があり、変更された部分のみが存在する場合にのみ、実際の DOM を更新します。 そのため、実際の DOM での操作が少なくなり、更新時間が大幅に短縮されます。
React のようなライブラリがなければ、Web は非常に遅くなっていたでしょう。
コンポーネント
コンポーネントは、React のユーザー インターフェイスの構成要素です。 React のすべてがコンポーネントであると言えます。 これらのコンポーネントは、React アプリケーション全体で再利用できます。
いくつかのスタイルのセットを持つボタンがあるとしましょう。 React では、渡したプロパティに基づいたスタイルでボタンをレンダリングするコンポーネントを作成できます。 props を使用して、必要に応じてそのボタン コンポーネントをカスタマイズできます。 これが、React アプリケーション全体でコンポーネントを再利用する方法です。
コンポーネントは、アプリケーションを小さな UI ブロックに編成するのに役立ちます。 ご希望に合わせてアレンジいたします。
JSX

JSXというJSでHTMLを書くことができます。 HTMLに似ていますが、JSXです。 JavaScript を JSX で使用して、すべての HTML 属性にアクセスできます。
JSX は、UI の構造を定義するために使用されます。 すべてのコンポーネントは、DOM でレンダリングされる JSX を返します。
一方向のデータフロー
コンポーネントを小さくするには、コンポーネント間を流れるデータが必要です。 コンポーネント間にデータ フローがない場合は、すべてを 1 つのコンポーネントに収める必要があります。
React は、親から子への一方向のデータ フローに従います。 React では、親コンポーネントから子コンポーネントにデータを渡すことができます。 子コンポーネントは、親コンポーネントの状態を直接変更できません。 コールバックを渡すことで実行できます。
単方向のデータ フローにより、デバッグが簡単になります。 すべてのコンポーネントが状態を維持する必要がないため、コンポーネントはよりシンプルに見えます。
JavaScript を知っていれば、React を学ぶのはとても簡単です。 React のドキュメントで十分に使い始めることができます。
Next.js: はじめに
Next.js は、Web アプリケーションを構築するための反応フレームワークです。 Reactの上に構築されています。 ヴェルセルによって作成されました。 そのため、React のすべての機能が利用可能になります。 Next.js の特別な点は何ですか? 反応コンポーネントとは別に、それを特別なものにするいくつかの機能を見てみましょう。

プレレンダリング
Next.js はすべてのページを事前にレンダリングします。 事前にレンダリングすると、静的 HTML を使用してブラウザーにページがすばやく読み込まれます。 その後、そのページに必要な JavaScript をロードします。 ページのパフォーマンスと SEO を向上させます。
2 種類のプリレンダリングがあります。 1 つは Static Site Generation (SSG) で、もう 1 つは Server Side Rendering (SSR) です。 SSG はビルド時に HTML を生成し、他のリクエストで同じものを再利用します。
SSR はリクエストごとに HTML を生成するため、SSG よりも少し遅くなります。 Next.js は、SSR の使用が必須になるまで SSG を使用することを提案しています。
Next.js は、現在表示中のページにリンク (Link コンポーネントを使用) があるページもプリロードします。 このクールな機能により、移動中のページの読み込みが非常に高速になります。
ルーティング
Next.js にはルーティング システムが組み込まれています。 ディレクトリベースのルーティング システムをサポートしています。 ルートを作成するには、特定のディレクトリにページを作成する必要があります。 反応では、これを達成するためにパッケージを使用する必要があります。
API
Express のように Next.js で API を作成できます。 Next.js でフルスタック アプリケーションを作成する新しい可能性が開かれます。 専用のサーバー側フレームワークほど効率的ではないかもしれませんが、機能します。
その他の機能
画像の最適化、組み込みの CSS サポート、各ページのメタ タグ (より良い SEO のため) などの他の機能があります。 今まで目にしたすべての機能は、React 機能の上に追加された Next.js の機能です。
Next.js はリリース以来、多くの人気を得ています。 React に精通している場合、Next.js を学ぶことは非常に重要です。 しかし、最初に反応することを学ぶことは必須ではありません。 最初は誰からでも始められます。 どちらも JavaScript が必須です。

これまで、React と Next.js のさまざまな機能を見てきました。 両者を比較してみましょう。
React と Next.js

React と Next.js には多くの類似点があります。 それらの間に多くの類似点がある理由はすでにわかっています。 それらのコアコンセプトは同じです。 それらのいくつかを並べて比較してみましょう。
コード
簡単な Hello World を見てみましょう。 react と next.js のコンポーネント。
反応する
function App() { return ( <div className="app"> Hello World! </div> ); } export default App;
Next.js
export default function Home() { return ( <div className="app"> Hello World! </div> ) }
コードを見ると、両者に違いはありません。
フォルダ構造
React は特定のフォルダー構造を持たないライブラリです。 好みやユースケースに基づいて、フォルダーとファイルを配置できます。
Next.js には、従うべき厳密なフォルダー構造もありません。 ただし、ルーティングのためだけに、 pages
フォルダー内にページを作成する必要があります。 これが next.js にある唯一の制限です。 反応のように、他のすべてのフォルダーとファイルを配置できます。
パフォーマンス
Next.js アプリケーションは、React アプリケーションと比較して少し高速です。 Next.js はプリレンダリング技術を使用してそれらを作成します。 しかし、React アプリケーションを高速化できないわけではありません。 Reactでも同じことができます。 私たちはそのために特別な努力をする必要があります。
TypeScript
TypeScript は、大規模なアプリケーションで重要な役割を果たします。 TypeScript がなければ、ほとんどの開発者はアプリケーションのデバッグに腹を立てるでしょう。 React と Next.js の両方が TypeScript をサポートしていることを心配する必要はありません。
その他の機能
React と Next.js はどちらも作成者によって大幅に維持されています。 コミュニティは、他のフロントエンド ライブラリやフレームワークと比較して、両者にとって非常に大規模です。 React と Next.js を使用してアプリケーションを開発しているときに行き詰まった場合、インターネットで解決策を見つける可能性が高くなります。
それらのドキュメントは、始めるのに非常に適しています。 私たちは何をぐずぐずしているんですか? React と Next.js のドキュメントを参照して、それらを使い始めてください。
概要
特徴 | 反応する | Next.js |
コード | JavaScript を知っていれば、React アプリケーションをコーディングするのに十分です。 | コードは、React の上に構築されているため、React に似ています。 |
フォルダ構造 | フォルダー構造に厳密なガイドラインを課さないでください。 | フォルダー構造の一部に従う必要があります (ページ ルーティング)。 |
TypeScript | タイプスクリプトをサポートしています。 | タイプスクリプトもサポートしています。 |
サーバー側のレンダリング | サーバー側レンダリングのサポートが組み込まれていません。 | プリフェッチ (SSG & SSR) を使用したサーバー側レンダリングのサポートが組み込まれている |
パフォーマンス | Next.js に比べて少し遅い | Reactに比べると少し速いです。 |
コミュニティとメンテナンス | Facebook によって適切に管理されており、大規模なオープンソース コミュニティがそれをサポートしています。 | Vercel は、それを維持する素晴らしい仕事もしています。 また、オープンソース コミュニティ サポートもあります。 |
ドキュメンテーションと学習 | 初心者でも十分に文書化されています。 JavaScript の知識があればいつでも始められます。 | 優れたドキュメントがあり、React の概念を知っていると学習が速くなります。 |
どれを選ぶ?
まあ、誰もその質問に答えることはできません。 プロジェクトの種類、目的、目的などによって異なります。 それらのすべての機能とその要件を確認することで結論を出すことができます。
すぐに結論付けられるのは、SEO です。 プロジェクトで多くの SEO が必要な場合は、Next.js を使用することをお勧めします。
結論を得るために、すべてのシナリオでさまざまな要因を検討しました。 結論が出ない場合は、React を使用することをお勧めします。 また、コードの移行にはそれほど時間がかからないため、早い段階でいつでも別のものに切り替えることができます。 時間がかからない理由がよくわかります。
どちらも良いコミュニティを持っています。 React と Next.js はフロントエンド ドメインで広く使用されているため、React と Next.js を使用しているときに直面するほとんどすべての問題の解決策を見つけることができます。 Web アプリケーションを構築するためのパッケージがたくさんあります。 React と Next.js の両方で同じパッケージを使用できます。
決断は常に難しいものです。 しかし、決断を下すことを恐れないでください。
結論
Next.js は React のスーパーセットであると言えます。 Next.js は、それを使用する React 機能に加えて、より多くの機能で作成されます。 したがって、それらを比較することは理想的ではありません。 それでも、私たちはやり遂げました。 とにかく、これで React と Next.js の両方についてトップレベルのアイデアが得られました。
ご覧のとおり、Next.js の追加機能を除いて、それらの間に大きな違いはありません。これは明らかです。 今日は以上です。 ちょっとした提案でこれを終わらせましょう。
フロントエンド フレームワークを学習する場合は、まず React から始めることをお勧めします。 React の概念により、Next.js の学習は簡単になります。
また、ReactJS を学習するための最良のリソースを探索することもできます。