🇺🇸 EN
Serie

Frontend

Modern frontend development — Angular, React, TypeScript, accessibility, and performance.

📚 97 Artículos

Practical articles on Angular, React, TypeScript, accessibility, and performance — written from production experience, not toy examples.

As a GDE in Angular and Progress Champion, I've spent years at the intersection of Angular, TypeScript, and frontend performance. My frontend articles reflect patterns tested in real production codebases.

Empieza Aquí

Todos los Artículos

Preview image for Dockerizar Next.js: Los desafíos ocultos blog post
Frontend
·7 min read

Dockerizar Next.js: Los desafíos ocultos

Vercel oculta la complejidad de las variables de entorno. Cuando pasas a Docker, estos desafíos ocultos salen a la luz. Aprende la arquitectura para escalar tu aplicación correctamente.

Preview image for Angular 19 y ZoneLess blog post
Frontend
·3 min read

Angular 19 y ZoneLess

No importa si usas Angular 14, 15 o 19: tus aplicaciones siguen bajo el paraguas de Zone.js. Aunque sientas que funcionan bien, por debajo Angular necesita recorrer todo el árbol del DOM con Zone.js, lo que afecta el rendimiento.

Preview image for Cuatro retos de JavaScript para entrevistas de trabajo blog post
Frontend
·6 min read

Cuatro retos de JavaScript para entrevistas de trabajo

En entrevistas recientes con desarrolladores, noté que muchos candidatos se sentían abrumados por los retos de código. Para posiciones junior, es común que pregunten sobre tareas básicas de JavaScript. Hoy comparto técnicas esenciales de manipulación de datos que recomiendo practicar.

Preview image for Cómo usar NgRx Selectors en Angular blog post
Frontend
·4 min read

Cómo usar NgRx Selectors en Angular

En NgRx, cuando queremos obtener datos del store, la forma más rápida suele ser usar store.select, pero tiene riesgos de tipado. Aprende a usar Selectors para consultar el estado con tipado seguro y mejor rendimiento.

Preview image for Cómo implementar ActionCreationGroup en NgRx blog post
Frontend
·7 min read

Cómo implementar ActionCreationGroup en NgRx

Cuando creas acciones en NgRx, normalmente usas la función auxiliar createAction. Escribimos los nombres de las acciones con un string directo sobre el origen y el evento, como [Cart] Update Price. Esta acción se vincula claramente con la funcionalidad Cart en nuestra aplicación...

Preview image for Cuándo y por qué usar REDUX NgRx en Angular blog post
Frontend
·8 min read

Cuándo y por qué usar REDUX NgRx en Angular

En un artículo anterior escribí sobre cómo manejar el estado en Angular usando servicios, pero cuando la aplicación crece y necesita gestionar un estado grande, se vuelve complejo de mantener. Te cuento cuándo y por qué conviene usar NgRx.

Preview image for Testing en Angular: Reemplaza Karma por Web Test Runner blog post
Frontend
·2 min read

Testing en Angular: Reemplaza Karma por Web Test Runner

Estaba escribiendo un artículo para Kendo sobre testing en Angular, pero con la deprecación de Karma me surgieron dudas sobre el futuro de las pruebas en Angular. Te cuento mi experiencia probando Web Test Runner como alternativa.

Preview image for Accesibilidad web: trabajando con imágenes y contenido blog post
Frontend
·7 min read

Accesibilidad web: trabajando con imágenes y contenido

Al crear un sitio web, el contenido es más que simple texto. Como aprendí en mi artículo anterior, la accesibilidad va más allá de atributos aria-label o alt en imágenes, incluyendo cómo manejar SVGs, gráficos y contraste de color.

Preview image for Accesibilidad web: primeros pasos blog post
Frontend
·8 min read

Accesibilidad web: primeros pasos

Al crear una aplicación web, la accesibilidad suele ignorarse o muchos piensan que basta con usar aria-label. Una guía práctica para comenzar con accesibilidad web siguiendo pautas claras y HTML semántico.

Preview image for Mis mejores artículos sobre Angular y Kendo de 2023 blog post
Frontend
·2 min read

Mis mejores artículos sobre Angular y Kendo de 2023

Al terminar 2023, reflexiono sobre las valiosas lecciones y conocimientos que he adquirido escribiendo. Además de este blog, creo contenido para Telerik Kendo. Hoy me alegra compartir mis mejores artículos sobre Kendo UI de este año.

Preview image for Cómo configurar Jest en Angular 18 blog post
Frontend
·2 min read

Cómo configurar Jest en Angular 18

