Curso intensivo de TypeScript para contenido de un CMS sin cabeza

Rate this content
Bookmark

En este masterclass, primero te mostraré cómo crear un nuevo proyecto en un CMS sin cabeza, llenarlo con datos y usar el contenido en tu proyecto. Luego, pasaremos el resto del tiempo en código, haremos lo siguiente:

- Generar modelos y estructuras de tipo fuertemente tipados para el contenido obtenido.

- Usar el contenido en componentes

- Resolver contenido de campos de texto enriquecido en componentes de React

- Tocar los pipelines de implementación y las posibilidades de descubrir problemas relacionados con el contenido antes de llegar a producción


Aprenderás:

- Cómo trabajar con contenido de un CMS sin cabeza

- Cómo se puede aprovechar el modelo de contenido para generar tipos en TypeScript y qué beneficios aporta a tu proyecto

- Cómo dejar de usar literales de cadena para el contenido en el código

- Cómo resolver texto enriquecido en componentes de React

- Cómo minimizar o evitar problemas relacionados con el contenido antes de llegar a producción

This workshop has been presented at React Summit 2022, check out the latest edition of this React Conference.

FAQ

Un CMS sin cabeza es un sistema de gestión de contenido que proporciona una forma de trabajar con contenido a través de una API, lo que permite desarrollar interfaces de usuario personalizadas en cualquier plataforma sin estar ligado a una presentación específica del contenido.

El masterclass cubrirá cómo trabajar con contenido en TypeScript y componentes React, incluyendo la importación de contenido en un nuevo proyecto, la creación de modelos TypeScript a partir de tipos de contenido y la resolución de textos enriquecidos en componentes React.

Puedes importar el contenido utilizando el ID del proyecto de CMS proporcionado, lo que te permite trabajar con el contenido incluso sin necesidad de registrarte en el CMS. Durante el masterclass, se mostrará cómo importar y gestionar este contenido dentro de un proyecto.

Next.js es apreciado por su flexibilidad y facilidad de uso, permitiendo construir sitios web eficientes con mejores prácticas de SEO y optimización de rendimiento. Ofrece funcionalidades como generación estática y server-side rendering, que son esenciales para proyectos modernos.

Se utiliza un proceso que verifica el modelo de contenido con cada compilación. Esto ayuda a minimizar los errores de producción relacionados con contenido faltante o mal configurado, asegurando que los cambios en el CMS no afecten negativamente al sitio en producción.

En el masterclass se utiliza una herramienta automática que toma las definiciones de tipos de contenido del CMS y genera modelos de tipo fuertemente tipados para el contenido, lo que facilita el desarrollo y mantenimiento del código.

Se proporcionará un enlace en la ventana de chat del masterclass para clonar el repositorio, que incluye una plantilla de JS con varias páginas preconfiguradas, lo cual es esencial para seguir los ejercicios prácticos del curso.

Ondrej Polesny
Ondrej Polesny
98 min
01 Jul, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Comencemos con el masterclass, importando contenido en un nuevo proyecto, trabajando en el contenido y pasando la mayor parte del tiempo en código. Discutiremos el modelo de contenido y las limitaciones de los componentes, generaremos modelos de TypeScript, obtendremos contenido y ajustaremos componentes. También cubriremos la creación de páginas de slug, implementaremos getStaticPaths, renderizaremos páginas de destino y resolveremos elementos de contenido como componentes de React. Además, abordaremos la implementación del componente de navegación y los pipelines de implementación para rastrear cambios en el modelo de contenido.

1. Introducción al Masterclass

Short description:

Comencemos con el masterclass. Importaremos contenido en un nuevo proyecto, trabajaremos en el contenido y pasaremos la mayor parte del tiempo en código. Te mostraré la implementación en Next.js y cómo generar modelos TypeScript a partir de tipos de contenido. Luego, obtendremos el contenido en Next.js y resolveremos textos enriquecidos en componentes React. También discutiremos cómo implementar canalizaciones de implementación para evitar errores en producción. Primero, clona el repositorio del proyecto e instala las dependencias.

