Что такое Progressive Web App (PWA)?

Ответ

Progressive Web App (PWA) — это веб-приложение, построенное с использованием современных API для обеспечения нативного пользовательского опыта: установки, офлайн-работы и push-уведомлений.

Основные технологии и характеристики:

  1. Service Worker: Скрипт, работающий в фоне, который управляет кэшированием, офлайн-режимом и push-сообщениями.
  2. Web App Manifest: JSON-файл (manifest.json), описывающий метаданные приложения для установки (название, иконки, цвет темы, режим отображения).
  3. HTTPS: Обязательное требование для безопасности.
  4. Адаптивный и App-like UI: Интерфейс должен быть отзывчивым и похожим на нативное приложение.

Пример манифеста:

{
  "name": "My PWA",
  "short_name": "App",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#3367D6",
  "icons": [
    {
      "src": "/icon-192.png",
      "type": "image/png",
      "sizes": "192x192"
    }
  ]
}

Аспекты тестирования PWA:

  • Установка через браузер (кнопка "Добавить на главный экран").
  • Работа в офлайн-режиме (Service Worker кэширует ключевые ресурсы).
  • Корректность отображения в standalone-режиме (без адресной строки).
  • Работа push-уведомлений (если реализованы).
  • Производительность и безопасность (HTTPS).

Ответ 18+ 🔞

Ну что за дичь, а? Слушай сюда, я тебе сейчас объясню, что это за зверь такой — PWA — без этих ваших заумных книжек.

Представь, ты заходишь на сайт через браузер, а он тебе такой: «Э, дружок-пирожок, да я почти как настоящее приложение! Установи меня на телефон, я и без интернета работать буду!». Вот это, блядь, и есть Progressive Web App. Не сайт, но и не апп из магазина — такая хитрая жопа посередине.

Из чего же, из чего же сделаны эти наши PWA?

  1. Service Worker. Это главный мудак в тени, который всё и решает. Скрипт, который работает в фоне, пока ты чатики листаешь. Его работа — впендюрить в кэш все нужные файлы, чтобы, когда интернет накроется медным тазом, приложение не сдохло, а спокойно работало. Ещё он push-уведомления ловит, этот хитрый жук.
  2. Web App Manifest (manifest.json). Это типа паспорта для приложения. В нём написано, как тебя зовут, какая у тебя иконка, в какой цвет покраситься. Браузер читает эту бумажку и говорит: «Ага, значит, ты серьёзный парень, давай-ка я предложу пользователю тебя установить».
  3. HTTPS. Без этого нихуя не получится. Никаких «http://». Только безопасное соединение, и точка. Иначе браузер тебе доверия — ноль ебать.
  4. Внешность. Ну должно же выглядеть прилично, а не как сайт 90-х! Адаптивный дизайн, чтобы и на телефоне, и на планшете было удобно. И чтобы после установки открывалось на весь экран, без адресной строки — вот это да, почти как нативное!

Вот смотри, как выглядит эта паспортная книжонка (manifest.json):

{
  "name": "My PWA",
  "short_name": "App",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#3367D6",
  "icons": [
    {
      "src": "/icon-192.png",
      "type": "image/png",
      "sizes": "192x192"
    }
  ]
}

А теперь, блядь, как это всё проверять, чтобы не обосраться?

  • Установка: Ищешь в браузере эту волшебную кнопку «Добавить на главный экран». Нажал — иконка появилась. Если не появилась, пиши пропало.
  • Офлайн-режим: Включаешь в настройках телефона «Режим полёта» и пытаешься открыть приложение. Если открылось — Service Worker молодец. Если нет — иди переделывай.
  • Standalone-режим: После установки открываешь. Не должно быть видно адресной строки браузера. Вообще. Чистый экран. Если торчит — manifest.json кривой.
  • Уведомления: Если ты их сделал, то проверь, приходят ли они. Пользователь должен ахуеть от восторга, а не от спама.
  • Скорость и безопасность: Всё должно грузиться быстро, а в адресной строке — замочек. Иначе народ разбежится.

Вот и вся магия. Выглядит как приложение, пахнет как приложение, но делается на веб-технологиях. Ёперный театр, а не инженерное решение!