Cómo Remix y Prisma convierten a los desarrolladores frontend en desarrolladores fullstack

Rate this content
Bookmark

Remix brinda a los desarrolladores el poder de escribir su código frontend y backend en un solo lugar y en un solo lenguaje, lo cual reduce significativamente la barrera fullstack para los desarrolladores frontend y los desarrolladores más nuevos. La pieza restante, sin embargo, es la base de datos. Agrega Prisma a la mezcla y tendrás una experiencia fullstack poderosa con una curva de aprendizaje muy baja. En esta charla, echaremos un vistazo a la increíble experiencia de desarrollo que obtienes cuando combinas los dos.

22 min
18 Nov, 2022

Video Summary and Transcription

Remix y Prisma permiten a los desarrolladores frontend convertirse en desarrolladores fullstack al trabajar en diferentes partes del stack sin sumergirse en complejidades. Proporcionan un excelente marco para escribir código e interactuar con bases de datos, lo que facilita ser un desarrollador fullstack. El ORM de Prisma permite mapear modelos de bases de datos a modelos de JavaScript o JSON. Desarrollar una aplicación fullstack con Remix requiere estructurar componentes y cargadores de manera diferente, pero simplifica el desarrollo al centrarse en un solo lugar.

Available in English

1. Introducción a Remix y Prisma

Short description:

¡Bienvenidos a RemixConf! Hoy hablaré sobre cómo Remix y Prisma permiten a los desarrolladores front-end convertirse en desarrolladores full-stack. Estas tecnologías te permiten trabajar en diferentes partes del stack sin tener que sumergirte en todas las complejidades de la base de datos y las capas de API. Permítanme presentarme. Soy Saban Adams, un defensor del desarrollo en Prisma. No dudes en contactarme en Twitter @SabanTheDev si tienes alguna pregunta o quieres discutir sobre Remix o Prisma.

Bienvenidos a todos. Muchas gracias por unirse a mí aquí hoy en RemixConf. Estoy súper emocionado de estar hablando aquí, y sé que el programa de conferencias es súper genial y hay muchas charlas interesantes y cosas emocionantes que se están diciendo, así que realmente aprecio que se tomen el tiempo para pasar y escuchar lo que tengo que decir sobre Remix y Prisma. Es súper emocionante para mí estar hablando aquí sobre esto porque uso Remix y Prisma a diario. Tengo la oportunidad de trabajar mucho con estas dos tecnologías, y realmente lo disfruto, y he tenido muchos descubrimientos interesantes, así que estoy súper emocionado de poder hablar sobre algunas de las cosas que he estado aprendiendo hoy. Y como sugiere el título, y como probablemente hayan adivinado, lo que realmente voy a estar hablando es cómo Remix y Prisma permiten a los desarrolladores front-end convertirse en algo así como desarrolladores full-stack. Pueden trabajar en todas las diferentes partes del stack juntas sin tener que aprender todos los detalles complicados de trabajar en la capa de base de datos o la capa de API, donde tal vez estén acostumbrados a trabajar solo en la capa front-end. Remix y Prisma juntos te permiten hacer esto fácilmente y borran un poco las líneas entre los diferentes stacks, así que eso es en lo que se va a centrar esta charla. Pero antes de entrar en algunos de los detalles complicados de eso, permítanme presentarme un poco. Soy Saban Adams, soy un defensor del desarrollo en Prisma, así que tengo la oportunidad de jugar con Prisma a diario, y también he tenido la oportunidad de trabajar mucho con él usando Remix, así que he tenido la oportunidad de jugar bastante con este stack y realmente lo he disfrutado y estoy súper emocionado de compartir lo que he encontrado. Si quieres enviarme un mensaje o hacerme una pregunta sobre esta charla o sobre cualquier cosa en general, ya sea Remix o Prisma, no dudes en enviarme un mensaje a mi Twitter, en SabanTheDev. Respondo mis mensajes directos y estaré monitoreándolos de cerca.

2. La sinergia de Remix y Prisma

Short description:

Remix y Prisma se centran en proporcionar una buena experiencia de desarrollo, lo que te permite comenzar a construir tu software rápidamente. En esta charla, demostraré algunos trucos y te mostraré cómo configurar un proyecto con Remix y Prisma.

así que puedes esperar una respuesta de mi parte tan pronto como pueda. Pero sí, vamos a entrar directamente en ello. Lo primero que tengo aquí es una declaración muy simple, a Remix le encanta Prisma, y la declaración también es cierta en sentido contrario. Prisma ama a Remix. Nuestros dos productos se centran mucho en el mismo objetivo, que es proporcionar una buena experiencia de desarrollo. Sin eso, no tendríamos una misión. Nuestra misión es permitir a los desarrolladores sumergirse en su idea de producto y comenzar a desarrollar de inmediato sin ninguna de esas dificultades al principio, donde estás tratando de poner las cosas en marcha, configurar las cosas, entender tu modelo de datos, todas esas cosas. Nuestro objetivo como productos individuales, Remix y Prisma, es hacer que ese proceso sea muy fácil para ti y permitirte comenzar a construir tus productos, tu software lo antes posible, sin tener que preocuparte por esas cosas. Así que esos son nuestros objetivos. Remix y Prisma te permiten hacer esto, y cuando los combinas, te permiten hacer mucho más mucho más rápido. Y eso es de lo que realmente vamos a hablar hoy. Y de hecho, cerca del final de esta charla, voy a hacer una demostración donde te mostraré algunas de las cosas

3. Roles and Responsibilities

Short description:

