Перейти к содержанию

Фронтенд

HTML, CSS, JavaScript, React, Vue, Angular, Svelte, UI фреймворки! Адаптивная верстка, оптимизация, Webpack/Vite, SSR. Помощь новичкам, экспертные кейсы, тренды (PWA, JAMstack).

15 Темы 36 Сообщения

Подкатегории


  • Делитесь опытом, задавайте вопросы и обсуждайте Angular. Найдите ответы по разработке на Angular: компоненты, директивы, роутинг, RxJS, NGRX, NGXS, оптимизация и лучшие практики. Актуальные туториалы, решения ошибок и тренды Angular 12+.

    0 Темы
    0 Сообщения
    Нет новых сообщений
  • Обсуждайте Vue: компоненты, Vuex, Vue Router, Composition API! Создавайте SPA, оптимизируйте приложения, решайте ошибки. Помощь новичкам, советы по Vue 3.0+, интеграция с Nuxt.js и Vite. Делитесь кодом, изучайте тренды.

    3 Темы
    11 Сообщения
    kirilljsK
    @Hater надо
  • Обсуждаем React: JSX, Redux, React Hook Form, MobX, Custom Hooks, Хуки, Zustand, Vite, Webpack, MUI. Поделись опытом, задай вопросы и получи ответы от сообщества разработчиков React. Узнай, как создавать мощные и масштабируемые приложения с помощью React и его экосистемы.

    9 Темы
    13 Сообщения
    kirilljsK
    Each child in a list should have a unique "key" prop Пример: {items.map(item => <div>{item.name}</div>)} Решение: Добавить уникальный key: {items.map(item => <div key={item.id}>{item.name}</div>)}
  • обсуждение SSR, SSG, API Routes, ISR, оптимизации производительности. Советы по роутингу, деплою (Vercel), интеграции с TypeScript, Tailwind. Решение ошибок, лучшие практики, кейсы. Обмен опытом и помощь от сообщества разработчиков

    2 Темы
    2 Сообщения
    kirilljsK
    Инкрементальная статическая регенерация (ISR) в Next.js предлагает мощный способ сочетания статического и динамического контента. Благодаря возможности обновления статического контента без необходимости полной переработки сайта, ISR обеспечивает более масштабируемый и эффективный подход к управлению страницами. Это позволяет значительно снизить нагрузку на сервер, обрабатывать большие объемы контента и гарантировать, что пользователи видят актуальную информацию без ожидания полной регенерации всех страниц. Мы можем обновлять статический контент, не создавая сайт заново. Это позволяет уменьшить нагрузку на сервер, предоставляя заранее отрендеренные статические страницы для большинства запросов. Мы можем обрабатывать большое количество контентных страниц, прежде чем время следующей генерации станет долгим. Давайте начнем с примера: export const revalidate = 30 export const dynamicParams = true export async function generateStaticParams() { const posts = await fetch('https://site.ru/posts/').then((res) => res.json() ) return posts.map((post) => ({ id: String(post.id), })) } export default async function Page({ params }) { const post = await fetch(`https://site.ru/posts/${params.id}`).then( (res) => res.json() ) return ( <main> <h1>{post.title}</h1> <p>{post.content}</p> </main> ) } Ну и как это работает? Все запросы к этим страницам (например, /post/1) кэшируются и обрабатываются мгновенно. После 30 секунд следующий запрос все еще будет показывать кэшированную (устаревшую) страницу. Кэш становится недействительным, и новая версия страницы начинает генерироваться в фоновом режиме. Как только новая версия успешно сгенерирована, Next.js отобразит и кэширует обновленную страницу. Если будет запрошена страница /post/12, Next.js создаст и кэширует её по мере необходимости. Если вам нужна более точная настройка, можно использовать валидацию по запросу, но если вам нужны данные в реальном времени, стоит рассмотреть возможность перехода на динамическую обработку. Валидация по запросу с помощью revalidatePath Next.js позволяет вручную очищать кэш конкретной страницы или маршрута. То есть, когда определённый контент обновляется, вместо того чтобы пересоздавать все страницы, вы можете обновить только изменённую страницу или контент. Если вы хотите, чтобы страница обновлялась немедленно при внесении изменений (например, когда добавляется новый пост), вы можете запустить этот процесс, используя функцию revalidatePath. Другими словами, вы можете сделать так, чтобы новый контент появлялся сразу после его добавления. 'use server' import { revalidatePath } from 'next/cache' export async function createPost() { revalidatePath('/posts') } Валидация по запросу с помощью revalidateTag В приложениях Next.js вы можете вручную очищать кэш, помечая определённые данные или контент. Это используется для очистки всего кэша данного контента, когда он обновляется. Когда контент изменяется, пользователи видят актуальные данные. export default async function Page() { const data = await fetch('https://api.vercel.app/blog', { next: { tags: ['posts'] }, }) const posts = await data.json() // ... } После этого вы можете использовать функцию revalidateTag: 'use server' import { revalidateTag } from 'next/cache' export async function createPost() { revalidateTag('posts') } ISR не поддерживается при создании статической экспорта. Если у вас есть несколько запросов на получение данных в статически рендеренной маршруте, и каждый из них имеет разную частоту регенерации, будет использоваться наименьшее время для ISR. Однако эти частоты регенерации всё равно будут учитываться в кэше данных. Если любой из запросов на получение данных в маршруте имеет время регенерации 0 или явный параметр no-store, маршрут будет динамически рендериться. Промежуточное ПО не будет выполняться для запросов пользователей по запросу, что означает, что любые изменения путей или логика в промежуточном ПО не будут применены. Убедитесь, что вы выполняете регенерацию для точного пути. Например, используйте /post/1, а не изменённый /post-1. Заключение ISR является оптимальным решением для проектов, в которых контент обновляется часто, но полная динамическая рендеризация не требуется. Однако в сценариях, где важны данные в реальном времени, более подходящим может быть переход на динамическую обработку.
  • 0 Темы
    0 Сообщения
    Нет новых сообщений
  • Vue.js и React — необычное сравнение

    10
    1
    3 Голоса
    10 Сообщения
    132 Просмотры
    D
    Vue SFC (однофайловые компоненты) — как аквариум: HTML, JS, CSS плавают рядышком, но не мешают друг другу. JSX — это когда рыбы, водоросли и фильтры свалены в одну кучу, зато можно собрать подводный велосипед.