Добро пожаловать на BlackSAMP - ФОРУМ

  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

Гайд Эволюция разработки веб-приложений: От SPA до MPA и обратно, но уже с Islands Architecture

Количество просмотров: 85

Sergey_Guchi

Редактор
Редактор
Регистрация
27 Окт 2024
Сообщения
3
Реакции
0
Баллы
1
Современная веб-разработка находится в постоянном движении. Мы видели взлет и падение SPA (Single Page Application), восхищались MPA (Multi Page Application) за их SEO-дружелюбность и скорость загрузки, а теперь готовы к новому подходу - Islands Architecture. В этой статье мы рассмотрим эволюцию архитектур веб-приложений и подробно разберем, что такое Islands Architecture, почему она становится популярной и как ее использовать для создания быстрых, доступных и удобных веб-сайтов.

Раздел 1: SPA - Все на одной странице (иногда слишком много)

SPA стали популярными благодаря своей интерактивности и "десктопному" опыту в браузере. JavaScript фреймворки, такие как React, Angular и Vue.js, упростили разработку сложных интерфейсов, но у SPA есть и недостатки:

• SEO-проблемы: Изначально поисковые роботы плохо индексировали SPA, хотя сейчас эта проблема в значительной степени решена.
• Задержка загрузки: Загрузка всего приложения сразу может занять много времени, особенно на медленных соединениях.
• JavaScript-зависимость: Если JavaScript отключен, сайт перестает работать.

Раздел 2: MPA - Классика жанра (но не всегда удобна)

MPA - это традиционный подход, когда каждая страница сайта загружается отдельно. У MPA есть свои преимущества:

• Отличное SEO: Каждая страница может быть оптимизирована под конкретный запрос.
• Быстрая начальная загрузка: Пользователь сразу видит контент, а не ждет загрузки всего приложения.
• Работает без JavaScript: Основной контент доступен даже если JavaScript отключен.

Но у MPA есть и недостатки:

• Медленные переходы между страницами: Каждый переход требует полной перезагрузки страницы.
• Больше работы для разработчиков: Необходимость дублирования кода и логики на каждой странице.
• Менее интерактивный опыт: Перезагрузка страницы каждый раз прерывает пользовательский опыт.

Раздел 3: Islands Architecture - Лучшее из двух миров

Islands Architecture - это гибридный подход, который сочетает преимущества SPA и MPA. Суть в том, что страницы сайта загружаются как обычные HTML-страницы (MPA), но некоторые интерактивные элементы (острова) "гидратируются" с помощью JavaScript (SPA).

• Быстрая начальная загрузка: Пользователь видит контент сразу, как в MPA.
• Интерактивность: Отдельные компоненты страницы могут быть интерактивными, как в SPA.
• SEO-дружелюбность: Весь контент доступен для поисковых роботов.
• Постепенная гидратация: JavaScript загружается и выполняется только для тех компонентов, которые этого требуют, что улучшает производительность.

Как это работает?

Представьте себе веб-страницу, состоящую из нескольких независимых компонентов:

• Статический контент: Текст, изображения, которые не требуют JavaScript.
• Интерактивные "острова": Например, слайдер, форма, карта.

Страница загружается как обычный HTML, а затем, по мере необходимости, JavaScript "подключается" только к интерактивным элементам ("островам"), делая их динамическими.

Раздел 4: Инструменты для Islands Architecture

Несколько фреймворков и библиотек облегчают разработку с использованием Islands Architecture:

• Astro: Один из самых популярных фреймворков для статических сайтов и Islands Architecture. Поддерживает множество JavaScript фреймворков (React, Vue.js, Svelte) и предлагает отличную производительность. ([https://astro.build/](https://astro.build/))
• Marko: Фреймворк от eBay, предназначенный для создания масштабируемых и производительных веб-приложений с использованием Islands Architecture. ([https://markojs.com/](https://markojs.com/))
• Qwik: Фреймворк, который фокусируется на максимальной скорости загрузки и использует "resumability" вместо гидратации. ([https://qwik.builder.io/](https://qwik.builder.io/))
• 11ty (Eleventy): Генератор статических сайтов, который позволяет создавать веб-сайты с использованием различных шаблонизаторов и

языков. ([https://www.11ty.dev/](https://www.11ty.dev/))

Раздел 5: Практический пример (Astro):

Предположим, у вас есть сайт блога. Статьи, навигация и футер могут быть статическими HTML-компонентами. А форма комментариев может быть интерактивным "островом", реализованным с помощью React.

В Astro это можно сделать следующим образом:

JSX:
// src/components/CommentForm.jsx (React компонент)
import React, { useState } from 'react';

function CommentForm() {
  const [comment, setComment] = useState('');

  const handleSubmit = (event) => {
    event.preventDefault();
    // Отправка комментария на сервер
    console.log('Комментарий:', comment);
    setComment('');
  };

  return (
    <form onSubmit={handleSubmit}>
      <textarea value={comment} onChange={(e) => setComment(e.target.value)} />
      <button type="submit">Отправить</button>
    </form>
  );
}

export default CommentForm;
astro:
// src/pages/blog-post.astro
import CommentForm from '../components/CommentForm.jsx';
---

<Layout title="Заголовок статьи">
  <article>
    <h1>Заголовок статьи</h1>
    <p>Содержание статьи...</p>
    <CommentForm client:load /> // client:load - Astro загрузит этот компонент только после загрузки страницы
  </article>
</Layout>
client:load - это директива Astro, которая указывает, что компонент CommentForm должен быть "гидратирован" только после загрузки страницы.

Заключение:

Islands Architecture - это перспективный подход к разработке веб-приложений, который позволяет создавать быстрые, доступные и интерактивные сайты. Он сочетает преимущества MPA и SPA, предлагая отличный пользовательский опыт и хорошую производительность. Если вы хотите создавать современные веб-приложения, обязательно изучите Islands Architecture и инструменты, которые ее поддерживают.
 
Сверху Снизу