Vamos a entender los roles y responsabilidades de los desarrolladores front-end, los desarrolladores back-end y los desarrolladores de bases de datos. Los desarrolladores front-end se centran en las interacciones del usuario, la parte visual y el trabajo con las APIs. Los desarrolladores back-end se encargan de la lógica de negocio, la persistencia de datos, la seguridad y la exposición de datos a través de las APIs. Los desarrolladores de bases de datos se centran en el modelado de datos, la migración de esquemas y la optimización del rendimiento. Cada rol tiene su propio nicho y requiere un aprendizaje continuo.

estos pequeños trucos y mostrándote cómo configurar un proyecto con Remix y Prisma. Pero antes de hacer eso, demos un paso atrás y pensemos en lo que significa ser un desarrollador front-end, lo que significa ser un desarrollador back-end, un desarrollador de database, y luego qué es un desarrollador full-stack y en qué consiste su rol y sus responsabilidades, para tener un contexto de lo que estamos tratando aquí. Así que el primero es el desarrollador front-end. Y los desarrolladores front-end, a un nivel muy alto, se centran en las interacciones del usuario. Se centran en cosas como la parte visual de tu sitio web, la experiencia del usuario mientras utiliza tu sitio web e interactúa con las APIs que tal vez haya construido un desarrollador back-end o un desarrollador full-stack que permiten obtener datos de tu database y mostrarlos en la interfaz de usuario. Y, por supuesto, cuando hablo de las diferentes responsabilidades de estos diferentes tipos de desarrolladores, estas son a un nivel muy alto. Esta no es una lista exhaustiva y no es igual en todas partes. Así que si eres un desarrollador front-end y piensas, wow, hago un poco más que eso, tal vez debería ganar más dinero. Eso es algo que definitivamente puedes hablar con tu manager, pero esta es solo una descripción general de alto nivel de en qué se centran estas posiciones. Así que este es el desarrollador front-end. Ahora veamos al desarrollador back-end. Nuevamente, a un nivel muy alto, los desarrolladores back-end se centran en construir la lógica de negocio. Se centran en construir las cosas que hacen que tu aplicación o tu software funcione como se supone funcionalmente. No se trata tanto de lo que el usuario ve, sino de lo que sucede cuando el usuario tal vez hace clic en un botón, o lo que sucede cuando un usuario guarda algo. Eso es lo que sucede y en eso trabajas como desarrollador back-end. Así que trabajas en la lógica de negocio. Trabajas en persistir datos en tu database. Dentro de la capa de la API o el back-end, recibirás algunos datos y luego deberás guardarlos, probablemente en una database. También te centras y eres responsable de la seguridad de tu aplicación. A medida que los datos fluyen dentro y fuera de tu aplicación, necesitas saber cómo hacerlo de manera segura, cómo mantener seguros los datos de tus usuarios. Y también eres responsable de exponer datos. Construyendo APIs, construyendo puntos finales, construyendo infraestructuras que permitan que algún tipo de consumidor consuma tus datos, obtenga datos de tus recursos. Así que esa es una descripción general de alto nivel de un desarrollador back-end. Y finalmente tenemos al desarrollador de bases de datos y esto puede ser un administrador de bases de datos. Puede ser una posición específica dentro de tu empresa, pero a menudo hay un desarrollador enfocado en la database. Y lo que hacen estos desarrolladores es centrarse en el modelado de datos, en crear el modelo de datos que se ajuste a las necesidades de tu negocio. Se centran en la migración de esquemas, en llevar el esquema de tu database y tu modelo de datos de un punto A a un punto B de manera fluida sin romper nada. Y también se centran en el rendimiento, en poner en marcha índices, escribir consultas de manera más eficiente, para asegurarse de que tu aplicación funcione a la mayor velocidad posible. Así que esa también es una descripción general de alto nivel de las responsabilidades de un desarrollador de bases de datos o DBA. Y si observas todo esto, es mucho trabajo para hacer. Estás abarcando muchas cosas diferentes, e incluso dentro de las secciones individuales, front-end, back-end y desarrolladores de database, hay diferentes nichos en esas secciones que realmente llevan mucho tiempo aprender, y honestamente, puedes

4. Benefits of Remix and Prisma

Short description:

Remix y Prisma facilitan ser un desarrollador full-stack al proporcionar un excelente marco de trabajo para escribir código e interactuar con bases de datos. Remix difumina las líneas entre el front-end y el back-end, permitiéndote escribir código en un solo lugar con un solo lenguaje. Prisma ofrece herramientas para gestionar bases de datos, incluyendo migraciones de esquemas, un lenguaje de modelado y un cliente de base de datos seguro. Estas tecnologías trabajan juntas de manera fluida, proporcionando un buen conjunto de herramientas para construir aplicaciones en todo el stack.

nunca realmente aprender todo. Hay tanto por aprender, tanto por hacer, tantas diferentes responsabilidades. Es por eso que hemos dividido estos roles en diferentes áreas. Así, las personas pueden centrarse en piezas individuales y hacer lo mejor posible en esas piezas.

