Ранее я использовал responseJS для другого проекта. При создании проекта я заметил падение, а именно потерю преимуществ SEO, связанных с компонентами, предоставленными JS.
Я перестраиваю старый проект, и я хотел бы заменить часть Javascript на ReactJS.
Например, многоступенчатая форма – я бы хотел заменить ее компонентом с состоянием, который отображает правильный этап по мере необходимости.
Тем не менее я хотел бы поддерживать аспекты SEO страницы, имея первый шаг.
Для этого мое исследование подразумевает, что я должен использовать React's React.renderComponentToString
Изучив проблему, мой мыслительный процесс заключается в том, что я должен отображать серверную часть компонентов с помощью node.js, а затем обслуживать их в браузере. Затем компонент добавляется повторно для каждого пользователя, чтобы добавить функциональность клиентской стороны. Мой первый вопрос: подходит ли это подход? Есть ли гораздо более простой подход, который я забыл?
Пит Хант упоминает здесь ( https://groups.google.com/forum/#!msg/reactjs/eUespJPdyas/hmJywyo9ZSwJ ), что Instagram использует / использует Django и имеет настройку, подобную той, что я себе представлял.
Мое приложение написано на php с использованием phalcon. Мой вопрос в основном связан с этим утверждением:
Затем узел возвращает HTML-код, составляющий компонент. Django принимает этот HTML-код и вставляет его в DOM через обычные шаблоны Django.
Как мне это сделать в PHP? Я не хочу, чтобы этот компонент отображался за кулисами и использовался по запросу, а скорее отображался при необходимости PHP с переданными параметрами.
Я нашел этот вопрос ( Отправка сообщений с PHP на Node.js ), которые заставили меня думать, что один из подходов состоит в том, чтобы просто использовать CURL для запроса порта, который мой экземпляр узла прослушивает, чтобы получить html, который я потом выводю.
Меня беспокоит то, что весь мой опыт с CURL показал, что он очень медленный. Я не хочу, чтобы мое время загрузки страницы резко уменьшалось, чтобы получить какую-то выгоду от SEO.
Может ли кто-нибудь советовать по вышеуказанным вопросам / моему направлению?
Большое спасибо
Стоян Стефанов создал библиотеку для вызова в V8 JS-библиотеку из PHP-кода для такого рода вещей; он доступен здесь:
https://github.com/reactjs/react-php-v8js
Вы можете прочитать о том, как он настроил рендеринг сервера React в этих двух сообщениях:
http://www.phpied.com/server-side-react-with-php/
http://www.phpied.com/server-side-react-with-php-part-2/
Рендеринг не будет мгновенным, но он должен быть достаточно быстрым. Если у вас проблемы с производительностью, и кеширование не помогает, вы можете использовать функцию обхода Google AJAX для использования рендеринга сервера только для робота Googlebot, но не для обычных запросов:
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
Обратите внимание, что браузеры также используют преимущества разметки, созданной сервером, поэтому, даже если начальный запрос медленнее, рендеринг может быть более быстрым.