miércoles, 16 de septiembre de 2026

Capítulo 009. Instalación de Node.js y Configuración del Entorno de Desarrollo

Introducción

Ha llegado el momento de preparar nuestro entorno de desarrollo para comenzar a crear aplicaciones con Angular. El primer paso consiste en instalar Node.js, una herramienta fundamental dentro del ecosistema JavaScript y un requisito indispensable para trabajar con Angular y sus herramientas de desarrollo.

En este capítulo instalaremos Node.js utilizando un administrador de versiones, lo que nos permitirá mantener distintas versiones de Node en nuestro equipo y cambiar entre ellas cuando sea necesario.


¿Qué es Node.js?

Node.js es un entorno de ejecución de JavaScript que permite ejecutar código fuera de un navegador web.

Tradicionalmente, JavaScript se ejecutaba únicamente dentro de navegadores como:

  • Google Chrome

  • Mozilla Firefox

  • Microsoft Edge

  • Safari

Con Node.js es posible ejecutar aplicaciones y herramientas basadas en JavaScript directamente desde la línea de comandos, sin depender de un navegador.

Esto resulta especialmente importante porque muchas de las herramientas utilizadas en el desarrollo moderno, incluyendo Angular CLI, se ejecutan sobre Node.js.


¿Por qué necesitamos Node.js para Angular?

Angular utiliza diversas herramientas que dependen de Node.js para funcionar correctamente.

Entre las tareas que realizaremos mediante estas herramientas se encuentran:

  • Crear proyectos Angular.

  • Generar componentes y servicios.

  • Ejecutar la aplicación localmente.

  • Compilar el proyecto.

  • Ejecutar pruebas automatizadas.

  • Generar versiones listas para producción.

Sin Node.js no podríamos utilizar Angular CLI ni gran parte del ecosistema de desarrollo asociado a Angular.


La importancia de administrar versiones

El ecosistema JavaScript evoluciona rápidamente. Como consecuencia, algunas herramientas funcionan únicamente con versiones específicas de Node.js.

Por esta razón, es una buena práctica utilizar un administrador de versiones de Node (Node Version Manager o NVM).

Las ventajas principales son:

  • Instalar múltiples versiones de Node.js.

  • Cambiar fácilmente entre versiones.

  • Mantener compatibilidad con distintos proyectos.

  • Evitar conflictos entre herramientas.

De esta forma, cada proyecto puede utilizar la versión de Node recomendada sin afectar a otros desarrollos existentes en el equipo.


Instalación de NVM para Windows

Para este curso utilizaremos NVM for Windows, una implementación del administrador de versiones de Node para sistemas Windows.

Paso 1: Descargar NVM

Accede al repositorio oficial de NVM para Windows en GitHub:

https://github.com/coreybutler/nvm-windows

Dirígete a la sección Releases y descarga el instalador con extensión .exe.

Paso 2: Ejecutar el instalador

Una vez descargado:

  1. Ejecuta el archivo instalador.

  2. Acepta los términos de licencia.

  3. Sigue el asistente de instalación.

  4. Haz clic en Siguiente hasta completar el proceso.

  5. Finaliza la instalación.

La instalación es bastante sencilla y no requiere configuraciones especiales.


Abrir la consola de comandos

Una vez instalado NVM, debemos abrir una ventana de comandos.

Método rápido

Presiona:

Windows + R

Escribe:

cmd

Y presiona:

Enter

Se abrirá una consola desde la cual podremos ejecutar comandos de NVM y Node.js.


Verificar la instalación de NVM

Para comprobar que NVM se instaló correctamente, ejecuta el siguiente comando:

nvm

Si la instalación fue exitosa, aparecerá una lista con los comandos disponibles de NVM.


Instalar la versión de Node utilizada en el curso

Para garantizar la compatibilidad con todos los ejemplos y ejercicios, utilizaremos la versión:

20.16.0

Para instalarla, ejecuta:

nvm install 20.16.0

Durante este proceso, NVM descargará e instalará la versión indicada de Node.js.