Ahora tenemos este contexto de las diferencias entre un desarrollador full-stack, un desarrollador front-end , un desarrollador back-end y un desarrollador de bases de datos. Y la conclusión a la que hemos llegado es que eso es mucho. Hay mucho por hacer. Muchas responsabilidades de las que preocuparse . Y lo que voy a mostrarte ahora es cómo Remix y Prisma realmente hacen esto un poco más fácil. Te permiten ser un desarrollador full-stack sin tener que preocuparte realmente por todas estas responsabilidades individuales. O al menos no preocuparte directamente por ellas. Así que echemos un vistazo a cómo Remix ayuda en esto. Lo que Remix te brinda es un excelente marco de trabajo para hacer el front-end y el back-end . Como mencioné antes, difumina las líneas de lo que es el front-end y el back-end incluso. Y lo hace utilizando cosas como funciones de carga y de acción, que son funciones dentro de tu página de plantilla que se empaquetan por separado utilizando esta división automática de código, que es el siguiente punto allí, a partir de tu código front-end. Y maneja estas interacciones de back-end con tu base de datos o con la forma en que estás recuperando datos. Esto es esencialmente tu código de back-end, pero está escrito en el mismo lenguaje y en el mismo lugar que tu código de front-end. Entonces, en pocas palabras, así es como Remix te ayuda a convertirte en más un desarrollador de front-end y back-end, un desarrollador full-stack. Te permite escribir este código en un solo lugar utilizando un solo lenguaje con un solo patrón de organización.

Y luego Prisma te ayuda al brindarte un conjunto de herramientas para interactuar y gestionar tu base de datos de manera fácil. Mientras que Remix se enfoca en escribir código para el front-end y el back-end y unir esas dos piezas, Prisma se enfoca realmente en facilitar tus interacciones entre el back-end y tu base de datos y incluso la gestión de tu base de datos. Lo hace permitiéndote construir fácilmente migraciones de esquemas. Entonces, si necesitas llevar tu base de datos del punto A al punto B, en cuanto a su esquema se refiere, Prisma tiene herramientas que te ayudan a hacer esto fácilmente y te avisa si algo va a salir mal o si necesitas hacer algunos cambios antes de poder aplicar este cambio en la base de datos. También te brinda un lenguaje de modelado para facilitar el modelado de datos. Te proporciona un cliente de base de datos completamente seguro para interactuar con tus datos de manera fácil dentro del código de tu aplicación. Y también te brinda un conjunto de tipos basados en el modelo de tu base de datos o en el esquema de tu base de datos. Y esto es muy útil. Este punto aquí es muy interesante porque estos tipos se basan en tu base de datos y se pueden utilizar en tu código de back-end, pero también porque estás utilizando Remix, y tu back-end y tu front-end están tan entrelazados de esta manera, estos tipos realmente se pueden utilizar en todo tu stack completo. Y esto te brinda un acceso muy fácil para construir una aplicación completamente segura en cuanto a tipos se refiere, simplemente porque estás utilizando Remix y Prisma. Entonces, no solo obtienes esta gran experiencia de desarrollo, donde pasas de un rol de front-end a un rol de full-stack cuando trabajas con Remix y Prisma, sino que también facilita hacer estas cosas porque te brinda este conjunto de herramientas y tipos agradables para trabajar en todo el stack y hacer tu vida aún más fácil. Entonces, estas dos tecnologías realmente son muy buenas entre sí. Se fusionan perfectamente, te brindan un buen conjunto de herramientas para construir tus aplicaciones, y lo que haremos a continuación es construir una aplicación y esta aplicación será muy sencilla, no será la más bonita, pero lo que quiero mostrar aquí es cómo realmente puedes utilizar estas tecnologías para trabajar en todo el stack y construir una aplicación completamente funcional

5. Setting Up Remix and Prisma

Short description:

Vamos directamente a la demostración y veamos qué tenemos. Para empezar, ejecuta npx create-remix en su versión más reciente para configurar tu aplicación de Remix. Esto te proporciona una aplicación full stack lista para ejecutarse. Instala Prisma con npm i Prisma e inicialízalo con npx Prisma init, especificando SQLite como proveedor de origen de datos. Esto configura Prisma en tu aplicación y crea un archivo de esquema para modelar las tablas de tu base de datos. Cambia la URL en el archivo de esquema para que apunte a la ubicación deseada del archivo de base de datos SQLite. La aplicación mostrará una lista de usuarios en una página sin almacenar ni eliminar datos.

Vamos a configurar la aplicación de Remix muy rápidamente y de manera muy sencilla. Así que vamos a pasar directamente a la demostración y veamos qué tenemos. Para empezar, lo que vamos a necesitar hacer es iniciar una aplicación de Remix. Eso es lo que vamos a hacer antes de entrar en los detalles de lo que estamos construyendo aquí. Y para hacer eso, simplemente ejecuta npx create-remix en su versión más reciente, y esto es suficiente para configurar tu aplicación de Remix. Esto te proporciona una aplicación full stack lista para ejecutarse. Solo seguiré los valores predeterminados aquí. Obtendré solo lo básico, el servidor de aplicaciones de Remix. Voy a usar TypeScript y permitiré que instale los paquetes de npm de inmediato. Luego, me moveré al directorio de mi aplicación de Remix. Esa es la aplicación que acabo de crear. Y la abriré en mi editor. Y lo que veremos aquí es una aplicación básica de Remix. Si no estás familiarizado con Remix y cómo organiza sus carpetas y archivos, no dudes en consultar la documentación. Estoy seguro de que muchas personas están hablando de ello en las diversas charlas de hoy. Así que definitivamente échales un vistazo. Pero lo primero que haremos es instalar Prisma. Así que vamos a hacer npm i Prisma. Y esto simplemente instalará la herramienta de línea de comandos de Prisma para que podamos comenzar con Prisma. Y ahora que está instalado, lo inicializaremos. Así que npx Prisma init. Y voy a decir que queremos que el proveedor de origen de datos sea SQLite. Y esto simplemente significa que queremos configurar Prisma en nuestra aplicación y que queremos usar SQLite como nuestra base de datos. Lo que hizo fue generar un archivo de esquema simple llamado schema.prisma. Aquí es donde modelaremos nuestras tablas de base de datos y las diversas piezas de nuestra base de datos. Y lo primero que haré es cambiar esta URL para que apunte al archivo dev.DB. Esto simplemente indica dónde queremos guardar nuestro archivo de base de datos SQLite. Y una vez que realmente comencemos a almacenar algunos datos y a construir nuestro modelo. Y para el modelo de base de datos en sí, lo que esta aplicación hará es simplemente mostrar una lista de usuarios en una página. Así que será muy sencillo. No vamos a almacenar ni eliminar datos.

