Entonces, echemos un vistazo rápido a cómo puedes habilitar el renderizado en el lado del servidor con WebAssembly utilizando una aplicación Create React muy simple que si ya has utilizado React, es posible que hayas utilizado la aplicación Create React.
Lo primero que debes hacer es instalar algunas de las dependencias. Esto incluye instalar un lenguaje de programación, que es Rust porque básicamente compilaremos el código de Rust en un Wasm, que es un ejecutable de WebAssembly. Luego también usaremos Wasi, Wasi es la interfaz del sistema de WebAssembly que te permite interactuar básicamente con el lado del servidor y los componentes de red de tu computadora. Y luego también instalaremos Wasm Edge, que es el tiempo de ejecución para WebAssembly, el CLI para eso, y también el kit de herramientas Quake.js Wasm Edge. Hemos proporcionado esos enlaces en las diapositivas. Puedes revisarlos e instalarlos por separado.
Una vez que hayas hecho eso, simplemente procederemos a instalar una aplicación React muy simple utilizando nbx-create-react-app. Y ahora llegamos al paso más importante, que es convertir nuestro código en renderizado en el lado del servidor. Básicamente, lo que haremos principalmente es utilizar el contenedor Wasm Edge, que podrá ejecutar nuestro código de renderizado en el lado del servidor y también ejecutar nuestro React JavaScript. Entonces, primero, creemos un nuevo directorio que se llamará server, y dentro de ese directorio, crearemos un nuevo archivo, index.js. Ahora puedes llenar ese contenido del archivo index.js yendo a este archivo que he creado, y encontrarás ese código aquí. Básicamente, simplemente ejecuta una aplicación Node.js, y esto también es capaz de... También tiene algunos componentes relacionados con WebAssembly, donde básicamente estamos renderizando el servidor real, básicamente el código de React.js dentro de nuestro backend de Node. Te recomendaría que revises esta base de código en particular, y una vez que hayas hecho eso, una vez que hayas agregado este código en particular a tu archivo index.js, entonces procederemos. Pero esto responderá qué está sucediendo detrás de escena.
Básicamente, el servidor que estamos creando ahora, que es el servidor de Node, básicamente está renderizando el componente de la aplicación, y en lugar de enviar este componente de la aplicación al frontend, lo que estamos haciendo es enviar HTML renderizado de vuelta al navegador. Principalmente, si vemos eso en casos estándar con React, la cadena renderizada del servidor de React DOM se usa típicamente para renderizar la aplicación a una cadena HTML. Y básicamente eso es lo que estamos enviando a nuestro navegador en este caso. Entonces, básicamente ahora, lo que estamos haciendo es que el contenido de la aplicación se está inyectando en el elemento dev con un ID de enrutador y ahora se está enviando de vuelta como una respuesta HTTP al navegador web.
Ahora, una vez que hayas creado ese archivo index.html, el archivo index.js, procederemos a construir e implementar nuestra aplicación con la ayuda de rollup.js. Nuevamente, hemos proporcionado un archivo de configuración para rollup en caso de que estés interesado en usarlo. Nuevamente, eso se proporciona en el segundo gist, que está aquí, que es el rollup.config.js. Esto es responsable no solo de construir, sino también de implementar el código del lado del servidor que hemos creado dentro del archivo index.js. Entonces, una vez que implementemos nuestro código con la ayuda de rollup.js, las últimas cosas que quedan son, en primer lugar, agregar algunos de los paquetes dependientes en nuestro archivo package.json. Estos están principalmente relacionados con el paquete rollup que acabamos de instalar en nuestra diapositiva anterior. Y lo último que tenemos que hacer es actualizar nuestra sección de scripts. Esto se utiliza principalmente para poder ejecutar el servidor Wasmic desde la CLI de Wasmic que nos ayudará a tomar nuestro código REST y convertirlo en el bytecode de WebAssembly. Y luego, en realidad, esto servirá para también tomar tu código QuickJS, que también invoca a webpack y al archivo de configuración.
Comments