reactjs-hispano / Cms-Reactjs

Cms hecho con React+flux por la comunidad de Reactjs-Hispano.
6 stars 5 forks source link

Propuestas para cargar datos de forma isomorfica #2

Open bjrmatos opened 9 years ago

bjrmatos commented 9 years ago

Con todo el boom de JS en el server y en el cliente, y agregándole el hermoso poder de React, hoy en día tenemos que preocuparnos en que nuestra aplicación comparta código (entre el cliente y el server) al máximo, para esto un problema que he encontrado es cuando cargas una ruta (de react-router) y necesitas data para que la vista pueda renderizarse generalmente se tiende a repetir el código (se repite en el server y en el cliente) que realiza esa carga.

Pongamos de ejemplo que tenemos una ruta /contactos, dicha vista/componente necesita un prop this.props.contactos para generar una lista de contactos, en este escenario veo 2 casos:

  1. Cuando se entra a dicha ruta por primera vez en el navegador o cuando se realiza un refresh (F5) (tambien conocido como renderizado del lado del servidor)
  2. Cuando se entra a dicha ruta pero mediante un click a un link en la aplicación, que solo refrescara el contenido y url (con pushState o hashChange) con la ruta solicitada (también conocido como renderizado del lado del cliente)

Para ambos casos necesitamos asegurar que el código que cargue dicha data de contactos sea uniforme y funcione para el cliente y servidor.

He ido investigando un poco el tema y he encontrado unas cuantas librerías al respecto, y en base a eso quiero discutir las diferentes alternativas que podemos tener ante este problema.

Recuerden que la idea es encontrar una solución que se integre bien con un router (react-router) y flux

calderaro commented 9 years ago

cargar los datos de esta forma seria algo genial. Si tienes mas información al respecto publica la aquí ya he estado buscando información sobre esto.

calderaro commented 9 years ago

@bjrmatos puedes hacer un pull con react router?

bjrmatos commented 9 years ago

Claro! Este fin de semana hare todo lo que pueda por revisar el codigo y a agregarle la parte del router :)