6. Seeding the Database and Applying the Data Model

Short description:

Vamos a sembrar una base de datos con datos de usuario y aplicar el modelo de datos utilizando una migración. Esto genera un archivo SQL y un cliente Prisma para consultar la base de datos. En el archivo db.ts, importamos el constructor del cliente Prisma y declaramos una variable global para evitar crear múltiples instancias del cliente. Luego podemos sembrar la base de datos creando un archivo seed.ts.

Vamos a sembrar una database con algunos data y mostrarlo en una página. Así que voy a crear un modelo y lo llamaré usuario. Y este usuario va a tener un ID que será una cadena. Y este es la clave primaria. Y luego vamos a decir que debería tener un valor predeterminado de CUID. Así que me dará un ID aleatorio cada vez que se cree un nuevo usuario. Y luego lo siguiente es simplemente un nombre. Vamos a tener un nombre. Y luego también vamos a tener un apodo aquí. Esto también será una cadena. Así que esto es nuestro modelo de datos muy simple. Vamos a tener una tabla de database llamada usuario. Y va a tener estas tres columnas en ella. Y ahora que hemos hecho eso, esto se encarga de nuestro paso de modelado de data, que era una de las cosas de las que tendrías que preocuparte si fueras un administrador de database. Lo siguiente que vamos a hacer es aplicar realmente este modelo de data a nuestra database utilizando una migración. Así que vamos a hacer mpx prisma migrate dev, y le pondremos el nombre de init a esta migración porque es la primera migración que hemos aplicado. Y lo que hace esto es que crea un archivo SQL para nosotros con nuestra migración. Así que esto crea nuestra tabla de database, y luego la aplica realmente. Y luego lo que hizo después de eso es que generó un cliente Prisma para nosotros también. Dice eso aquí. Este es el cliente de database seguro en términos de tipos que nos permite consultar realmente nuestra database desde nuestro código de aplicación. Y como hizo eso, vamos a utilizarlo realmente. Así que aquí, vamos a crear un nuevo archivo, y lo voy a hacer en la carpeta de la aplicación, y se llamará db.ts. Y en este archivo db.ts, voy a pegar un pequeño fragmento de código, y voy a explicar qué hace. Lo que estamos haciendo aquí es importar el constructor del cliente Prisma. Así que esto es para construir nuestra instancia del cliente Prisma. También estoy declarando una variable global llamada __prisma, y la razón por la que hago esto es para que cuando trabajemos en un entorno de recarga en vivo porque estamos en modo de desarrollo cuando ejecutamos esto, no va a crear nuevas instancias del cliente Prisma y agotar los recursos de nuestra database creando demasiadas conexiones. Va a decir que ya sabe que hay un Prisma, así que no va a crear uno nuevo. Así que eso es lo que estamos haciendo aquí, y lo que podemos hacer a continuación es sembrar nuestra database. Para hacer eso, voy a entrar en la carpeta de Prisma,

7. Importando el Cliente Prisma y Sembrando la Base de Datos

Short description:

En esta parte, importamos el cliente Prisma y creamos una función llamada main para crear algunos datos. Configuramos el script de sembrado en package.json e instalamos ts-node. Ejecutando npx prisma db seed se poblara la base de datos. Luego creamos una función de carga en Remix que devuelve JSON de la consulta Prisma, obteniendo todos los usuarios.

Crearemos un archivo llamado seed.ts. También importaré el cliente Prisma aquí. Desde Prisma/cliente, y luego en la siguiente línea, crearé una nueva constante llamada Prisma, y será igual a un nuevo cliente Prisma. Luego, agregaremos una función aquí llamada async function main. Y esta función simplemente creará algunos data para nosotros. Así que esperaremos Prisma. Veremos esta agradable autocompletación aquí. Podemos usar el usuario y vamos a crear un usuario. Y para hacer esto, queremos darle algunos data, así que le daremos un nombre. Pondré Sabin Adams y apodo. Solo pondré Sabin el mundo. Luego, copiaré esto un par de veces. Y hagamos dos y tres para que sepamos que son diferentes. No es muy creativo, pero al menos podemos mostrar que esto va a funcionar. Por último, necesitamos llamar a esto y luego podemos ir a package.json y aquí es donde vamos a configurar cómo ejecutar el script de sembrado, así que crearemos una clave Prisma aquí. Agregaremos un sembrado y luego hagamos ts-node Prisma/seed.ts. Y para hacer esto, vamos a necesitar instalar ts-node. Así que abriré una terminal y haré, veamos, npm i ts-node. Listo, ya lo hemos instalado. Ahora deberíamos poder guardar esto y ejecutar el comando npx prisma db seed. Y esto debería ejecutar nuestro script de sembrado. Y ahora tenemos data en nuestra base de datos. En este punto, podemos crear realmente una función de carga en Remix. Así que haremos una exportación const loader. Y eso va a ser una función que va a devolver algunos data. Y lo que va a devolver es un JSON de Remix run node. Y este JSON va a ser los resultados de nuestra consulta Prisma. Así que importamos nuestra instancia Prisma de nuestro archivo DB que creamos. Y vamos a decir const usuarios = await Prisma.usuario.findMany. Esto va a obtener todos los usuarios

