JAM — это аббревиатура от JavaScript API Markup. Что это значит? Это не фреймворк или конкретная технология. Это скорее архитектурный подход. Современный способ создания, управления и распространения веб-контента.

Согласно официальному сайту, JAMStack означает:

Современная архитектура веб-разработки, основанная на клиентском JavaScript, многоразовых API и встроенной разметке.

Одна из ключевых частей архитектуры JAMStack — переключение на статику. Это означает использование генератора статических сайтов для создания вашего сайта на простом старом HTML, CSS и JS, который не меняется и может обслуживаться через CDN. Если вам нужно внести изменения, вы просто перестраиваете весь сайт. Это быстро, так как большая часть сайта остается прежней. Кроме того, развертывание занимает очень мало времени, так как это означает только копирование набора файлов.

Важно понимать, что статика не означает ограниченную интерактивность и статические данные. Ключевая часть заключается в том, что файлы HTML и JS, обслуживаемые сервером, являются статическими. Они не меняются. Однако у вас все еще есть JavaScript на клиенте. Вы можете делать все, что делаете в JS. Это означает, что вы можете получить любые данные, которые вам нужны, через вызов API (обычно REST или GraphQL) после загрузки вашей статической страницы. Ключевое отличие состоит в том, что HTML с динамическими данными создается не на сервере, а на клиенте. Конечно, во многих случаях ваш сайт действительно статичен, и вызовы API не нужны.

Как строить с помощью JAMStack

Мы уже видели, что означает JAMstack. Таким образом, для создания проекта с использованием JAMstack проект должен соответствовать следующим критериям:

JavaScript. Любое динамическое программирование во время цикла запроса/ответа обрабатывается JavaScript, который полностью выполняется на клиенте. Это может быть любой интерфейсный фреймворк, такой как React, Angular, Vue.js и т. д., или даже ванильный JavaScript.

API: все процессы на стороне сервера или действия базы данных абстрагируются в многоразовые API, доступ к которым осуществляется через HTTP с помощью JavaScript. Они могут быть созданы на заказ или использовать сторонние сервисы.

Разметка. Шаблонная разметка должна быть предварительно создана во время развертывания, обычно с использованием генератора сайтов, такого как NextJS, GatsbyJS и т. д. для контентных сайтов, или инструмента сборки, такого как Webpack, ParcelJS. и т. д. для веб-приложений.

При создании проекта с помощью JAMstack следует учитывать следующие рекомендации:

  • Весь сайт должен обслуживаться на CDN.
  • Используйте атомарные развертывания.
  • Мгновенное аннулирование кэширования.
  • Все должно жить на Git.
  • Сборки разметки должны быть автоматизированы.

Ваш проект не создан с помощью JAMstack, если:

  • Построен на серверной CMS, такой как WordPress, Drupal и т. д.
  • Монолитное серверное веб-приложение, основанное на внутреннем языке, таком как PHP, Node или любом другом внутреннем языке.
  • Одностраничное приложение (SPA), использующее изоморфный рендеринг для создания представлений на сервере во время выполнения.

Почему JAMStack?

JAMstack не посвящен конкретным технологиям. Это новый способ создания веб-сайтов и приложений, обеспечивающий более высокую производительность, более высокий уровень безопасности, меньшую стоимость масштабирования и более удобный интерфейс для разработчиков.

Увидев, что такое JAMStack, вы можете спросить, зачем идти по пути JAMstack? Ниже приведены некоторые причины, по которым вам следует рассмотреть JAMStack:

Лучшая производительность

Зачем ждать, пока страницы создадутся на лету, если их можно сгенерировать во время развертывания? Когда дело доходит до минимизации времени до первого байта, ничто не сравнится с предварительно созданными файлами, которые обслуживаются через CDN.

Более высокий уровень безопасности

Благодаря тому, что серверные процессы абстрагированы в API-интерфейсы микросервисов, возможности для атак сокращаются. Вы также можете использовать опыт специализированных сторонних служб в предметной области.

Дешевле, проще масштабировать

Когда ваше развертывание представляет собой стек файлов, который можно обслуживать где угодно, масштабирование — это вопрос обслуживания этих файлов в большем количестве мест. CDN идеально подходят для этого и часто включают масштабирование во все свои планы.

Удобство для разработчиков

Слабая связь и разделение элементов управления обеспечивают более целенаправленную разработку и отладку, а расширяющийся выбор опций CMS для генераторов сайтов устраняет необходимость поддерживать отдельный стек для контента и маркетинга.

Резюме

В этой статье мы увидели, что такое JAMStack, что не является JAMStack, как строить с помощью JAMStack, почему нам следует рассмотреть возможность использования JAMstack для нашего следующего проекта. Для различных целей, таких как масштабируемость, четкое разделение, использование наиболее подходящих технологий и т. д. Для веб-сайтов и веб-приложений, созданных с помощью JAMstack, ознакомьтесь с этими примерами.

Ресурсы

https://jamstack.org/

https://jamstack.org/best-practices/

https://jamstack.org/resources/

https://jamstack.org/examples/

https://nextjs.org/

https://www.gatsbyjs.org/

Первоначально опубликовано на http://blog.logicwind.com 18 сентября 2018 г.