Entonces, cuando escuchaste que NodeJS no está presente, y hemos construido toda la aplicación, teniendo en cuenta que NodeJS estará presente, y gran parte del poder del marco NixJS que hemos incorporado en esta aplicación, ¿qué tipo de problema comenzamos a enfrentar o comenzamos a delinear donde NodeJS no estaba presente? Como desarrollador, cuando comenzamos entre cosas como SSR, como renderizado del lado del servidor, el sueño del renderizado del lado del servidor, y las realidades del hardware, lo que descubrimos, como, NixJS espera un servidor para que las cosas funcionen. Y el tipo de servidor que el cliente nos dio, básicamente quería archivos estáticos. Entonces, desde el sueño de usar SSR, ISR, y todas estas cosas, al hecho de que tenemos que usar cosas como archivos estáticos, algunas personas dirán, como, de los 90, ya sabes, solo tienes HTML, CSS, JavaScript, ya no tienes todas estas cosas elegantes del marco, eso fue, como, un poco desalentador para un equipo técnico como nosotros, que siempre quiere trabajar en algunas tecnologías modernas y todo. Así que descubrimos que las restricciones son básicamente estas, sin tiempo de ejecución de Node, memoria limitada, este es el segundo punto. Estábamos pensando que iría a la nube, se ejecutaría en, como, ya sabes, edge, las cosas serían súper buenas, pero ahora es un hardware pequeño, por lo que tienes la limitación de memoria, y también el cliente regresó con otra cosa, como, tienes que hacerlo, ya sabes, offline, por lo que debería servirse offline. Puede que no obtenga los datos más recientes cuando se sirve offline, pero por supuesto, no debería romperse, no debería ser una pantalla en blanco cuando alguien accede a esta aplicación en su iPad o en algún lugar. Así que nuestra aplicación NixJS de repente no podía renderizar páginas, porque no hay Node.js, no podía ejecutar las rutas de API no hay Node.js, y luego los gráficos D3 que hemos desarrollado, comenzaron a ahogarse, porque no hay concepto de aceleración de GPU, estás usando este hardware, no hay APIs de transmisión, estábamos soñando con usarlas, y eso comenzó a crear muchas restricciones para nosotros. Así que como entendimos, bien, esta es la vida de esta aplicación, la vida de los desarrolladores sin Node.js, comencemos la investigación.
Así que comenzamos la investigación, y hay dos cosas, dos caminos que nos dimos cuenta que están frente a nosotros. Uno, reescribir todo lo que hemos escrito en modo React spa puro, modo de aplicación de una sola página, sin más marco, porque el poder de NixJS en sí, no podemos usarlo, ¿verdad?, entonces, ¿cuál es el uso de usar el marco? Así que deshagámonos de eso. Segunda cosa, de alguna manera hacer que NixJS se comporte estáticamente. Bien, hemos pasado nuestro tiempo arduamente ganado, ya sabes, meses construyendo componentes del servidor, diseños, APIs basadas en varias características de Node, ¿qué hacer, deberíamos desechar y reescribir? Decidimos, bien, no desechemos la implementación que hemos hecho, intentemos desglosar NixJS. Descubramos qué partes de NixJS realmente necesitan Node.
js, y si podemos descubrir eso, tal vez esa parte necesite alguna reescritura, pero otra parte podemos mantenerla tal como está, porque también tenemos que entregar al cliente, y hasta cierto punto, admito que este fue nuestro error, probablemente no entendimos la comunicación de dónde exactamente esta aplicación va a ejecutarse, y esa es una de las lecciones que quiero mencionar hacia el final, así que realmente no puedo pedir demasiado tiempo extra al cliente para que tenga que reescribir esta aplicación, ¿verdad? Así que a continuación, investiguemos y hagamos algunos hallazgos, ¿verdad?, qué parte de NixJS realmente necesita Node.js. Así que aquí están los hallazgos. Voy a repasarlos uno por uno muy lentamente. Lo que descubrimos, el SSR, renderizado del lado del servidor, y habíamos escrito algunas rutas de API, esas están vinculadas a Node, porque necesitas Node.js para hacerlas funcionar, alojarlas, etc. La parte de la interfaz de usuario, donde se trata del componente, básicamente, ¿podemos exportar este componente como exportaciones HTML? Si podemos hacer eso, significa que al final del día, es solo un simple HTML, lógica en JavaScript, y toda la embellecimiento está en el estilo, y eso se exporta, que puedes llevarlo portátil a cualquier parte del mundo, en cualquier servidor, cualquier servidor de aplicaciones. Así que eso es bueno. Así que significa que si puedes exportar estáticamente la interfaz de usuario, creo que esa parte no está dependiente de Node o del servidor basado en Node, genial. Luego los componentes del cliente, teníamos un sueño de usar componentes del servidor porque desde NixJS, 14, AppRouter, y luego 15, los componentes del servidor están en todas partes, ¿verdad? Se vende a todos los desarrolladores. Pero como desarrollador, creo que siempre tenemos la tendencia de mirar esa pieza brillante y resplandeciente, luego poner demasiado nuestros pensamientos en si esa cosa brillante es para mí, ¿realmente lo necesitamos? Así que si miras esta aplicación, la persona de esa aplicación es alguien que va a revisar muchos vehículos eléctricos, quieren conectar un dispositivo, un hardware a la batería, quieren recopilar los datos, y en el iPad, quieren ver ciertas cosas y tomar algunas decisiones. Esa es la persona. Ahora, esta persona nunca va a usar esta aplicación públicamente. No es algo que en una búsqueda de Google deberías obtener esta aplicación, ¿verdad? Es una aplicación muy privada. Así que el SEO no es en absoluto un asunto aquí, ¿verdad? ¿Por qué estábamos pensando en componentes del servidor, renderizado del lado del servidor y todas estas cosas si el SEO no está en absoluto en la imagen? En realidad, podemos traer esta aplicación completamente del lado del servidor al componente del cliente. Y eso funciona en todas partes.
Comments