8. Mostrando Datos y Conclusión

Short description:

Necesitamos asegurarnos de que esto sea una función asincrónica y devolverlo como JSON. Luego, queremos obtener los datos desde el backend hasta el frontend. Usamos los datos del cargador para obtener una lista de usuarios y luego construimos nuestra lista mapeando los usuarios y mostrando su nombre y apodo. Ejecutar npm run dev iniciará el servidor y mostrará los datos. Configurar una aplicación de pila completa con Remix y Prisma es simple y proporciona seguridad de tipo de extremo a extremo. ¡Gracias por acompañarme hoy!

que tenemos. Y luego debemos asegurarnos de que esto sea una función asincrónica. Y luego lo devolveremos como JSON. Lo siguiente que queremos hacer es realmente obtener estos data. Este es el código del backend aquí, pero queremos obtenerlo en nuestro frontend. Entonces vamos a usar estos datos del cargador haciendo const data equals use loader data. Y creo que esto debería ser en realidad usuarios. Y luego, lo que esto va a ser, podemos configurar el tipo de esto y será el tipo de nuestra función de cargador. Entonces, esta función de cargador va a devolver una lista de usuarios y obtiene este tipo de usuario de Prisma. Y ahora sabemos que desde aquí, esto será en realidad, hagamos usuarios así. Sí, ahora sabemos que tenemos este objeto de usuarios y que será una lista de usuarios. Y lo último que podemos hacer para terminar esto y mostrarlo es construir nuestra lista. Entonces vamos a hacer usuarios.map y vamos a decir que vamos a obtener un usuario de cada uno de estos. Y esto simplemente será un Li. Y dentro de este etiqueta Li vamos a mostrar, hagamos el nombre. Entonces vamos a hacer user dot y puedes ver que obtenemos una buena autocompletación aquí porque obtenemos esos tipos y también haremos una etiqueta p debajo de eso con el apodo. Y creo que esto nos va a dar un error a menos que tengamos una clave. Así que también agregaré una clave. Ahí lo tienes. Si ejecuto esto, npm run dev, deberíamos ver que tenemos un servidor en ejecución en localhost. Y si muevo esto aquí, ahí lo tienes. Tenemos nuestros data. Ahora tenemos una aplicación de pila completa y fue muy fácil de configurar. Configuramos nuestra base de datos con una migración, configuramos nuestra aplicación de pila completa con nuestro código del backend. Y luego también obtuvimos nuestro código del frontend. Y como bonificación, también obtuvimos seguridad de tipo de extremo a extremo porque estamos usando Prisma y porque el código del frontend y del backend está en el mismo archivo, es muy fácil configurar esto.

Así que quiero agradecerles nuevamente por acompañarme hoy. Y espero que esto les haya sido útil. Y espero que les haya mostrado un poco lo fácil que es configurar esta aplicación de pila completa y trabajar en todas las áreas diferentes de la pila utilizando Remix y Prisma. Esta fue una descripción general de alto nivel. Solo se puede abarcar tanto en 20 minutos.

9. Remix y Prisma Series

Short description:

Si quieres aprender más sobre cómo usar Remix y Prisma junto con MongoDB, he escrito una serie que proporciona una descripción detallada de cómo construir una aplicación completa. Echa un vistazo al enlace para más detalles. ¡Gracias por acompañarme y disfruta del resto de la conferencia!

Pero si quieres profundizar un poco más, tengo una serie que he escrito aquí que explora el uso de Remix y Prisma juntos, específicamente con MongoDB. Y esto cubrirá una descripción general detallada de cómo construir una aplicación completa utilizando Remix y Prisma. Así que si sigues este enlace aquí, te llevará a la serie que he escrito. Pero muchas gracias por acompañarme y espero que tengas un gran resto de la conferencia. Adiós. ¡Hola, cómo estás? Genial. Genial. ¿Cómo estás tú? Bien. Muchas gracias por esa charla. Fue realmente maravillosa. Primero, queremos cambiar a Slido y ver los resultados de la pregunta que hiciste. Así que dijimos, ¿has usado Prisma antes? Sí o no. Y parece que el 73% de nuestra audiencia ha usado Prisma antes. Eso es un gran número. Eso es increíble. Me encanta ver eso. Es genial. Lo sé. Me encanta ver eso también. Es realmente asombroso. Y luego tenemos una pregunta también, que hicimos a la audiencia al principio y también le hacemos a cada ponente. ¿Cuál es tu función favorita de Remix? Sí, siento que es una función muy típica que usa mi favorita, pero simplemente los cargadores y las acciones, la forma en que están ahí mismo junto a tu código. Me encanta tanto. Hace las cosas tan fáciles. Estoy completamente de acuerdo con eso también. Me encanta que también use las API de la plataforma. Así que te familiarizas más con el trabajo con la web al usar Remix, y me encantan los cargadores y las acciones por eso. Sí, absolutamente. Me recuerda a cuando desarrollaba con ColdFusion cuando estaba comenzando mi carrera, y me recuerda a eso porque todo tu código usaba estándares web y era

10. Explicación del ORM de Prisma

Short description:

Un ORM es una abstracción sobre la base de datos que te permite mapear tus modelos en la base de datos a modelos JavaScript o JSON en el código de tu aplicación. Unifica la interacción con la base de datos en un solo lenguaje, como JavaScript en el caso de Prisma.