¡Vamos allá! Comencemos con el masterclass. En primer lugar, déjenme saludarlos a todos aquí. Es un gran placer para mí estar aquí para mostrarles algunas cosas relacionadas con TypeScript. Me uno a ustedes desde la República Checa, Brno, donde tenemos nuestra sede. Soy Andrey, soy un evangelista de desarrollo para contenido. Somos un proveedor de CMS sin cabeza. Estoy seguro de que conocen la empresa. Les mostraré un poco del CMS mientras trabajamos en el contenido y mientras avanzamos en el masterclass, pero hoy no es una presentación de producto, quiero mostrarles cómo trabajar con contenido en TypeScript y componentes React, ¿de acuerdo?

Entonces, en primer lugar, un poco de organización. El masterclass está siendo grabado, por lo que pueden volver a cualquier momento si se pierden algo o si se atascan en algo. Trataré de ir despacio. Pero siempre pueden volver o simplemente preguntarme directamente si algo no está claro.

Lo que vamos a hacer, y, oh, espero que vean mi pantalla. Sí, creo que sí. Entonces, ¿cuál es la línea de tiempo del masterclass de hoy? Sé que está diseñado para tres horas. Siempre trato de ser un poco más rápido porque es realmente difícil mantener la concentración durante tanto tiempo. Lo que vamos a hacer en este masterclass es primero importar contenido en un nuevo proyecto. Entonces, vamos a crear un nuevo proyecto en el CMS. Vamos a importar algo de contenido allí. Si están registrados en el contenido, genial. Les mostraré cómo importarlo. Si no están registrados y no quieren registrarse, también está bien. Les daré el ID del proyecto de mi proyecto y pueden trabajar con el contenido de esa manera de todos modos. Entonces, no tienen que registrarse en ningún lugar. Probablemente vamos a trabajar un poco en el contenido. Pero no tanto. Pasaremos la mayor parte del tiempo en código. Así que eso debería estar bien. Luego les mostraré la implementación en Next.js. Voy a usar Next.js porque, para ser honesto, es el que más me gusta actualmente. Tenemos todo nuestro sitio web construido con Next.js. Realmente me gusta su flexibilidad y facilidad de uso. Así que voy a usar Next.js, pero los principios se pueden aplicar en cualquier framework si están usando Vue.js o si están usando Gatsby. Gatsby depende, pero creo que ahora también admiten TypeScript, así que debería estar bien. Les mostraré cómo se ve el código. Les mostraré cómo se ve el sitio web. Y luego pasaremos a generar modelos TypeScript a partir de tipos de contenido. Les mostraré cómo llevar el contenido del CMS sin cabeza a su proyecto y generar no solo los modelos TypeScript, sino también la estructura del proyecto. Eso significa nombres de código y todas las demás cosas. Luego les mostraré cómo obtener el contenido en Next.js. Eso es bastante sencillo ya que tenemos un SDK en TypeScript. Y luego les mostraré cómo resolver textos enriquecidos en componentes React. De eso se trata todo. Vincular los componentes React a sus respectivos modelos de contenido. Así es fácil mantener todo. Y al final, hay un pequeño espacio para la discusión sobre cómo implementar canalizaciones de implementación de manera que los cambios de contenido en el lado del CMS sin cabeza no causen errores en producción. Hemos implementado una forma de verificar el modelo de contenido con cada compilación para que puedan evitar los errores de producción en términos de contenido faltante o contenido mal configurado al mínimo. Así que eso es sobre la línea de tiempo del masterclass. Sí. Y sí, comencemos.

Primero, vamos a importar las cosas en el CMS. Luego vamos a abrir Visual Studio Code y nos quedaremos allí durante el resto del masterclass. Entonces, en primer lugar, voy a hacer eso también. El primer paso para ustedes es clonar el repositorio del proyecto. Ahora, no quiero dejarlos en blanco donde estarían trabajando por su cuenta. Prefiero ir más despacio y dejar que trabajen en las tareas mientras hablo. Así que siéntanse libres de hacer los pasos mientras los hago. Y si se atascan en algo, entonces avísenme directamente en la ventana de chat o simplemente únanse al masterclass y díganme. Repetiré cualquier cosa si algo no está claro, ¿de acuerdo?