Importante: Se recomienda utilizar las mismas versiones de las herramientas empleadas en el curso para evitar diferencias de comportamiento o problemas de compatibilidad.


Activar la versión instalada

Instalar una versión no significa que automáticamente comenzará a utilizarse.

Después de instalar Node.js, debemos activarlo mediante el siguiente comando:

nvm use 20.16.0

Si todo funciona correctamente, NVM mostrará un mensaje indicando que la versión seleccionada ya está en uso.


Verificar la versión activa de Node.js

Finalmente, podemos confirmar que estamos utilizando la versión correcta ejecutando:

node --version

La salida debería ser similar a:

v20.16.0

Esto confirma que Node.js se encuentra correctamente instalado y configurado.


Resumen

En este capítulo instalamos y configuramos Node.js, uno de los requisitos fundamentales para desarrollar aplicaciones Angular. Para administrar las distintas versiones de Node utilizamos NVM for Windows, lo que nos permitirá mantener un entorno de desarrollo flexible y compatible con diferentes proyectos.

Los comandos utilizados fueron:

nvm install 20.16.0

nvm use 20.16.0

node --version

Con Node.js instalado correctamente, ya estamos listos para continuar con la instalación de Angular CLI y crear nuestro primer proyecto Angular.


sábado, 12 de septiembre de 2026

Capítulo 008. ¿Qué es TypeScript?

 Introducción

Durante el desarrollo de aplicaciones Angular utilizaremos TypeScript como lenguaje de programación principal. De hecho, TypeScript es el lenguaje recomendado y utilizado por defecto en los proyectos Angular modernos.

Antes de comenzar a trabajar con Angular, es importante comprender qué es TypeScript, cuáles son sus ventajas y por qué se ha convertido en una herramienta fundamental para el desarrollo de aplicaciones de gran escala.


El problema de JavaScript

JavaScript es un lenguaje de programación flexible y fácil de aprender. Sin embargo, una de sus características es que utiliza tipado dinámico, lo que significa que no es necesario declarar el tipo de dato de una variable.

Por ejemplo:

let nombre = "Felipe";

En este caso, no se especifica explícitamente que nombre es una cadena de texto (string). JavaScript simplemente lo deduce a partir del valor asignado.

Aunque esta flexibilidad puede resultar conveniente, también puede provocar errores difíciles de detectar en aplicaciones grandes.

Consideremos el siguiente ejemplo:

let nombre = "Felipe";

let numero = 2;


function sumar(a, b) {

return a + b;

}


let suma = sumar(nombre, numero);


console.log(suma);

La función sumar parece diseñada para sumar números. Sin embargo, JavaScript permite enviar cualquier tipo de dato como argumento, incluyendo cadenas de texto.

Como consecuencia, pueden producirse comportamientos inesperados que generen errores difíciles de localizar, especialmente en aplicaciones con miles de líneas de código.


¿Qué es TypeScript?

TypeScript es un lenguaje de programación desarrollado por Microsoft que se basa en JavaScript y añade características adicionales para mejorar la productividad y la calidad del código.

Se describe como un superconjunto tipado de JavaScript (typed superset of JavaScript), lo que significa que:

Todo código JavaScript válido también es código TypeScript válido.

Esto facilita enormemente la adopción de TypeScript, ya que no es necesario reaprender completamente un nuevo lenguaje.


Tipado estático

La característica más importante de TypeScript es su sistema de tipado estático.

Gracias a este sistema podemos indicar explícitamente qué tipo de dato esperamos utilizar en:

  • Variables.

  • Parámetros de funciones.

  • Valores de retorno.

  • Propiedades de clases.

  • Objetos e interfaces.

Por ejemplo:

let nombre: string = "Felipe";

let numero: number = 2;


function sumar(a: number, b: number): number {

return a + b;

}

En este caso:

  • nombre debe contener un valor de tipo string.

  • numero debe contener un valor de tipo number.

  • Los parámetros a y b deben ser números.

  • La función debe devolver un número.