todo junto. Es simplemente muy bueno. Sí, absolutamente, y en mi introducción mencioné, ¿qué es un ORM? ¿Sabemos qué es un ORM? Y dije que es un mapeador objeto-relacional, pero no sé si eso realmente me lo explica. ¿Puedes explicar un poco mejor qué hace realmente Prisma? Sí, en sentido general, un ORM es una abstracción sobre la base de datos que te permite mapear tus modelos en la base de datos o en tu esquema a modelos JavaScript o JSON en el código de tu aplicación. Y la parte interesante es que no necesitas utilizar el lenguaje específico de la base de datos subyacente, ya que suelen ser difíciles de aprender y varían de una base de datos a otra. Unifica todo en un solo lenguaje, como JavaScript en el caso de Prisma, donde puedes interactuar con tu base de datos sin tener que conocer el lenguaje específico de esa base de datos.

11. Integración y Beneficios de Prisma

Short description:

Anteriormente he utilizado Prisma con KpopStack de Netlify, escribiendo código JavaScript sin problemas que funcionaba tanto con Supabase como con Prisma. Puedes cambiar de base de datos cambiando un indicador en el esquema. Prisma ofrece una seguridad de tipo de primera clase, generando tipos basados en la consulta real. No es necesario conocer bien las bases de datos para usar Prisma, ya que puedes construir consultas utilizando JavaScript y utilizar el registro para ver qué está sucediendo bajo el capó.

conocimiento. Sí, eso tiene un poco más de sentido, y eso en realidad plantea algo más que he utilizado Prisma antes cuando estaba integrado con KpopStack de Netlify, y utiliza Supabase y Prisma como una capa ORM para usar JavaScript para interactuar con la base de datos. Y luego estaba siguiendo el tutorial de chistes en el sitio de Remix y utiliza, creo, SQLite como la base de datos, y fue muy fácil para mí simplemente escribir mi código JavaScript que iba a ambas bases de datos y funcionaba, y era el mismo código exacto, lo cual fue algo loco. Sí, sí, incluso hemos visto a personas en Prisma desarrollar una aplicación con una base de datos y luego decidir mucho después, sabes qué, tal vez quiero usar SQL en lugar de Postgres o algo como MySQL, y simplemente cambian el indicador en su esquema y funciona. Así que es bueno para experimentar. Sí, eso también es sorprendente, que pueda cambiar eso. Y ¿hay algo con lo que no funcione, supongo? Bueno, sí, siempre va a haber, siempre va a haber algunas cosas específicas de la base de datos, como tipos de datos o tal vez funciones específicas que tienen dentro de cada base de datos que admitimos a través de atributos específicos en Prisma que pueden no funcionar cuando cambias el indicador. Sin embargo, la extensión de Prisma para VS Code señalará eso y no te permitirá generar Prisma hasta que soluciones esos problemas. De acuerdo. Eso responde un poco otra pregunta que tengo, como ¿qué problemas resuelve Prisma?, pero ¿hay otros beneficios de Prisma o algo más que destaque para ti como experiencia de desarrollo o algo que sea realmente una buena característica y una razón para usar Prisma? Sí, absolutamente. Creo que, como dice el sitio web, y como prácticamente cualquier persona que hable sobre Prisma dirá, la seguridad de tipo que ofrece es de primera clase. Hay muchos ORMs por ahí que ofrecen seguridad de tipo, pero no la ofrecen en el grado en que lo hacemos nosotros. Por lo general, los ORMs tienen una clase que representa cada modelo en tu base de datos. Y cuando consultas la base de datos, obtienes una representación de esa clase. Sin embargo, con Prisma, los tipos se generan en función de la consulta real que ejecutas. Entonces, sabes con certeza que el tipo se va a modelar exactamente en función de lo que obtuviste de la base de datos. Así que eso es de gran ayuda. Y hasta que realmente lo uses en una aplicación, puede ser un poco confuso. Pero una vez que realmente lo implementas en una aplicación más grande, es ridículamente útil. Creo que eso es cierto. Como la seguridad de tipo es algo bueno de tener. Y cuando está integrada y se hace por ti y de una manera realmente buena, creo que eso es genial. He tenido problemas con TypeScript antes donde tus tipos no se generan automáticamente. Y así que si puedes tener seguridad de tipo lista para usar, creo que eso es increíble. Entonces, ¿necesito conocer bien las bases de datos para adentrarme en el desarrollo full stack, volviendo a tu charla y a lo que se trata? Sí, diría que no. Creo que una buena comprensión de lo que hace una base de datos y cómo interactuar manualmente con la base de datos subyacente es algo bueno. Pero creo que especialmente cuando estás comenzando, no es necesario en absoluto si estás usando algo como Prisma. Puedes construir tus consultas utilizando el lenguaje que ya estás aprendiendo, JavaScript. Y luego, si quieres profundizar y ver qué está sucediendo bajo el capó, hay registro donde puedes imprimir las consultas y ver qué está haciendo. Así que podrías ajustar esas consultas en consultas en bruto si realmente necesitas hacerlo. Así que incluso podría ayudarte a aprender el lenguaje de la base de datos donde podrías escribir tu lenguaje que ya conoces.

QnA

Impacto de Prisma en los Desarrolladores Backend

Short description:

Puedes aprender cómo escribir consultas en la base de datos utilizando ORM y ColdFusion. Los desarrolladores backend tradicionales perciben a Prisma en Remix de manera positiva debido a la seguridad de tipo y una experiencia de desarrollo más fluida. Actualmente, Prisma no ofrece una forma de manejar actualizaciones en el modelo cuando el tipo de una columna cambia. Si bien puedes cambiar la estructura de la base de datos con Prisma, manipular datos dentro de columnas y tablas está fuera de las capacidades actuales de Prisma.

