このバージョンの Next.js では、クライアント コンポーネントとサーバー コンポーネントの概要、その違い、それぞれをいつ使用するかを検討し、それらを実装するのに役立つ実践的な例を提供します。プロジェクト。
Next.js では、クライアント コンポーネントとサーバー コンポーネントの間には明確な違いがあります。この分離により、コードを処理する場所と方法についてより適切な決定を下せるようになり、パフォーマンスとユーザー エクスペリエンスに直接影響を与えることができます。
クライアント コンポーネントはブラウザ内で実行され、対話性とウィンドウやドキュメントなどのブラウザ API へのアクセスを可能にします。これらは、アプリケーションの動的なインターフェイスを管理し、ユーザーのアクションに応答するのに最適です。
'use client'; // Indicates that this component runs on the client import { useState } from 'react'; export default function ClientComponent() { const [count, setCount] = useState(0); return (); }Client-side Counter
The count value is: {count}
この古典的な例は、ユーザーがページと直接対話できるようにするカウンターです。 「使用クライアント」。ディレクティブは、このコンポーネントがブラウザーで実行されるように Next.js に指示します。
サーバー コンポーネントは、Next.js アーキテクチャの新機能です。これらのコンポーネントはサーバー上で処理され、すでにレンダリングされた HTML をブラウザーに送信します。これにより、クライアントに到達する JavaScript の量が減り、最初のページの読み込みが高速化されます。
export default async function ServerComponent() { const data = await fetch('https://api.example.com/data').then(res => res.json()); return (); }Data from the Server
{data.message}
この例では、コンポーネントがサーバー上でレンダリングされ、API からデータを取得して、レンダリングされた HTML を返します。これは、データ取得ロジックがクライアントに到達しないことを意味し、パフォーマンスが向上します。
Next.js は、サーバーとクライアントのコンポーネントがどのように対話するかを改良します。最も注目すべき改善点のいくつかを次に示します:
コンポーネントは、デフォルトで サーバー コンポーネントになりました。これは、クライアント コンポーネント.
を明示的に必要としない限り、ブラウザに送信する JavaScript の量を減らしてアプリケーションが自動的に最適化されることを意味します。ストリーミングにより、コンポーネントを部分的に読み込むことができます。これは、すべてのコンテンツが利用可能になるのを待たずに、準備が整うとページのセクションを読み込むことができるため、大きなページやデータ量の多いページに便利です。
Next.js を使用すると、コンポーネントをサーバーで実行するかクライアントで実行するかを簡単に決定できるようになり、アプリケーションの最適化方法をより詳細に制御できるようになります。
Hydration は、サーバーから送信された静的 HTML をクライアント上でインタラクティブなページに変換するプロセスです。 Next.js を使用すると、水分補給がより効率的かつ選択的になり、絶対に必要な場合にのみ発生します。
// ServerComponent.tsx export default async function ServerComponent() { const data = await fetch('https://api.example.com/products').then(res => res.json()); return (); } // ClientComponent.tsx 'use client'; import { useState } from 'react'; export default function ClientComponent() { const [search, setSearch] = useState(''); return (Product List (Server-rendered)
{data.map((product: any) => (
- {product.name}
))}setSearch(e.target.value)} placeholder="Search product" />); }Searching for: {search}
この例では、サーバーは製品のリストをレンダリングしてクライアントに送信しますが、検索コンポーネントは対話型でクライアント側で管理されます。
Next.js は、Web アプリケーションの開発方法における転換点となり、パフォーマンスとユーザー エクスペリエンスの両方を最適化します。 サーバー コンポーネントとクライアント コンポーネントを効率的に使用すると、初期負荷を軽減して高速で動的なアプリケーションを構築できます。
フレームワークの機能を最大限に活用するには、サーバー コンポーネントとクライアント コンポーネントの間で正しく選択することが重要です。これらの新しい改善により、情報に基づいた意思決定が容易になり、高速なだけでなくインタラクティブでスケーラブルなアプリケーションの作成が容易になります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3