Detección temprana de errores

Supongamos que intentamos utilizar la función anterior de manera incorrecta:

let nombre: string = "Felipe";

let numero: number = 2;


let suma: number = sumar(nombre, numero);

TypeScript detectará inmediatamente un error similar al siguiente:

Argument of type 'string' is not assignable to parameter of type 'number'.

Esto sucede porque se está enviando una cadena de texto donde se esperaba un número.

La ventaja es que el error se detecta durante el desarrollo, antes de ejecutar la aplicación.

En proyectos pequeños este beneficio puede parecer menor, pero en aplicaciones empresariales grandes permite ahorrar una enorme cantidad de tiempo al identificar errores tempranamente.


Inferencia de tipos

Aunque TypeScript permite declarar tipos explícitamente, muchas veces no es necesario hacerlo.

Por ejemplo:

let nombre = "Felipe";

TypeScript es capaz de inferir automáticamente que la variable nombre es de tipo string.

Este proceso se conoce como inferencia de tipos (Type Inference).

Gracias a ello, es posible escribir código más limpio sin perder las ventajas del tipado estático.


Compatibilidad con JavaScript

Una de las mayores ventajas de TypeScript es su compatibilidad total con JavaScript.

Si una aplicación está desarrollada completamente en JavaScript, puede comenzar a utilizar TypeScript sin necesidad de realizar grandes modificaciones iniciales.

Por ejemplo:

let mensaje = "Hola Mundo";


function saludar(nombre) {

return "Hola " + nombre;

}

El código anterior es válido tanto en JavaScript como en TypeScript.

Posteriormente, el desarrollador puede ir agregando tipos gradualmente para obtener mayores beneficios.

Esta compatibilidad facilita la migración de proyectos existentes.


Características modernas del lenguaje

Además del sistema de tipos, TypeScript incorpora características modernas que ayudan a los desarrolladores a escribir código más robusto y expresivo.

Entre ellas se encuentran:

  • Interfaces.

  • Enumeraciones (Enums).

  • Genéricos (Generics).

  • Decoradores.

  • Tipos avanzados.

  • Mejor soporte para programación orientada a objetos.

Muchas de estas características permiten diseñar aplicaciones más organizadas y fáciles de mantener.


Compilación de TypeScript

Es importante entender que los navegadores no ejecutan código TypeScript directamente.

Antes de ejecutar una aplicación, el código TypeScript debe convertirse a JavaScript mediante un proceso conocido como compilación o transpilación.

El flujo de trabajo es el siguiente:

TypeScript

Compilación

JavaScript

Navegador

Durante esta compilación es cuando TypeScript analiza el código y detecta posibles errores de tipos.

Gracias a este mecanismo, los desarrolladores pueden aprovechar las ventajas de TypeScript mientras mantienen total compatibilidad con los navegadores modernos.


¿Por qué Angular utiliza TypeScript?

Angular adopta TypeScript como lenguaje principal porque ofrece herramientas que facilitan el desarrollo de aplicaciones complejas.

Algunos beneficios son:

  • Detección temprana de errores.

  • Mejor autocompletado en el editor.

  • Navegación más sencilla por el código.

  • Refactorización más segura.

  • Mayor productividad.

  • Mejor mantenibilidad en proyectos grandes.

Estas ventajas son especialmente importantes en aplicaciones empresariales donde participan varios desarrolladores y el código debe mantenerse durante años.


TypeScript en este curso

A lo largo de este curso trabajaremos con TypeScript de forma natural como parte del desarrollo de aplicaciones Angular.

No es necesario tener experiencia previa con el lenguaje, ya que utilizaremos principalmente sus características fundamentales, incluyendo:

  • Variables tipadas.

  • Funciones.

  • Clases.

  • Interfaces.

  • Decoradores básicos.

Los conceptos avanzados se irán introduciendo progresivamente conforme sean necesarios para el desarrollo de la aplicación.


Resumen