JavaScript, y luego ver qué está escribiendo. Y puedes aprender cómo escribir la consulta en la base de datos. Sí. Sí, claro. Quiero decir, incluso con mi propia experiencia personal, así es como aprendí a trabajar con bases de datos, estaba usando ORM y ColdFusion y estaba revisando los registros y ajustando las consultas, y eso te ayuda a construir ese conocimiento inicial que necesitas comprender. Eso es genial. De acuerdo. Chris de la audiencia pregunta, en tu experiencia, ¿cómo perciben esto los desarrolladores backend más tradicionales? Teniendo Prisma en algo como Remix, donde las líneas están mucho más difuminadas.

Diría que un desarrollador backend tradicional definitivamente recibiría esto de buena manera, específicamente debido a la seguridad de tipo que mencionamos y no tener que tener ese conocimiento específico sobre cada base de datos subyacente. Pero también, porque permite que todo tu proyecto tenga un poco más de sinergia cuando utilizas la herramienta de migración que Prisma ofrece cuando usas el cliente de Prisma. Cuando juntas todas estas cosas, obtienes una buena experiencia de desarrollo que en su mayor parte, es un camino tranquilo, creo. Genial. Sí, esa es una gran respuesta. De acuerdo. Vladimir pregunta, ¿Prisma ofrece una forma de manejar actualizaciones en el modelo cuando el tipo de una columna cambia y necesitas manipular esos datos que ya estaban en la columna que estás cambiando? Por ejemplo, cambiar algo de una cadena a un número y necesitar decidir cuáles serán los nuevos valores. Entiendo. Eso sería algo similar a una migración de datos. Y no, dentro del ecosistema de Prisma, en realidad no lo admitimos. Hay guías y tutoriales sobre cómo solucionarlo. Pero a medida que manejamos más de la migración de esquemas, aún no lo admitimos. Está en el plan de desarrollo. Es algo de lo que hemos hablado y estamos investigando. Pero por el momento, no puedes cambiar realmente los datos junto con tu migración. De acuerdo. Entonces, estoy tratando de entender esto. Configuras tu esquema y tienes tu estructura de datos, y en realidad no puedes cambiar eso con Prisma. ¿Es eso lo que estás diciendo? Entonces puedes cambiar el esquema. Puedes cambiar la estructura de la base de datos, las columnas, las tablas, pero los datos dentro de esas columnas y tablas,

Desarrollando una Aplicación Full Stack con Remix

Short description:

Desarrollar una aplicación full stack con Remix difiere de una aplicación tradicional con front-end y back-end separados. En una aplicación tradicional, el front-end y el back-end se desarrollan por separado y se comunican entre sí. Con Remix, todo está en un solo lugar, y cada archivo o ruta de front-end tiene una ruta de API asociada. Esto requiere más consideración para estructurar componentes y cargadores. Sin embargo, simplifica el desarrollo al centrarse en un solo lugar. El sistema de enrutamiento de Remix trata cada ruta como una entidad propia, cargando su propio estado y datos específicos. Esto requiere una mentalidad diferente en comparación con las aplicaciones tradicionales.

eso es algo que está fuera de Prisma por ahora. De acuerdo, perfecto. Eso tiene sentido. Muy bien. Volvamos a las preguntas sobre la charla. ¿En qué se diferencia el desarrollo de una aplicación full stack con Remix de una aplicación tradicional con front-end y back-end separados? Sí, esta es una pregunta que me han hecho muchas veces y hay grandes diferencias. Creo que mucha gente que ha usado Remix lo sabe, pero para los que recién comienzan, puede ser un poco confuso. La diferencia aquí es que con una aplicación tradicional, tendrías tu front-end y tu back-end. Desarrollarías esos por separado y luego los dos se comunicarían entre sí, lo cual es genial. Eso es lo que hemos hecho durante mucho tiempo, pero con Remix, es un paradigma diferente y un cambio de mentalidad en el que todo eso está en un solo lugar, y puedes pensar en cada archivo en tu front-end o básicamente cada ruta con tu front-end también tiene una ruta de API que le acompaña. Por lo tanto, requiere que pienses un poco más en cómo estás estructurando estas cosas. Cuando tienes componentes padres con componentes hijos y tal vez cargadores en cada uno de ellos, debes pensar en cuándo se activarán esos cargadores. Por lo tanto, es un cambio de mentalidad, pero en su mayor parte es un poco más simple porque ahora te preocupas por un solo lugar. Creo que eso tiene mucho sentido debido a la forma en que Remix maneja el enrutamiento y cada ruta es algo independiente. Necesita cargar su propio estado. Necesita cargar los datos para esa ruta específicamente, y eso podría estar en una página con otras cosas, por lo que debes pensar en ello de manera un poco diferente. Sí, exacto. Sí. Muy bien. Bueno, no veo más preguntas de la audiencia y parece que estamos casi sin tiempo. Así que, gracias. Muchas gracias por acompañarnos y por responder todas estas preguntas. Fue increíble y disfruta el resto de la conferencia. Genial. Sí. Muchas gracias. Esto fue muy divertido. Sí. Gracias. Fue un gusto tenerte aquí.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Building Better Websites with Remix
Top Content
Remix is a new web framework from the creators of React Router that helps you build better, faster websites through a solid understanding of web fundamentals. Remix takes care of the heavy lifting like server rendering, code splitting, prefetching, and navigation and leaves you with the fun part: building something awesome!
React Advanced Conference 2021React Advanced Conference 2021
39 min
Don't Solve Problems, Eliminate Them
Top Content
Humans are natural problem solvers and we're good enough at it that we've survived over the centuries and become the dominant species of the planet. Because we're so good at it, we sometimes become problem seekers too–looking for problems we can solve. Those who most successfully accomplish their goals are the problem eliminators. Let's talk about the distinction between solving and eliminating problems with examples from inside and outside the coding world.
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.
JSNation Live 2021JSNation Live 2021
29 min
Making JavaScript on WebAssembly Fast
Top Content
JavaScript in the browser runs many times faster than it did two decades ago. And that happened because the browser vendors spent that time working on intensive performance optimizations in their JavaScript engines.Because of this optimization work, JavaScript is now running in many places besides the browser. But there are still some environments where the JS engines can’t apply those optimizations in the right way to make things fast.We’re working to solve this, beginning a whole new wave of JavaScript optimization work. We’re improving JavaScript performance for entirely different environments, where different rules apply. And this is possible because of WebAssembly. In this talk, I'll explain how this all works and what's coming next.
React Summit 2023React Summit 2023
24 min
Debugging JS
Top Content
As developers, we spend much of our time debugging apps - often code we didn't even write. Sadly, few developers have ever been taught how to approach debugging - it's something most of us learn through painful experience.  The good news is you _can_ learn how to debug effectively, and there's several key techniques and tools you can use for debugging JS and React apps.

