Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.79 KB | None | 0 0
  1. Если вы когда-нибудь задумывались, можете ли вы использовать React с Wordpress, ответ - да.
  2.  
  3. Если вы создавали WordPress сайты раньше, решение может быть не таким очевидным, как можно было бы ожидать.
  4.  
  5. Что такое безголовая CMS
  6. Прежде чем мы перейдем к коду, может быть полезно объяснить, как мы с этим справимся.
  7.  
  8. Возможно, вы слышали модное слово «безголовый cms», если искали простой способ управления контентом для вашего проекта JAS.
  9.  
  10. Поскольку этот термин становится все более популярным, может быть полезно определить его раньше, чем позже.
  11.  
  12. Безголовая CMS - это серверная система управления контентом, которая не предоставляет интерфейсного решения.
  13. По умолчанию Wordpress использует темы и шаблоны, чтобы предоставить интерфейс для наших сайтов Wordpress.
  14.  
  15. Создание такого сайта использует взаимодействие с базой данных и создание структуры, которую могут просматривать наши пользователи.
  16.  
  17. Использование этого метода для создания внешнего интерфейса может иметь несколько недостатков.
  18.  
  19. Во-первых, он может создавать сайты, которые не особенно эффективны.
  20.  
  21. Хотя PHP является универсальным языком, существуют лучшие решения для создания пользовательских интерфейсов для наших пользователей.
  22.  
  23. Во-вторых, Wordpress обеспечивает около трети Интернета.
  24.  
  25. Из-за этого хакерам нравится пытаться проникнуть на сайты Wordpress для доступа к конфиденциальным данным.
  26.  
  27. Наличие отдельного интерфейса не позволяет пользователям или хакерам узнать, что это вообще сайт Wordpress.
  28.  
  29. Итак, как я могу использовать React JS, чтобы сделать это?
  30. Wordpress предоставляет REST API, который позволяет получить доступ к данным, созданным сайтом.
  31.  
  32. Мы можем использовать эту технологию с такой библиотекой, как Axios, чтобы использовать данные с нашего сайта Wordpress и включить их в наш проект React.js.
  33.  
  34. Это означает, что мы можем получить лучшее из обоих слов: простота использования Wordpress для управления контентом и радость создания с помощью React.js.
  35.  
  36. Использование Wordpress в качестве нашего бэкенда
  37. Давайте посмотрим на сайт Wordpress, чтобы вы могли точно понять, о чем я говорю. Для этого вы можете использовать любой сайт Wordpress, даже сайт, размещенный на поддомене. В этой статье я буду искать на сайте TechCrunch .
  38.  
  39. Просто добавив /wp-json/wp/v2/postsв конец URL, мы увидим вывод в формате JSON всех самых последних сообщений. Просто изменив postsна pages, мы можем увидеть данные для страниц на сайте TechCrunch .
  40.  
  41.  
  42. API TechCrunch Posts
  43.  
  44.  
  45. Мы можем попробовать различные варианты , как posts, pages, usersи многие другие.
  46.  
  47. Идите и поиграйте, чтобы увидеть, какие данные вы можете найти. Это позволит нам решить, что мы хотим использовать, а что нет.
  48.  
  49.  
  50.  
  51. Наше приложение React JS Starter
  52. Я создал стартер реакции, который вы можете скачать здесь . Решение также там на другой ветке. Вы можете скачать файлы, запустить yarn или npm install(в зависимости от того, что вы предпочитаете), а затем yarn startили npm run start.
  53.  
  54. Вы увидите нашу простую страницу, но заметите, что там нет контента. Давайте начнем и добавим контент.
  55.  
  56. Установите необходимые пакеты
  57. Если открыть package.json файл, мы можем видеть , что я уже включен react, react-dom и bulmaстроить наш передний конец.
  58.  
  59. Прежде чем мы продолжим работу с нашим реагирующим приложением, нам нужно добавить еще несколько пакетов.
  60.  
  61. Мы можем добавить Axios, который является пакетом, который позволяет нам делать http-запросы из нашего приложения без каких-либо хлопот.
  62.  
  63. React-router можно использовать для создания маршрутов, что означает, что мы можем переключать страницы или компоненты без обновления браузера.
  64.  
  65. Чтобы установить эти два пакета, мы можем использовать следующий код в нашем терминале:
  66.  
  67.  
  68. Установите axios и реагируйте на роутер
  69.  
  70.  
  71. Добавить React Router в файл App.js
  72. Теперь, когда у нас установлены новые пакеты, нам нужно настроить react-router наш файл app.js, чтобы сообщить нашему браузеру, что должно отображаться при вводе разных путей в адресную строку.
  73.  
  74. Для начала нам нужно импортировать нужные нам фрагменты react-routerвверху файла. В нижней части импорта добавьте следующий код:
  75.  
  76.  
  77. Импортировать реагирующий маршрутизатор в app.js
  78.  
  79.  
  80. Теперь, когда мы импортировали react-router, мы можем использовать эти компоненты для настройки маршрутов.
  81.  
  82. Наш текущий файл app.js выглядит примерно так:
  83.  
  84.  
  85. Файл App.js после добавления оператора импорта
  86.  
  87.  
  88. Чтобы добавить маршрутизатор к нашему app.js компоненту, нам нужно обернуть крайний компонент <div>в <Router> компонент, чтобы мы могли настроить маршруты нашего приложения. Затем мы можем заменить наш <h1>тег этими двумя маршрутами:
  89.  
  90.  
  91. Добавьте два маршрута нашего приложения
  92.  
  93.  
  94. Давайте разберем это:
  95. Наш первый маршрут сообщает responsejs, чтобы показать компонент, вызываемый, PostList когда пользователь посещает домашний маршрут ( http: // localhost: 1234 ).
  96.  
  97. exact-Атрибут означает , что он должен соответствовать этому маршруту точно , что означает , что если у нас есть что - нибудь после того, что он не пойдет на этот маршрут.
  98.  
  99. Второй маршрут покажет компонент, вызываемый, PostView когда пользователь посещает маршрутный символ. :slug
  100.  
  101. Означает , что любая строка после косой черты будет другой маршрут в нашем приложении.
  102.  
  103. В нашем случае эта строка или slug(поскольку именно так мы ее назвали) будет фрагментом для сообщения в блоге TechCrunch.
  104.  
  105. Наш app.js файл должен теперь выглядеть так:
  106.  
  107.  
  108. Модифицированный файл app.js
  109.  
  110.  
  111. Далее нам нужно создать PostListи PostView компоненты и импортировать их в app.js компонент.
  112.  
  113. Создание нашего компонента PostList
  114.  
  115. Прежде чем приступить к созданию нашего PostListкомпонента, мы должны немного подумать о том, какой компонент нам следует использовать.
  116.  
  117. Мы будем делать http-запрос с помощью axios, используя componentDidMount метод жизненного цикла, а затем сможем сохранить его в состоянии .
  118.  
  119. Мы можем использовать как состояние, так и методы жизненного цикла в компоненте класса.
  120.  
  121. Теперь, когда у нас есть представление о том, как будет построен этот компонент, мы можем начать. Сначала мы должны создать файл для компонента:
  122.  
  123.  
  124. Создайте файл для нашего компонента PostList
  125.  
  126.  
  127. Затем мы должны импортировать материал, который нам понадобится для создания этого компонента.
  128.  
  129. Добавьте эти операторы импорта в начало PostList.js файла:
  130.  
  131.  
  132. Добавить импорт в наш файл PostList.js
  133.  
  134.  
  135. После этого мы можем создать компонент класса с именем PostList и настроить конструктор и состояние для индексной страницы нашего блога.
  136.  
  137. Наше государство должно содержать список сообщений, которые мы будем отображать.
  138.  
  139. Любые пользовательские функции, которые мы пишем в этом компоненте, будут связаны с this ключевым словом в этом конструкторе.
  140.  
  141.  
  142. Установить конструктор и состояние для PostList
  143.  
  144.  
  145. Теперь, когда у нас есть место для размещения данных для наших сообщений, мы должны создать метод жизненного цикла для извлечения этих данных и присвоения их нашему состоянию.
  146.  
  147. Мы можем сделать это довольно легко, добавив следующий код после нашего конструктора:
  148.  
  149.  
  150. Добавьте метод жизненного цикла componentDidMount для реагирования на js-компонент
  151.  
  152.  
  153. Если вы часто разрабатываете приложения React, я бы рекомендовал установить React DevTools в выбранном вами браузере.
  154.  
  155. Это делает разработку с помощью реакции JS очень простой и отслеживает данные, передаваемые через состояние и реквизиты.
  156.  
  157. Теперь мы можем проверить наше состояние, чтобы убедиться, что оно правильно заполняется из нашего componentDidMountметода жизненного цикла.
  158.  
  159. Для этого откройте инструменты разработчика в вашем браузере и перейдите на вкладку реакции. Затем мы можем углубиться в структуру до тех пор, пока не найдем наш PostListкомпонент, а на панели справа показано наше состояние и реквизиты.
  160.  
  161.  
  162. Проверьте реакцию JS Devtools, чтобы убедиться, что состояние назначается
  163.  
  164.  
  165. Поскольку у нас есть все записи в нашем состоянии, мы можем создать метод рендеринга со структурой для нашей страницы.
  166.  
  167. Чтобы сделать это простым способом, мы можем использовать map()функцию, которая будет перебирать каждый элемент в массиве.
  168.  
  169. Наш метод рендеринга может идти после нашего componentDidMountметода со следующим кодом.
  170.  
  171.  
  172. Добавить метод рендеринга в PostList.js
  173.  
  174.  
  175. Если мы запустим наш сайт с помощью npm run start или yarn start, мы увидим, что наши записи в блоге отображаются правильно, но мы можем видеть отображаемые теги HTML. Это не круто.
  176.  
  177. Чтобы сделать это правильно, мы должны создать функцию для использования с dangerouslySetInnerHTML атрибутом.
  178.  
  179. Давайте добавим функцию, чтобы сделать это после нашего, componentDidMountно до renderметода.
  180.  
  181. Нам также нужно связать thisключевое слово внутри нашего конструктора.
  182.  
  183. Затем мы можем использовать dangerouslySetInnerHtmlатрибут для визуализации выдержки из записи в <div>. Наш законченный PostListкомпонент должен выглядеть так:
  184.  
  185.  
  186. Завершенный компонент PostList
  187.  
  188.  
  189. Создание компонента PostView
  190. Если мы оглянемся назад на наш app.js файл, то увидим, что запись в блоге будет отображаться с PostView компонентом, поэтому давайте продолжим и создадим его!
  191.  
  192.  
  193. Создайте файл для нашего компонента PostView
  194.  
  195.  
  196. Приведенный выше код создаст файл для размещения нашего PostViewкомпонента и откроет его в редакторе кода по умолчанию.
  197.  
  198. Чтобы упростить задачу, мы можем просто скопировать формулу для нашего PostListкомпонента.
  199.  
  200. Мы можем скопировать и вставить код из нашего PostListкомпонента и сделать несколько небольших изменений.
  201.  
  202. Во-первых, нам нужно убедиться и изменить имя компонента с PostListна PostView.
  203.  
  204. Далее нам нужно componentDidMountнемного изменить метод. Мы можем добавить строку кода, которая будет получать :slugURL-адрес в адресной строке, и использовать его для фильтрации сообщений, возвращаемых Wordpress API, до одного сообщения.
  205.  
  206. Наконец, нам нужно изменить renderметод для отображения полного сообщения, если оно существует, или не отображать ошибку, если оно не существует.
  207.  
  208. Код ниже будет использоваться для нашего завершенного PostView компонента. Взгляните на это и посмотрите, сможете ли вы заметить различия и выяснить, почему мы так с ними справились.
  209.  
  210.  
  211. Код для нашего законченного компонента PostView
  212.  
  213.  
  214. Последние шаги для нашего блога ReactJS
  215. Мы в значительной степени настроены сейчас с нашим блогом. Нам нужно сделать еще несколько небольших вещей, чтобы наше приложение работало так, как мы хотим.
  216.  
  217. Во-первых, ожидается, что логотип или заголовок сайта ссылаются на домашнюю страницу. Так как мы используем react-routerв нашем проекте, мы можем даже сделать это без обновления страницы. Для этого мы можем открыть components/header.jsфайл и изменить его так:
  218.  
  219.  
  220. Наш модифицированный код для компонента Header
  221.  
  222.  
  223. Последний шаг для нашего блога Wordpress и React js - это добавить операторы импорта в app.jsфайл для наших двух компонентов, PostListи PostView поэтому ответ знает, где их получить. Как только вы это сделаете, вы сможете запустить приложение и увидеть самые последние сообщения в блоге TechCrunch.
  224.  
  225. Проблемы производительности с React js
  226. Вы можете заметить некоторые проблемы со скоростью загрузки или странные ощущения, когда на экране не отображается ни секунды, прежде чем показывать содержимое.
  227.  
  228. Это связано с тем, что содержимое отображается после монтирования компонента, поэтому существует небольшая задержка.
  229.  
  230. Кроме того, сканерам поисковых систем трудно читать контент на таких сайтах, как этот, потому что он загружается через javascript после отображения страницы. Есть несколько популярных способов решения этих проблем:
  231.  
  232. Gatsby.js, генератор статических сайтов
  233. Gatsby js - один из моих любимых инструментов для построения в экосистеме реагирования.
  234.  
  235. Это позволяет нам создавать сайт или приложение, используя React, React-router и Graphql прямо из коробки! Затем, когда мы на самом деле строим приложение, Gatsby.js создает статические файлы, которые делают наши приложения быстрыми.
  236.  
  237. Поскольку файлы для нашего приложения обслуживаются статически, они могут быть очень быстрыми, поскольку весь контент создается заранее, а не при рендеринге страницы.
  238.  
  239. Это может быть немного сложно, так как мы должны найти способ вызвать сборку при обновлении контента.
  240.  
  241. Netlify - мой основной сервис для этого, так как он очень прост в использовании, и когда вы переходите в определенную ветку git, он перестраивает проект Gatsby.js.
  242.  
  243. Next.js, серверная отрендеренная React js
  244. Другое популярное решение для решения этих проблем называется Next.js , которое обеспечивает рендеринг на стороне сервера для приложений реагирования js. Вместо того, чтобы использовать componentDidMountдля извлечения наших данных после монтирования нашего компонента, Next.js предоставляет новый вызываемый метод, getIntialPropsкоторый позволяет нам извлекать данные до визуализации компонента.
  245.  
  246. Тот факт, что Next.js предлагает рендеринг на стороне сервера, также устраняет проблему с сканерами, имеющими проблемы с чтением контента. Кроме того, учебники, доступные на их сайте, довольно круты.
  247.  
  248. Это было бы отличным решением, если вы создаете приложение с использованием стека MERN, поскольку оно может обрабатывать часто меняющиеся данные.
  249.  
  250. Завершение нашего проекта Wordpress и React js
  251. Как вы можете видеть, действительно довольно легко использовать удивительный пользовательский интерфейс, предоставляемый Wordpress, наслаждаясь React.js для фронтэнда.
  252.  
  253. Вы можете использовать эти инструменты в своих личных проектах, корпоративных решениях или фрилансе. Это один из тех редких случаев, когда вы получаете лучшее из обоих миров!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement