Вот почему и как
По их словам, в конце концов, лучшие технологии будут преобладать.
Тем не менее, когда дело доходит до создания приложений React.js, мы часто совершаем ошибку:
Мы не используем Preact. Я здесь не для того, чтобы говорить чушь вроде «React мертв» или
«Мы должны выбросить React».
Я здесь, чтобы познакомить вас с классной альтернативой React.js: Preact.
Большинство разработчиков React уже слышали об этом. Тем не менее, на мой взгляд, он недостаточно используется.
Preact предлагает почти идентичный API и синтаксис, как React, но приводит к меньшим размерам пакетов и производительности.
Между тем, Preact также поддерживает почти все, что поддерживает React, поэтому пора подумать о переводе вашего приложения на Preact.
Вот почему и как.
Результаты переключения моих приложений на Preact
Во-первых, немного мотивации для вас.
В основном я разработчик React.js. Поэтому я строю на нем и свои личные проекты. Как и многие другие разработчики React, я забыл о том, что Preact действительно существует, и реализовал некоторые личные проекты с помощью React. Понимая, что я могу сэкономить на размере связки, я забеспокоился.
Я был уверен, что полностью переключиться на Preact будет не так-то просто. Тем не менее я попробовал - и был удивлен.
Сначала я переключил страницу на основе React в Astro на Preact. Это сработало из коробки, поскольку Astro отлично поддерживает обе библиотеки.
Изменения в размере пакета: с 333 килобайт до 54 килобайт.
Какая разница! Я тоже был в шоке.
Следующее приложение было старым проектом, который я построил в Гэтсби. Страница на основе React.js имела размер 403 килобайта. Переключение на Preact привело к получению пакета размером 205 килобайт - опять же, огромная экономия в размере.
Надеюсь, теперь у вас больше мотивации дать Preact шанс - вот что вам нужно знать о переключателе. Если вы хотите узнать больше о Preact и React с точки зрения производительности, посмотрите это:
Работает ли перенос моего приложения на Preact?
Preact не претендует на замену React.js. Тем не менее, это довольно полная альтернатива React.js. Хотя из-за своего размера он имел репутацию предлагать лишь несколько функций, это неправда. А документация Preact дает нам более подробное представление о том, какие функции отсутствуют в Preact:
Как видите, по словам самого Preact, различия не так уж велики. Даже все хуки, известные нам по React, можно использовать через импорт, специфичный для Preact, например import { useState } from "preact/hooks"
.
Итак, а как насчет перечисленных недостающих функций? Что ж, как утверждает Preact, PropTypes, например, полностью поддерживаются в preact-compat
. Этот инструмент помогает нам переносить приложения на Preact, в основном без необходимости вносить изменения в нашу кодовую базу (мы скоро это увидим).
Итак, как мне переключить приложение React на Preact?
Переключиться на Preact не так уж и сложно, в зависимости от ваших уже существующих настроек. Особенно в Gatsby и Next.js, двух наиболее часто используемых инструментах для создания приложений React сегодня, переключение несложно. Оба используют preact-compat для коммутатора. Это означает, что ваша существующая кодовая база, специфичная для React, будет переведена в Preact под капотом. Вы можете использовать импорт и функции React, preact-compat получил вашу поддержку.
Я сделал два дополнительных руководства по переключению между Gatsby и Next.js:
Переключить наше приложение CRA React на Preact также не так сложно, благодаря классному стороннему инструменту: cra-preact
, который является оболочкой для уровня совместимости Preact preact/compat
. Мы можем установить его с помощью yarn add cra-preact
.
Затем все, что нам нужно сделать, это заменить наш раздел скриптов в package.json
следующим образом:
Теперь просто запустите yarn run build
- preact compat должен автоматически обрабатывать ваши импортированные реакции и перенаправлять их в Preact под капотом. Чтобы проверить это, я создаю небольшое приложение React, используя useState
и PropTypes
.
Производственная версия приложения React составляла 140 килобайт, после переключения на Preact с cra-preact
осталось всего 30,2 килобайт, но все работает нормально.
Для большинства производственных приложений в React.js create-response-app не подходит. Поскольку мы рассмотрели Next и Gatsby, переключение с помощью таких инструментов, как Webpack или Parcel, по-прежнему отсутствует. К счастью, в документации Preact есть хорошие руководства по этим переключателям здесь.
Начиная с Preact с нуля
Пока что я показал, как перейти с React на Preact. Преимущество этого процесса в том, что вы можете писать все на React, а preact-compat должен все обрабатывать. Если вы хотите написать свое приложение с Preact с самого начала, есть еще пара отличий:
Отличия:
- Вы можете использовать
class
вместоclassName
в качестве атрибута для предоставления классов CSS. - Передача реквизита работает иначе:
- Preact использует собственные глобальные обработчики событий браузера для обработки событий. Поэтому Preact использует
onInput
вместоonChange
для полей ввода. (Собственныйonchange
браузера не запускается при каждом нажатии клавиши, как в React. Он срабатывает только после того, как вы покинете текстовое поле с измененным вводом.) - Разница в отношении собственного глобального обработчика событий также влияет на
onDoubleClick
. Собственная реализация Preact используетonDblClick
.
Последняя мысль
Preact все больше и больше превращается в отличную альтернативу React.js. Несмотря на то, что он утверждает, что не является заменой, я бы назвал его во многих случаях. Да, мне кажется, что Preact часто оказывается лучшим выбором.
Благодаря удобным инструментам миграции мы можем создавать приложения React.js как обычно, а затем пытаться перенести их в Preact, чтобы сохранить размер пакета. Кроме того, вы также можете начать создавать свое приложение с Preact с нуля, заменив CRA или просто включив поддержку Preact в своем пакете изначально.
Спасибо за чтение!
Подписывайтесь на меня в Twitter, чтобы быть в курсе
Больше контента на plainenglish.io