Representación del lado del servidor React.js con PHP

3 minutos de lectura

avatar de usuario
Yoav Kadosh

Me gustaría desarrollar temas/complementos para WordPress Residencia en React. Para que sea compatible con los motores de búsqueda, necesito que se represente inicialmente en el servidor (representación del lado del servidor).

La única forma de hacer esto, que yo sepa, es usar reaccionar-php-v8jsque requiere la Extensión PECL V8js. Esto es un problema ya que no tengo control sobre la plataforma en la que se ejecutarán estos temas/complementos.

¿Hay alguna manera de hacer React y WordPress trabajar juntos sin tener que instalar extensiones adicionales? Quizás construyendo/compilando React archivos en PHP?

  • ¿Puede aclarar qué quiere decir con “No tengo control sobre la plataforma”? Supongo que quiere decir que no tiene acceso o permiso para realizar instalaciones en el servidor de cosas como V8js o Nodejs, ¿correcto? Hay algunas soluciones con las que estoy familiarizado, pero implican instalar una u otra.

    – PeterG

    7 de febrero de 2016 a las 5:52

  • Eso es correcto: no puedo instalar ninguna extensión de PHP (p. ej., v8js) ni nada parecido a Node.js. Es muy probable que estos complementos/temas de WordPress se ejecuten en plataformas de alojamiento compartido, que no lo permiten.

    – Yoav Kadosh

    7 de febrero de 2016 a las 8:03

  • En ese caso, el único enfoque en el que puedo pensar es configurar nodejs o V8 en un servidor separado, y hacer que su código de reacción lo llame únicamente para hacer la representación del lado del servidor. Es posible que tenga que lidiar con algunos problemas de CORS pero, en teoría, no veo por qué esto no funcionaría (tenga en cuenta que en realidad no lo he intentado).

    – PeterG

    7 febrero 2016 a las 20:13


Hay un artículo que describe cómo hacer esto:

https://sebastiandedeyne.com/server-side-rendering-javascript-from-php/

Pero es una configuración bastante compleja y requiere el uso de composer. Eso puede ser difícil en los proyectos de WordPress ya que WordPress tiende a evitar por completo la arquitectura php moderna.

Si está buscando una biblioteca para ayudar con SSR en PHP:

https://github.com/spatie/renderizado-del-lado-del-servidor

La mejor de las suertes.

Si desea que su contenido sea indexado por un motor de búsqueda sin js, puede imprimir su contenido mínimo usando WordPress, solo el mínimo + metaetiquetas cruciales, tal vez localizar algún estado inicial para que arranque su aplicación de reacción. Un tema básico como http://guiones bajos.me/ sería suficiente. Cuando js está disponible, puede reemplazar todo su contenido generado por WordPress con React.

Lo ideal es que React genere el contenido por ti. Pero es difícil hasta que podamos ver que la extensión nodejs / PECL V8js está disponible en todas partes.

Si al menos puede instalar nodejs e iniciar un proceso de nodo, entonces debería estar bien, aunque no tan simple.

Debería generar una versión ssr de sus activos y usarla en un proceso de nodo que escucharía en un socket para escribir el resultado html.

En su controlador, puede crear un zócalo para su proceso de nodo (algo así como stream_socket_client (…)) y luego puede enviar una función ficticia escrita como una cadena de javascript a ese zócalo (algo así como stream_socket_sendto($sock, “getResultForMyWidget(someParams ){…}”)). Esa función se evaluaría en el proceso del nodo que devolvería la respuesta al controlador (la respuesta html como un ReactDOMServer.renderToString del componente que desea representar).

Eso es todo para el panorama general.

Hay un plugin de Symfony que lo ilustra muy claramente (ver este github) y viene con un proceso de nodo de servidor ficticio para ilustrar cómo maneja la escucha del socket y la evaluación de la función entrante y devuelve el resultado html. Consulte también el ejemplo en el entorno de pruebas para obtener una imagen más amplia y una implementación en profundidad. Deberías poder adaptarlo a wordpress.

¿Ha sido útil esta solución?