Entonces, en primer lugar, vamos a clonar el repositorio del proyecto. Espero que tengan el enlace, pero si no lo tienen, lo voy a poner en la ventana de chat, ¿de acuerdo? Así que allá vamos. Este es el repositorio. Es una plantilla de JS agradable que tiene algunas páginas. Así que voy a hacer lo mismo. En realidad, voy a cambiar a Visual Studio. ¿Todavía pueden ver mi pantalla? ¿Pueden ver Visual Studio ahora? Perfecto. Sí. Porque perdí el borde verde, ¿verdad, perfecto? Así que voy a poner aquí una nueva terminal, y simplemente voy a clonar el URL con git. Y vamos, CD Workshop. Ahora, en primer lugar, voy a hacer npm i. Así que voy a usar NPMI para instalar las dependencias, porque tengo una mala experiencia de uno de los talleres anteriores donde NPMI tardó 25 minutos.

2. Importando Paquete de Contenido y Verificando Datos

Short description:

Para importar el paquete de contenido, ve al administrador de plantillas de contenido, pega el ID del proyecto y arrastra y suelta el paquete. Haz clic en preparar para importar e importar datos. Después de unos segundos, el contenido debería aparecer en el repositorio. Para verificar si los datos se importaron correctamente, ve a deliver.content.ai e ingresa el ID del proyecto seguido de /items. Puedes ver los datos JSON desde el CDN. El complemento utilizado para formatear el JSON es Firefox.

Entonces, prefiero hacer esto cuando estoy hablando de otras cosas. Así que siéntete libre de hacerlo también cuando lo clones. Es un proyecto bastante pequeño, así que no debería llevar mucho tiempo. Y deberíamos tener, bien, voy a abrir la carpeta, y deberíamos estar, deberíamos estar aquí.

Ahora, lo importante aquí en este proyecto es este paquete, content-workshop-import-package.zip. Cómo funciona esto es, en el CMS, si tienes un proyecto, siempre puedes hacer una exportación del proyecto que crea un paquete zip, luego puedes tomar ese paquete e importarlo en otro proyecto fácilmente a través del administrador de plantillas de contenido. Así que esto no es solo una herramienta de respaldo, también es cuando quieres hacer o quieres dar un proyecto real a un colega o cualquier otra cosa.

