Как добавить React на WordPress-сайт

React?? Это что-то на научном?!

Ах да.
React.js — одна из самых популярных JavaScript-библиотек для создания динамичных пользовательских интерфейсов. Разработанная и поддерживаемая Facebook* (Meta*), она позволяет строить эффективные, масштабируемые и удобные в поддержке веб-приложения.

О React.js подробно можно узнать тут (ссылка)

*Meta — признаны не очень хорошими людьми в РФ

В общем, React позволяет очень просто строить динамические веб-сайты и делать очень крутые штуки без обновления страницы. React как бы встраивается в готовую HTML страницу, создавая динамику.

Лично мне Реакт пригодился для создания бесконечного Quiz-а по японскому, именно там его можно попробовать (вот тут).

Ну что, погнали к подключению

Для начала нам нужно сбилдить проект с react, я для этого использую vite.

После билда статики у нас создаются вот такие файлы:

Теперь надо пояснить как это работает. Грузится обычная HTML-страница, в ней содержится особый тэг div с id root. Далее подгружается все из папки assets, там сам код и стили. После, в результате неизведанной магии JS код из файла подменяет внутренности div-а, и таким образом получается клиентский рендеринг.

Исходя из этого, мы просто можем скормить эти файлы WP. И потом как-то вставить.

— Нет, у меня WP ругается на недопустимое расширение файла.

И тут мне пришла идея: а что, если заставить Nginx раздавать эту статику?

Nginx
location /react-blog {
    alias /var/www/react-blog;
}

Немного магии Nginx и статика раздаётся. Теперь, встраиваем её.

В WordPress есть тэг с кастомным кодом на HTML (произвольный HTML). Используем его, и пишем что-то типа такого:

HTML
<noscript>
  <div style=" background: red; color: white; padding: 1em; text-align: center;">
    Для работы сайта требуется JavaScript. Пожалуйста, включите его в настройках браузера.
  </div>
</noscript>
<script type="module" crossorigin src="./react-blog/kana-quiz/index-kana.js"></script>
<link rel="stylesheet" crossorigin href="./react-blog/kana-quiz/index-kana.css">
<div id="root"></div>

(Желательно писать Link в тэге head, но тогда придётся перелопачивать весь сайт, так что и так сойдёт)

Здесь проверяется включён ли JS и указываются ссылки на папку assets.

Сохраняем. Запускаем.

Всё работает.

Enjoy your динамичные страницы с постоянно выпрыгивающим чатом поддержки. Да хранит господь React. АДМИНЬ.

Мы в Telegram

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

More posts