Al escribir pruebas en Angular, Jasmine y Karma vienen configurados por defecto como librería y test runner, pero el equipo de Angular ha estado trabajando para traer Jest. Hoy vamos a experimentar con el soporte experimental de Jest Builder en Angular.

Preview image for Svelte por primera vez: mi experiencia personal blog post
Frontend
·6 min read

Svelte por primera vez: mi experiencia personal

A veces queremos aprender algo solo por diversión o para crear nuevos proyectos personales. Escuché hablar de Svelte en 2016, pero no lo probé hasta hace unos meses con Bezael para crear un pequeño microfrontend. Sin embargo, ayer empecé a construir un pequeño proyecto personal...

Preview image for Entendiendo InjectionContext y los effects de Signals blog post
Frontend
·3 min read

Entendiendo InjectionContext y los effects de Signals

Ayer estuve conversando con mi amigo Jörgen de Groot sobre Signals. Cuando la conversación pasó a los effects, se encontró con el error ERROR NG0203. Poco después, otro amigo me contactó con el mismo problema. Decidí escribir un breve artículo para explicar por qué ocurre...

Preview image for Primeros pasos con Angular Signals: Una introducción básica blog post
Frontend
·8 min read

Primeros pasos con Angular Signals: Una introducción básica

Desde Angular 16 he escuchado mucho sobre Signals. El equipo de Angular hizo un gran trabajo escuchando a la comunidad y mejorando la API de Signals con la interoperabilidad con RxJS. Ayer estuve hablando con mi amigo Juan Berzosa y aún no había probado Signals, así que...

Preview image for Cuándo usar Arrays, Tuplas, Maps y Sets en TypeScript con ejemplos blog post
Frontend
·4 min read

Cuándo usar Arrays, Tuplas, Maps y Sets en TypeScript con ejemplos

Hace unos días, un amigo me preguntó cómo evitar claves duplicadas en un array. Le expliqué que existen otras colecciones para trabajar y que cada una se adapta a una situación específica. Como me encanta la NBA, busqué una forma sencilla de explicar cada estructura de datos.

Preview image for Cómo depurar aplicaciones de Angular fácilmente blog post
Frontend
·6 min read

Cómo depurar aplicaciones de Angular fácilmente

Como desarrolladores, pasamos gran parte de nuestro tiempo solucionando errores. La depuración nos ayuda a encontrar y eliminar fallos en el código, pero a veces encontrar un problema toma más tiempo que resolverlo. Aprende a depurar tus aplicaciones de Angular usando ng.global, Angular DevTools y VS Code.

Preview image for Cómo crear tu primera aplicación con Astro blog post
Frontend
·13 min read

Cómo crear tu primera aplicación con Astro

Durante los últimos años, los proyectos web han asumido cada vez más responsabilidades, lo que significa más JavaScript. Los frameworks SPA como React, Vue o Angular ofrecen una gran experiencia de desarrollo, pero presentan desafíos de rendimiento que Astro nos ayuda a resolver.

Preview image for Cómo mejorar el rendimiento del build en Angular con ESBUILD blog post
Frontend
·1 min read

Cómo mejorar el rendimiento del build en Angular con ESBUILD

ESBuild es un compilador rápido de JavaScript utilizado por ViteJS. Puedes probarlo en Angular cambiando una sola línea en el archivo angular.json. Nota: está en modo experimental 😜 Cambia el builder de "@angular-devkit/build-angular:browser" a "@angula...

Preview image for Cómo usar Functional Router Guards en Angular blog post
Frontend
·5 min read

Cómo usar Functional Router Guards en Angular

Hoy estuve conversando con mi amigo Leifer sobre los Functional Guards en Angular (14/15) y me hizo varias preguntas: cómo funcionan, si los guards de clase siguen vigentes en Standalone Components y cómo migrarlos usando inject().

Preview image for Cómo disparar la validación en Reactive Forms de Angular blog post
Frontend
·3 min read

Cómo disparar la validación en Reactive Forms de Angular

Hoy estuve probando Dynamic Forms con mi amigo @alt148 y descubrimos que cambiar un control puede disparar la validación varias veces en el proceso. Por ejemplo, al tener un formulario con un campo, en cada pulsación de tecla el formulario...

Preview image for 3 formas de transformar tipos en TypeScript blog post
Frontend
·2 min read

3 formas de transformar tipos en TypeScript

Cuando usamos tipos o interfaces en TypeScript, el compilador exige que el objeto coincida con ellos para evitar errores en tiempo de ejecución por propiedades faltantes. A veces queremos la flexibilidad de crear un objeto sin romper el contrato con la interfaz.

Preview image for Cómo mockear dependencias con Jest blog post
Frontend
·6 min read

