Clase 2 - Jueves, 20 de agosto de 2026 (20 08 26) - Desarrollo de sistemas web backend
ACLARACIÓN: Esta es la clase que debió haberse dado el jueves 20/08/26 pero el profesor tuvo un problema así que nos dejó la grabación del año 2025.
Desarrollo de Sistemas Web Backend: Fundamentos de Node.js y Programación Modular
Este documento constituye una guía técnica y académica exhaustiva sobre el desarrollo backend utilizando el entorno de ejecución Node.js y el lenguaje JavaScript. Se profundiza en la transición del frontend al backend, la gestión de módulos, el uso de objetos globales y la implementación de lógica de programación avanzada.
1. Introducción al Desarrollo Backend con JavaScript
El desarrollo backend se centra en la creación de una suite de APIs y lógica de servidor que sea integrable y funcional. A diferencia del desarrollo frontend, donde JavaScript interactúa con el navegador, en el backend JavaScript se utiliza para construir el "motor" de la aplicación.
Contexto y Entorno de Ejecución
JavaScript es un lenguaje de alto nivel que puede ejecutarse tanto en el cliente (navegador) como en el servidor (backend). La diferencia fundamental radica en el entorno de ejecución:
- Navegador: Tiene acceso a objetos como
windowydocumentpara manipular la interfaz de usuario. - Node.js: Es el entorno de ejecución para el servidor. No posee acceso a
windowodocument, pero permite interactuar con el sistema operativo, el sistema de archivos y la red.
El objetivo final del estudio de esta materia es el desarrollo de un proyecto funcional (como un carrito de compras) que pueda ser defendido técnicamente, basándose en una construcción progresiva de conocimientos.
2. Marco Conceptual y Fundamentos
Para dominar Node.js, es imperativo entender cómo manejar datos y ejecutar scripts desde la terminal.
Definición de Conceptos Clave
| Concepto | Descripción |
| Node.js | Entorno de ejecución para JavaScript fuera del navegador. |
| REPL | (Read-Eval-Print Loop) Entorno interactivo para ejecutar código JavaScript línea por línea en la consola. |
| Scripting | Creación de archivos .js que se ejecutan mediante el comando node nombre_archivo.js. |
| Tipos de Datos | JavaScript maneja strings (cadenas), integers (enteros), floats (decimales), booleans (booleanos), arrays (arreglos) y objects (objetos). |
Ejecución en Consola vs. Archivos
Aunque es posible ejecutar código directamente en la terminal escribiendo node, el desarrollo profesional se realiza en editores de código (como Visual Studio Code). La ejecución manual en consola permite evaluar expresiones rápidas, pero los archivos permiten estructurar la lógica completa del backend.
3. Estructuras de Control y Lógica de Programación
Condicionales (if/else)
Los condicionales son evaluadores que permiten bifurcar el flujo del programa.
- Sintaxis: Se utiliza la palabra reservada
if, seguida de una condición entre paréntesis y bloques de código entre llaves. - Evaluación: Si la condición se cumple, se ejecuta la cláusula verdadera; de lo contrario, se ejecuta la cláusula falsa (
else). - Anidamiento: Es posible concatenar condiciones (
else if) para evaluar múltiples escenarios. - Importancia en Backend: Se utilizan para validar datos recibidos (ej. si una petición es exitosa o si un dato es de tipo texto).
Nota de Performance: No se recomienda tener condicionales excesivamente largos (ej. 50 líneas), ya que impactan la agilidad del código. Es preferible diversificar la lógica.
Ciclos e Iteración (for)
El ciclo for permite recorrer estructuras de datos como los arreglos (arrays).
- Complejidad Lineal: El recorrido de un array es lineal; a mayor cantidad de elementos, mayor tiempo de procesamiento. Esto es crítico al recuperar millones de registros de una base de datos.
4. Programación Funcional y Modularización
Uno de los pilares del desarrollo backend es evitar las estructuras monolíticas (un solo archivo con miles de líneas) y optar por una arquitectura modular.
Funciones
Las funciones se definen con la palabra function y pueden recibir parámetros (variables de entrada).
- Parámetros: En JavaScript básico, los parámetros pueden ser de cualquier tipo (
any), aunque se recomienda que sean específicos para la funcionalidad (ej. strings para nombres). - Retorno (
**return**): Es la instrucción que devuelve un valor procesado fuera de la función, permitiendo la "orquestación" del código.
El Sistema de Módulos
Node.js utiliza módulos para segmentar el código en bloques lógicos.
**module.exports**: Permite exponer variables, objetos o funciones de un archivo para que puedan ser usados en otros.**require**: Es la función utilizada para importar esos módulos exportados.
Ventajas de la Modularización:
- Orden: Facilita la lectura y mantenimiento.
- Reutilización: Una función de cálculos matemáticos puede ser requerida por múltiples partes del sistema sin necesidad de reescribirla.
5. Objetos Globales y Módulos Nativos
Node.js provee herramientas integradas que no dependen de instalaciones externas para realizar tareas comunes.
Objetos Globales de Sistema
| Objeto | Función |
__dirname |
Devuelve la ruta absoluta del directorio donde se encuentra el archivo. |
__filename |
Devuelve la ruta absoluta incluyendo el nombre del archivo actual. |
process |
Provee información sobre el proceso actual de ejecución. |
Módulos Nativos Destacados
Módulo OS (Operating System)
Permite extraer información del hardware y el sistema operativo.
user/info(): Datos del usuario actual.uptime(): Tiempo que el sistema ha estado encendido.platform(): Sistema operativo (win32, linux, etc.).freemem(): Memoria disponible.
Módulo Path
Es vital para la manipulación de rutas de archivos, asegurando que el código funcione en diferentes sistemas operativos.
path.join(): Une fragmentos de rutas de forma segura.path.basename(): Extrae el nombre del archivo de una ruta.path.sep: Identifica el separador de carpetas del sistema actual (ej./o\).
6. Fechas Importantes y Avisos Académicos
Tras el análisis de la información proporcionada por el docente, se detallan los siguientes puntos relevantes para la cursada:
- Actualización de Plataforma: El docente actualizará los contenidos y espacios de las unidades durante el transcurso del fin de semana.
- Grabaciones de Clases: Se subirán progresivamente por "slots" (clase por clase) para mantener el orden.
- Hito Arquitectónico: A partir de la Clase 5 o 6, se profundizará en los principios de arquitectura de software y diseño de aplicaciones backend. En este punto, el proyecto del "carrito de compras" comenzará a tomar forma estructural.
- Modalidad de Entrega Final: El proyecto final se realizará en parejas.
- Exigencia Técnica: Se espera que los alumnos no solo codifiquen, sino que sean capaces de defender la lógica y las secuencias lógicas de sus desarrollos.
7. Preguntas de Repaso
Nivel Básico
- ¿Cuál es la diferencia principal entre el objeto
windowen el navegador y el entorno Node.js? - ¿Para qué sirve el comando
console.logy qué alternativa existe para mostrar datos en formato de tabla? - Defina los tipos de datos básicos que maneja JavaScript.
Nivel Intermedio
- Explique el funcionamiento de
module.exportsyrequire. ¿Por qué son fundamentales para evitar archivos monolíticos? - ¿Qué diferencia hay entre
__dirnamey__filename? Proporcione un ejemplo de cuándo usar cada uno. - ¿Cómo afecta la longitud de un array al rendimiento de un ciclo
for?
Nivel Avanzado
- Usted necesita construir un sistema que registre eventos (logs) en una carpeta específica independientemente de si el servidor corre en Windows o Linux. ¿Qué métodos del módulo
pathutilizaría y por qué? - Describa el concepto de "orquestación" en la programación funcional y cómo se relaciona con la palabra reservada
return. - Analice la importancia de la sanitización de datos utilizando condicionales antes de procesar información en el backend.