Ahora, esto está en kentico.github.io.com slash content template manager. Voy a, nuevamente, poner esto en el chat para todos. Y lo que realmente queremos hacer ahora es importarlo en el CMS. Ahora, si no te has registrado en el CMS, puedes ir a content.ai, hacer clic en para desarrolladores, hacer clic en obtener el plan de desarrollador gratuito, y esto te llevará a una página de registro. Si haces clic en obtener el plan de desarrollador gratuito, obtendrás una prueba gratuita. Luego, después de la prueba, puedes cambiar a un plan de desarrollador gratuito, que es gratuito para siempre y es bastante generoso. Pero nuevamente, si no quieres unirte, si no quieres crear un nuevo proyecto, está bien también. Solo compartiré contigo el ID del proyecto y puedes usar el mío. Eso está bien. Así que voy a iniciar sesión, y eso me lleva directamente al proyecto. Si creas un nuevo proyecto en el CMS, si te registras, esto es lo que verás inicialmente. Este es un proyecto vacío, no hay nada aquí. Este es el coche de inicio, pero en el contenido y los activos, está un poco solitario aquí, no hay contenido aquí, lo cual está bien si estás viendo lo mismo. Lo que nos interesa ahora son las configuraciones del proyecto y queremos ir a las claves de API. Ahora, este es el ID del proyecto, también encontrarás el mismo ID en el archivo readme del repositorio de GitHub. Así que este es el ID aquí. Ese es el ID de mi proyecto donde voy a importar los data ahora. Para la importación, vas a necesitar un ID de proyecto y también vas a necesitar la clave de API de administración. Así que están en la misma pantalla aquí. Y en el administrador de plantillas de contenido solo voy a ir y hacer clic en importar y pegar el ID del proyecto aquí. Hay un campo para el ID del proyecto de destino así que eso es lo primero y la clave de API de administración de contenido está en la tarjeta derecha aquí. Solo voy a copiar eso. Voy a hacer clic aquí en publicar idioma después de la importación. Eso es porque de lo contrario, todos los elementos de contenido permanecerían en sus borradores. Así que quiero que se publiquen y se entreguen al CDN. Ahora hablé del paquete de contenido así que esto es justo aquí. Queremos tomar eso y arrastrarlo y soltarlo en el administrador de plantillas. Así que déjame poner esto aquí y lo voy a arrastrar y soltar aquí y luego podemos hacer clic en preparar para importar y luego importar data. Son solo unos pocos elementos de contenido. Sí, esta sección no es reversible, continuar. Son solo unos pocos elementos de contenido, un montón de imágenes, nada demasiado grande. Debería estar listo en solo un par de segundos. Y cuando se importe, deberías ver el contenido en el repositorio. Así que mira, debería haber tres elementos. Tenemos tres elementos aquí, dos páginas de destino, un componente y también deberíamos ver algunos activos aquí. Así que tres imágenes. Así que te doy un segundo para llegar aquí. Avísame si alguien lo logró hacer funcionar así. De lo contrario, siempre puedes usar el ID del proyecto que está en el repositorio de GitHub. ¿Puedo enviar también las claves de API? Sí, esta es la clave de API. Como si vas aquí, el ID del proyecto es la clave de API. No quiero darte la clave de API de administración porque eso te permitiría eliminar todos los data de mi proyecto o hacer cosas divertidas. Así que no voy a compartir eso contigo pero puedes crear tu propio proyecto y lo tendrás aquí mismo. Entonces David dice, lo tengo pero el paso del flujo de trabajo está en borrador. Si todo está en borrador, es porque en la importación, okay volvamos aquí. Hay una casilla de verificación que probablemente no marcaste pero eso está perfectamente bien. Lo único que necesitas hacer es hacer clic aquí y hacer una publicación en todos estos elementos. Así que selecciona todo y aquí a través de los tres puntos solo haz clic en publicar y confírmalo y todo se publicará en un segundo. Si el contenido solo está en borrador, no estará disponible para nuestra entrega de contenido. Si está en un paso publicado, entonces tendremos todo en el CDN, así que deberías tener todo publicado. ¿Dónde podemos importar el archivo? Bien, el archivo de importación está en el repositorio de GitHub. Así que este es el repositorio y ahí está. Este es el paquete zip que debes importar. Está justo en la raíz del repositorio. Bien, ahora que tienes el contenido en su lugar y tienes el ID del proyecto, lo primero que puedes verificar es si los data realmente están llegando. Para eso, puedes ir a deliver.content.ai, poner allí el ID del proyecto y hacer /items. Nuevamente, voy a poner esto en el chat para que no tengas que escribirlo. Así que si haces clic en esto, deberías ver el JSON que proviene del CDN, ¿verdad? Estos son nuestros elementos de contenido. Esta es la página de destino. Tenemos otro aquí y tenemos el componente de elemento de contenido sin título ETA. Entonces, si cambias el ID del proyecto por el que tienes deberías ver el mismo contenido aquí. Así que nuevamente, te daré unos momentos para verificar eso. ¿Cuál es el complemento que formatea ese JSON? Oh, esto es solo Firefox.

Watch more workshops on topic