TypeScript es un lenguaje desarrollado por Microsoft que extiende JavaScript mediante un sistema de tipos estáticos y otras características orientadas a mejorar la productividad y la calidad del código. Gracias a la detección temprana de errores, la compatibilidad con JavaScript y sus potentes herramientas de desarrollo, TypeScript se ha convertido en el estándar para trabajar con Angular.

Durante el resto del curso utilizaremos TypeScript como lenguaje principal para construir el frontend de nuestra aplicación, aprovechando sus ventajas para desarrollar código más seguro, mantenible y fácil de entender.


viernes, 4 de septiembre de 2026

Capítulo 007. Introducción a ASP.NET Core

Introducción

ASP.NET Core es un framework de desarrollo web de código abierto creado por Microsoft que permite construir aplicaciones web modernas, servicios web, APIs REST y aplicaciones empresariales de alto rendimiento.

Una de sus principales características es que es multiplataforma, lo que significa que puede ejecutarse en distintos sistemas operativos, como:

  • Windows

  • Linux

  • macOS

Esta flexibilidad permite desarrollar y desplegar aplicaciones en diversos entornos sin depender de una plataforma específica.


¿Qué significa ASP?

ASP proviene de Active Server Pages, una tecnología diseñada para crear sitios web dinámicos.

A diferencia de los sitios estáticos, donde el contenido es siempre el mismo para todos los usuarios, un sitio dinámico puede generar información diferente según diversos factores, por ejemplo:

  • El usuario que ha iniciado sesión.

  • Los datos almacenados en una base de datos.

  • La fecha y hora actuales.

  • La información enviada desde formularios.

  • Las reglas de negocio de la aplicación.

Gracias a ello, es posible construir aplicaciones web interactivas que respondan de manera inteligente a las acciones de los usuarios.


¿Cuál es el objetivo de ASP.NET Core?

La misión principal de ASP.NET Core es simplificar el desarrollo de aplicaciones web proporcionando funcionalidades que suelen ser necesarias en la mayoría de los proyectos.

En lugar de implementar estas características desde cero en cada aplicación, los desarrolladores pueden aprovechar las herramientas que el framework ofrece de forma integrada.

Esto permite:

  • Reducir tiempos de desarrollo.

  • Evitar la duplicación de esfuerzos.

  • Mantener estándares de calidad.

  • Mejorar la mantenibilidad del código.

  • Incrementar la productividad del equipo.

En otras palabras, ASP.NET Core ayuda a los desarrolladores a concentrarse en la lógica de negocio de la aplicación en lugar de resolver problemas comunes ya abordados por el framework.


Características principales de ASP.NET Core

ASP.NET Core incorpora un amplio conjunto de funcionalidades listas para utilizarse en aplicaciones web modernas.

Sistema de ruteo

El sistema de Routing permite determinar qué código debe ejecutarse cuando se recibe una petición HTTP.

Por ejemplo, una solicitud a una determinada URL puede dirigirse automáticamente a una acción específica dentro de un controlador o endpoint.

Esto facilita la construcción de APIs y aplicaciones web organizadas y fáciles de mantener.

Inyección de dependencias

ASP.NET Core incluye un sistema de Inyección de Dependencias (Dependency Injection) integrado de forma nativa.

Esta característica permite desacoplar los distintos componentes de la aplicación y aplicar principios fundamentales de diseño de software.

Gracias a la inyección de dependencias:

  • Las clases dependen de abstracciones en lugar de implementaciones concretas.

  • El código es más fácil de probar.

  • Se mejora la reutilización de componentes.

  • Se facilita el mantenimiento de la aplicación.

Más adelante en el curso se profundizará en este concepto, ya que constituye una pieza fundamental de la arquitectura moderna en .NET.

Administración de usuarios y autenticación

ASP.NET Core proporciona herramientas que permiten implementar funcionalidades relacionadas con la gestión de usuarios, tales como:

  • Registro de usuarios.

  • Inicio de sesión.

  • Recuperación de contraseñas.

  • Control de acceso.

  • Autenticación y autorización.