Cómo mockear dependencias con Jest

Cuando probamos nuestro código, muchas funciones tienen dependencias internas que no queremos invocar directamente. Aprende cómo mockear dependencias con Jest paso a paso.

Preview image for Cómo migrar de Jasmine a Jest y Testing Library en Angular blog post
Frontend
·4 min read

Cómo migrar de Jasmine a Jest y Testing Library en Angular

Angular viene por defecto con Jasmine y es un buen framework de pruebas. Pasé año y medio escribiendo y ejecutando pruebas con Jasmine, y funciona bien, pero el mercado se está moviendo hacia Jest y Testing Library. No te preocupes, Jest es más directo y compatible con tus pruebas de Jasmine.

Preview image for Cómo empezar con TypeScript y Parcel blog post
Frontend
·2 min read

Cómo empezar con TypeScript y Parcel

TypeScript es una tecnología que crece cada día. Empresas como Slack, Airbnb o Google migran sus proyectos a TypeScript. En este artículo te muestro cómo configurar un proyecto básico con TypeScript y Parcel paso a paso.

Preview image for Cómo usar Resolvers en Angular blog post
Frontend
·7 min read

Cómo usar Resolvers en Angular

Cuando vamos a una fiesta, me encanta tener todas las cervezas listas para tomar una, pero tener que esperar a que las traigan de la nevera a la mesa no es una buena experiencia. Lo mismo pasa con nuestras aplicaciones en Angular: aprende a usar resolvers para precargar datos antes de activar un componente.

Preview image for Cómo manejar objetos globales en Angular: buenas prácticas blog post
Frontend
·3 min read

Cómo manejar objetos globales en Angular: buenas prácticas

Cuando usamos librerías externas, es muy común declarar y usar un objeto global. Pero el precio a pagar son pruebas más complejas, y usar objetos globales por arte de magia no es una buena práctica. Te muestro cómo registrar una librería externa en Angular usando InjectionToken y buenas prácticas.

Preview image for Guía de Content Projection en Angular: paso a paso blog post
Frontend
·3 min read

Guía de Content Projection en Angular: paso a paso

Uno de los platos más sencillos de preparar es una hamburguesa. Aunque la base siempre es la misma, los ingredientes pueden variar: te muestro cómo usar ng-content en Angular para proyectar contenido en áreas flexibles y trabajar con múltiples slots.

Preview image for Entendiendo One-Way y Two-Way Data Binding en Angular blog post
Frontend
·2 min read

Entendiendo One-Way y Two-Way Data Binding en Angular

Hoy estuve ayudando a un compañero con las diferencias al enlazar datos en Angular, ya que ofrece dos formas de mover información hacia el DOM: one-way y two-way data binding. Esto nos permite crear aplicaciones dinámicas.

Preview image for Refactoriza tu código renombrando imports blog post
Frontend
·1 min read

Refactoriza tu código renombrando imports

Estoy refactorizando código en Angular y necesito mantener los mismos nombres de archivo mientras termino la refactorización. Mi solución fue renombrar mis imports. Es una excelente manera de usar un nombre diferente o un alias para mis clases y módulos.

Preview image for Cómo medir código JavaScript con performance.now() blog post
Frontend
·1 min read

Cómo medir código JavaScript con performance.now()

A veces queremos conocer el rendimiento o el tiempo que consume una función o proceso, y podemos resolverlo usando performance.now(). Esta API nos da el tiempo en milisegundos para medir cuánto tarda una función en completar su ejecución.

Preview image for Diferencia entre 'extends' e 'implements' en TypeScript blog post
Frontend
·1 min read

Diferencia entre 'extends' e 'implements' en TypeScript

Hoy un amigo me preguntó sobre la diferencia entre extends e implements. class Media { format: string; } class Video extends Media {} class Image implements Media {} La respuesta rápida para él fue: con extends la clase obtiene todos los métodos y propiedades del padre, mientras que con implements la clase debe implementarlos.

Preview image for Cómo probar errores con Jest en TypeScript blog post
Frontend
·2 min read

Cómo probar errores con Jest en TypeScript

Sigo trabajando con Jest y TypeScript. Ya sabemos cómo hacer aserciones con variables y objetos en nuestro código, y el siguiente paso es manejar errores. Calculator tiene un nuevo requerimiento: si la operación no es +, - o /, debemos lanzar un error.

Preview image for Cómo usar animaciones en CSS con ejemplos blog post
Frontend
·2 min read

Cómo usar animaciones en CSS con ejemplos

