Как только вы начинаете писать передний конец JavaScript с инструментами сборки, как Babel и веб-пакет, вы очень близко к серверу стороне JavaScript. Я считаю, что чем больше я узнаю сервера стороне JavaScript — JavaScript выполняется в узел runtime — или быть менее педантичный «узел», тем больше я понимаю, scoping и импорта и экспорта, которые делают работу с веб-пакетом в передней части конца сложно.
Для забавных упражнений, связанных с WordPress, давайте построим сервер JavaScript, который претендует на API WordPress REST. Это не будет WordPress REST API, но мы сделаем его действовать как один на несколько маршрутов.
Есть несколько причин, почему вы можете такой сервер. Один из них заключается в создании поддельного сервера для интеграционного тестирования приложения WordPress с питанием от JavaScript. Таким образом, вам не нужно будет иметь WordPress окружающей среды, т.е. PHP и MyS’L. Вы также можете использовать этот сервер для прокси-сервера реального сайта и создания статического кэша ответов REST API. Фактический сервер не будет доступен для общественности.
Код в этой статье использует async/await. Это относительно новый API JavaScript. Если вы не знакомы с ним, вам нужно только знать два правила, которые я рассмотрел более подробно в этой должности. Короткая версия асинхронных функций объявляются с async
ключевым словом перед ними и внутри функций async мы можем использовать await
ключевое слово, чтобы ждать разрешения обещание продолжить к следующей строке.
Экспресс-старт
Мы будем писать очень простой Экспресс приложение в этой должности. Express — это система разгрома JavaScript, которая очень популярна для серверных приложений JavaScript. Это не учебник о том, как использовать Express. Я не эксперт в Экспрессе. Все о Express мы собираемся использовать покрыта на этой одной странице их документации.
Создайте новый каталог, инициализируем новый проект npm и установите экспресс;
Создайте index.js в каталоге под названием source. Вот очень простое, один маршрут приложение:
Мы добавили один маршрут, он работает с запросами GET — мы использовали метод получить (), а не сообщение () — и он реагирует на маршруты с этим матч пути «/». Внутри обработчика маршрута мы получаем запрос и объект ответа. Первый запрос, который пригодится в ближайшее время, а другой мы используем для создания ответа.
Две важные вещи, чтобы знать о реакции. Во-первых, можно настроить код состояния HTTP для ответа методом status():
Во-вторых, вы можете отправить ответ JSON, вернув объект json()
Обслуживание JSON из файлов
Это здорово, но давайте покажем некоторые WordPress содержание с этим приложением.
Динамические маршруты с экспрессом
Еще одна концепция Express, чтобы узнать — динамические маршруты. Допустим, мы хотели, чтобы наш сервер, чтобы ответить на запрос / сообщения / привет-мир с Json на должность с пулей привет-мир, мы должны знать, в нашем маршруте обработчик обратный вызов, что после пули — «привет-мир». Кроме того, нам нужно, что маршрут, чтобы существовать — для любого поста пули. Это динамичный маршрут.
Внутри нашего маршрута обратный вызов объекта запроса будет иметь свойство «парамы», которое имеет все соответствующие параметры из запроса.
Это показывает нам, что мы можем получить сообщение пули из URL. На данный момент, я собираюсь предположить, что ваш проект имеет каталог называется содержание / WP-Json / сообщения с JSON файлы имя WordPress должности, по пули. Если это кажется странным конкретные вещи, чтобы иметь под рукой или любопытно, как это сделать, кроме резки вставки ответы из вашего браузера, взгляните на мой пост о том, как сделать это каждый раз, когда сообщение сохраняется.
Этот обновленный обработчик использует этот динамический параметр маршрута для построения этого пути файла, а затем возвращает JSON.
То есть, если она существует, у нас нет никакой обработки для этого, который является субоптимальным. Давайте сначала проверим, существует ли файл, а если нет, то вернем 404:
Проксиинг удаленного контента
Это в основном все, что нам нужно, если вы в порядке поставки все содержимое через JSON файлы, построенные с использованием другого процесса. Но что, если это может также создать файлы через запрос REST API на реальный сайт WordPress, а затем кэшировать результаты в следующий раз? Звучит круто. Давайте сделаем это, сначала нам понадобится клиент API:
Это тон узла клиента WordPress REST API. Мы будем использовать его, чтобы получить сообщение с удаленного сайта. Клиент использует открытие API для автоматической настройки всех своих маршрутов:
Теперь мы можем использовать этот клиент для запроса публикации и написания ответа на файловую систему, чтобы предотвратить позже другой запрос:
Что еще вы будете делать с этим сервером?
Этого достаточно, чтобы показать, как создавать маршруты и прокси WordPress REST API. И этого достаточно, чтобы сделать вас опасным — я имею в виду полезным. Например, как обитать в этом серверном рендеринге компонентов React, которые вы также можете использовать на переднем конце:
Я не собираюсь попасть в сервер стороне рендеринга для React в этой должности. Я рекомендую читать этот пост, чтобы узнать больше.
Вы можете взглянуть на Github репо проекта это основано на следовать вместе с тем, что я делаю. Не стесняйтесь копировать или вилкой, что репо. Оставьте ссылку на то, что вы создаете в комментариях или прийти на меня на Twitter — @josh412 — со ссылкой.
Источник: torquemag.io