Workshops on related topic

React Summit 2022React Summit 2022
136 min
Remix Fundamentals
Top Content
Featured WorkshopFree
Building modern web applications is riddled with complexity And that's only if you bother to deal with the problems
Tired of wiring up onSubmit to backend APIs and making sure your client-side cache stays up-to-date? Wouldn't it be cool to be able to use the global nature of CSS to your benefit, rather than find tools or conventions to avoid or work around it? And how would you like nested layouts with intelligent and performance optimized data management that just works™?
Remix solves some of these problems, and completely eliminates the rest. You don't even have to think about server cache management or global CSS namespace clashes. It's not that Remix has APIs to avoid these problems, they simply don't exist when you're using Remix. Oh, and you don't need that huge complex graphql client when you're using Remix. They've got you covered. Ready to build faster apps faster?
At the end of this workshop, you'll know how to:- Create Remix Routes- Style Remix applications- Load data in Remix loaders- Mutate data with forms and actions
JSNation 2023JSNation 2023
174 min
Developing Dynamic Blogs with SvelteKit & Storyblok: A Hands-on Workshop
Featured WorkshopFree
This SvelteKit workshop explores the integration of 3rd party services, such as Storyblok, in a SvelteKit project. Participants will learn how to create a SvelteKit project, leverage Svelte components, and connect to external APIs. The workshop covers important concepts including SSR, CSR, static site generation, and deploying the application using adapters. By the end of the workshop, attendees will have a solid understanding of building SvelteKit applications with API integrations and be prepared for deployment.
React Summit 2023React Summit 2023
106 min
Back to the Roots With Remix
Featured Workshop
The modern web would be different without rich client-side applications supported by powerful frameworks: React, Angular, Vue, Lit, and many others. These frameworks rely on client-side JavaScript, which is their core. However, there are other approaches to rendering. One of them (quite old, by the way) is server-side rendering entirely without JavaScript. Let's find out if this is a good idea and how Remix can help us with it?
Prerequisites- Good understanding of JavaScript or TypeScript- It would help to have experience with React, Redux, Node.js and writing FrontEnd and BackEnd applications- Preinstall Node.js, npm- We prefer to use VSCode, but also cloud IDEs such as codesandbox (other IDEs are also ok)
Remix Conf Europe 2022Remix Conf Europe 2022
195 min
How to Solve Real-World Problems with Remix
Featured Workshop
- Errors? How to render and log your server and client errorsa - When to return errors vs throwb - Setup logging service like Sentry, LogRocket, and Bugsnag- Forms? How to validate and handle multi-page formsa - Use zod to validate form data in your actionb - Step through multi-page forms without losing data- Stuck? How to patch bugs or missing features in Remix so you can move ona - Use patch-package to quickly fix your Remix installb - Show tool for managing multiple patches and cherry-pick open PRs- Users? How to handle multi-tenant apps with Prismaa - Determine tenant by host or by userb - Multiple database or single database/multiple schemasc - Ensures tenant data always separate from others
React Advanced Conference 2022React Advanced Conference 2022
95 min
End-To-End Type Safety with React, GraphQL & Prisma
Featured WorkshopFree
In this workshop, you will get a first-hand look at what end-to-end type safety is and why it is important. To accomplish this, you’ll be building a GraphQL API using modern, relevant tools which will be consumed by a React client.
Prerequisites: - Node.js installed on your machine (12.2.X / 14.X)- It is recommended (but not required) to use VS Code for the practical tasks- An IDE installed (VSCode recommended)- (Good to have)*A basic understanding of Node.js, React, and TypeScript
Remix Conf Europe 2022Remix Conf Europe 2022
156 min
Build and Launch a personal blog using Remix and Vercel
Featured Workshop
In this workshop we will learn how to build a personal blog from scratch using Remix, TailwindCSS. The blog will be hosted on Vercel and all the content will be dynamically served from a separate GitHub repository. We will be using HTTP Caching for the blog posts.
What we want to achieve at the end of the workshop is to have a list of our blog posts displayed on the deployed version of the website, the ability to filter them and to read them individually.
Table of contents: - Setup a Remix Project with a predefined stack- Install additional dependencies- Read content from GiHub- Display Content from GitHub- Parse the content and load it within our app using mdx-bundler- Create separate blog post page to have them displayed standalone- Add filters on the initial list of blog posts