Sigo reforzando mis puntos débiles en CSS y hoy es el turno de las animaciones. CSS nos permite crear animaciones con la regla @keyframes, definiendo el estado inicial de las propiedades y su duración a lo largo de la animación.

Preview image for Cómo usar transiciones y transform en CSS blog post
Frontend
·2 min read

Cómo usar transiciones y transform en CSS

Otra buena forma de agregar efectos con CSS es usando transiciones. Te ayudan a transformar propiedades CSS de un valor a otro de forma suave, con una duración determinada entre ellas.

Preview image for Cómo aprender CSS position con ejemplos blog post
Frontend
·3 min read

Cómo aprender CSS position con ejemplos

Si trabajas en frontend, saber cómo posicionar elementos con CSS es fundamental. CSS cuenta con cinco tipos de position y en este artículo te muestro un ejemplo práctico de cada uno.

Preview image for Cómo usar pseudoelementos de CSS blog post
Frontend
·3 min read

Cómo usar pseudoelementos de CSS

A veces necesitamos dar estilo a una parte específica de un elemento HTML, como la primera letra de un h1 o agregar contenido antes o después. Mi primera opción solía ser JavaScript, pero CSS nos ofrece una mejor solución usando pseudoelementos.

Preview image for Cómo usar pseudoclases de CSS con ejemplos blog post
Frontend
·4 min read

Cómo usar pseudoclases de CSS con ejemplos

Sigo reforzando mis puntos débiles en CSS y hoy es el turno de las pseudoclases. Las pseudoclases nos ayudan a definir un estado particular de un elemento. Se identifican usando dos puntos (:), tal como las usamos en enlaces con algo como a:hover.

Preview image for Cómo usar combinadores de CSS con ejemplos blog post
Frontend
·3 min read

Cómo usar combinadores de CSS con ejemplos

Sigo trabajando en mis puntos débiles con CSS, y hoy le toca el turno a los combinadores. A veces queremos seleccionar elementos sin afectar a otros y entender la relación entre ellos. Los combinadores de CSS nos ayudan a escribir mejores selectores.

Preview image for El compilador de TypeScript y el archivo tsconfig blog post
Frontend
·6 min read

El compilador de TypeScript y el archivo tsconfig

Quiero mostrar un resumen práctico del compilador de TypeScript: la herramienta tsc compila nuestro código, observa cambios y verifica tipos. Aprende cómo configurarla usando la terminal y el archivo tsconfig.json.

Preview image for Cómo empezar con testing en Angular usando Jasmine blog post
Frontend
·6 min read

Cómo empezar con testing en Angular usando Jasmine

Trabajé durante varios meses con Jest y Vue, pero actualmente trabajo con Angular y el testing es parte de mi aprendizaje. Te explico un poco sobre Jasmine y cómo escribir pruebas unitarias para clases de TypeScript.

Preview image for Interfaces en TypeScript con un ejemplo blog post
Frontend
·3 min read

Interfaces en TypeScript con un ejemplo

Las interfaces son una excelente funcionalidad de TypeScript para escribir código estructurado y explícito. Te permiten describir contratos con propiedades y métodos que tus objetos y clases deben cumplir.

Preview image for Clases abstractas en TypeScript blog post
Frontend
·4 min read

Clases abstractas en TypeScript

En TypeScript, las clases pueden heredar de otras para compartir métodos y propiedades. Además, TypeScript permite usar clases abstractas. Te muestro por qué y cuándo utilizarlas con un ejemplo práctico.

Preview image for Getter y Setter con TypeScript blog post
Frontend
·2 min read

Getter y Setter con TypeScript

El encapsulamiento es una parte esencial de la POO, y TypeScript soporta las palabras clave get y set para miembros de clases. Podemos encapsular lógica y usar campos privados para gestionar el estado.

Preview image for Las funciones en TypeScript blog post
Frontend
·4 min read

Las funciones en TypeScript

TypeScript entiende el tipo de retorno de las funciones por defecto. En este artículo te muestro cómo tipar funciones, trabajar con tipos de retorno y usarlas como tipos de forma segura.

Preview image for Cómo usar los tipos de TypeScript blog post
Frontend
·3 min read

Cómo usar los tipos de TypeScript

TypeScript incluye sus propios tipos que no existen en JavaScript. Te muestro cómo usarlos durante el desarrollo para avisar al compilador sobre el tipo de dato y trabajar de forma segura.

Preview image for TypeScript y tipos primitivos blog post
Frontend
·4 min read

TypeScript y tipos primitivos

Estoy empezando a migrar a TypeScript y a ver cómo funciona. Te muestro cómo trabajar con los tipos primitivos, la inferencia de tipos y cómo evitar errores comunes al declarar tus variables.