React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Consejos y Trucos Profundos de TypeScript
Node Congress 2024Node Congress 2024
83 min
Consejos y Trucos Profundos de TypeScript
Top Content
Featured Workshop
Josh Goldberg
Josh Goldberg
TypeScript tiene un sistema de tipos poderoso con todo tipo de características sofisticadas para representar estados de JavaScript salvajes y extravagantes. Pero la sintaxis para hacerlo no siempre es sencilla, y los mensajes de error no siempre son precisos al decirte qué está mal. Vamos a profundizar en cómo funcionan muchas de las características más poderosas de TypeScript, qué tipos de problemas del mundo real resuelven, y cómo dominar el sistema de tipos para que puedas escribir código TypeScript verdaderamente excelente.
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
React Advanced Conference 2022React Advanced Conference 2022
148 min
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
¿Eres un desarrollador de React tratando de obtener los máximos beneficios de TypeScript? Entonces esta es la masterclass para ti.En esta masterclass interactiva, comenzaremos desde lo básico y examinaremos los pros y contras de las diferentes formas en que puedes declarar componentes de React usando TypeScript. Después de eso, pasaremos a conceptos más avanzados donde iremos más allá de la configuración estricta de TypeScript. Aprenderás cuándo usar tipos como any, unknown y never. Exploraremos el uso de predicados de tipo, guardias y comprobación exhaustiva. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapa de tipo nuevo. Y comenzaremos a programar en el sistema de tipos de TypeScript usando tipos condicionales e inferencia de tipos.
Building Your Own Custom Type System
React Summit 2024React Summit 2024
38 min
Building Your Own Custom Type System
Featured Workshop
Kunal Dubey
Kunal Dubey
I'll introduce the audience to a concept where they can have end-to-end type systems that helps ensure typesafety across the teams Such a system not only improves communication between teams but also helps teams collaborate effectively and ship way faster than they used to before. By having a custom type system, teams can also identify the errors and modify the API contracts on their IDE, which contributes to a better Developer Experience. The workshop would primarily leverage TS to showcase the concept and use tools like OpenAPI to generate the typesystem on the client side. 
Frictionless Development With Unified Type System
JSNation 2024JSNation 2024
113 min
Frictionless Development With Unified Type System
Featured Workshop
Ejiro Asiuwhu
Ejiro Asiuwhu
Imagine developing where frontend and backend sing in harmony, types dance in perfect sync, and errors become a distant memory. That's the magic of TypeScript Nirvana!
Join me on a journey to unveil the secrets of unified type definitions, the key to unlocking frictionless development. We'll dive into:
- Shared language, shared love: Define types once, share them everywhere. Consistency becomes your BFF, errors your worst nightmare (one you'll rarely see).- Effortless coding: Ditch the manual grind of type checking. TypeScript's got your back, freeing you to focus on building awesomeness.- Maintainability magic: With crystal-clear types guiding your code, maintaining it becomes a walk in the park. More time innovating, less time debugging.- Security fortress: TypeScript's type system shields your app from common vulnerabilities, making it a fortress against security threats.

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

Los tipos más útiles de React
React Day Berlin 2023React Day Berlin 2023
21 min
Los tipos más útiles de React
Top Content
Today's Talk focuses on React's best types and JSX. It covers the types of JSX and React components, including React.fc and React.reactnode. The discussion also explores JSX intrinsic elements and react.component props, highlighting their differences and use cases. The Talk concludes with insights on using React.componentType and passing components, as well as utilizing the react.element ref type for external libraries like React-Select.
TypeScript y React: Secretos de un matrimonio feliz
React Advanced Conference 2022React Advanced Conference 2022
21 min
TypeScript y React: Secretos de un matrimonio feliz
Top Content
React and TypeScript have a strong relationship, with TypeScript offering benefits like better type checking and contract enforcement. Failing early and failing hard is important in software development to catch errors and debug effectively. TypeScript provides early detection of errors and ensures data accuracy in components and hooks. It offers superior type safety but can become complex as the codebase grows. Using union types in props can resolve errors and address dependencies. Dynamic communication and type contracts can be achieved through generics. Understanding React's built-in types and hooks like useState and useRef is crucial for leveraging their functionality.
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
TypeScript Congress 2023TypeScript Congress 2023
31 min
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Deja de Escribir tus Rutas
Vue.js London 2023Vue.js London 2023
30 min
Deja de Escribir tus Rutas
Designing APIs is a challenge, and it's important to consider the language used and different versions of the API. API ergonomics focus on ease of use and trade-offs. Routing is a misunderstood aspect of API design, and file-based routing can simplify it. Unplugging View Router provides typed routes and eliminates the need to pass routes when creating the router. Data loading and handling can be improved with data loaders and predictable routes. Handling protected routes and index and ID files are also discussed.
Estudio de caso: Construcción de componentes React reutilizables accesibles en GitHub
React Summit 2024React Summit 2024
29 min
Estudio de caso: Construcción de componentes React reutilizables accesibles en GitHub
The talk discusses building accessible React components and emphasizes the importance of using the correct HTML elements and ARIA roles for accessibility. It explains how to navigate and select options within a form and how to add supplementary text using Aria described by. The speaker also discusses the benefits of using conditional checkboxes and ARIA disabled to improve the UI. Additionally, the talk explores the role of JavaScript in web accessibility and provides recommendations for testing website accessibility.
Compilaciones de TypeScript más rápidas con --isolatedDeclarations
TypeScript Congress 2023TypeScript Congress 2023
24 min
Compilaciones de TypeScript más rápidas con --isolatedDeclarations
Top Content
This talk discusses the performance issues in TypeScript builds and introduces a new feature called isolated declarations. By running the compiler in parallel and using isolated modules, significant performance gains can be achieved. Isolated declarations improve build speed, compatibility with other tools, and require developers to write types in code. This feature has the potential to further increase performance and may be available in TypeScript soon.