Estas capacidades reducen significativamente el trabajo necesario para incorporar mecanismos de seguridad en una aplicación.

Desarrollo de APIs REST

ASP.NET Core es ampliamente utilizado para la creación de APIs REST, que posteriormente pueden ser consumidas por aplicaciones frontend desarrolladas con tecnologías como Angular, React o Vue.

Esta separación entre frontend y backend es una de las arquitecturas más utilizadas en el desarrollo moderno de aplicaciones web.


Rendimiento

Uno de los aspectos más destacados de ASP.NET Core es su excelente rendimiento.

Con cada nueva versión de .NET, Microsoft introduce optimizaciones que mejoran la velocidad de ejecución y el consumo de recursos.

En muchos casos, simplemente actualizar una aplicación a una versión más reciente del framework puede generar mejoras de rendimiento sin necesidad de modificar el código existente.

Esta evolución constante ha convertido a ASP.NET Core en una de las plataformas más rápidas para el desarrollo de aplicaciones web y APIs empresariales.


ASP.NET vs ASP.NET Core

Es importante diferenciar entre ASP.NET y ASP.NET Core, ya que son tecnologías distintas.

ASP.NET

ASP.NET fue el framework web tradicional de Microsoft.

Sus principales características eran:

  • Funcionaba únicamente en Windows.

  • Dependía del .NET Framework clásico.

  • Estaba orientado principalmente a entornos Microsoft.

ASP.NET Core

ASP.NET Core representa la evolución moderna de la plataforma.

Entre sus ventajas destacan:

  • Compatibilidad con Windows, Linux y macOS.

  • Mayor rendimiento.

  • Arquitectura moderna y modular.

  • Código abierto.

  • Mejor integración con contenedores y servicios en la nube.

  • Desarrollo activo y soporte continuo.

Por estas razones, ASP.NET Core es la tecnología recomendada para nuevos proyectos y desarrollos web.


Lenguajes compatibles con ASP.NET Core

ASP.NET Core permite utilizar distintos lenguajes compatibles con la plataforma .NET.

Sin embargo, el lenguaje más utilizado y recomendado es C# (C Sharp), que será el utilizado a lo largo de este curso.


Introducción a C#

C# es un lenguaje de programación moderno, potente y versátil que combina características de la programación orientada a objetos y la programación funcional.

Programación orientada a objetos

C# permite trabajar con conceptos fundamentales como:

  • Clases.

  • Objetos.

  • Herencia.

  • Interfaces.

  • Encapsulamiento.

  • Polimorfismo.

Estos elementos facilitan la construcción de aplicaciones organizadas, escalables y fáciles de mantener.

Características funcionales

Además de sus capacidades orientadas a objetos, C# incorpora varias características procedentes de la programación funcional, entre ellas:

  • Funciones anónimas.

  • Expresiones lambda.

  • Métodos de extensión.

  • Consultas LINQ.

  • Delegados.

Estas herramientas permiten escribir código más expresivo y eficiente.

Durante el curso se estudiarán estos conceptos de manera práctica conforme sean necesarios para el desarrollo de la aplicación.


Resumen

ASP.NET Core es un framework moderno y multiplataforma diseñado para el desarrollo de aplicaciones web, servicios y APIs de alto rendimiento. Su amplio conjunto de funcionalidades integradas, incluyendo ruteo, inyección de dependencias, autenticación y soporte para APIs REST, permite a los desarrolladores crear soluciones robustas sin necesidad de reinventar elementos comunes de la infraestructura de una aplicación.

Además, gracias al uso de C# como lenguaje principal, ASP.NET Core ofrece una combinación de productividad, rendimiento y mantenibilidad que lo ha convertido en una de las tecnologías más utilizadas para el desarrollo backend empresarial.

En el próximo capítulo profundizaremos en la evolución de la plataforma .NET y entenderemos cómo ASP.NET Core se integra dentro del ecosistema moderno de desarrollo de Microsoft.