В этой версии 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 упрощает принятие решения о том, будет ли компонент работать на сервере или на клиенте, давая вам больше контроля над оптимизацией вашего приложения.
Гидратация — это процесс, который превращает статический 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 представляет собой поворотный момент в разработке веб-приложений, оптимизируя как производительность, так и удобство использования. Эффективное использование Серверных компонентов и Клиентских компонентов позволяет создавать быстрые, динамичные приложения с меньшей начальной нагрузкой.
Правильный выбор между Серверным компонентом и Клиентским компонентом имеет решающее значение для полного использования возможностей платформы. Благодаря этим новым улучшениям стало легче принимать обоснованные решения и создавать приложения, которые не только быстры, но также интерактивны и масштабируемы.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3