Resumen del tema
Resumen Ejecutivo
Este documento analiza los fundamentos, arquitecturas y herramientas esenciales para el desarrollo web en el entorno cliente, con un enfoque particular en la transición hacia la Web 2.0. El desarrollo web se define como un campo multidisciplinar que integra diseño gráfico, programación, arquitectura de la información y usabilidad. La arquitectura dominante sigue el modelo cliente-servidor, donde JavaScript se posiciona como la tecnología central para gestionar el comportamiento y el dinamismo en el navegador.
Se destaca que, si bien la programación en el lado del cliente (client-side) es crucial para mejorar la experiencia del usuario y la eficiencia de procesos como la validación de formularios, esta no sustituye a la programación en el servidor (server-side). Ambas son complementarias. El documento también aborda aspectos críticos de compatibilidad entre navegadores, políticas de seguridad (como el "mismo origen") y las mejores prácticas para la integración de código mediante archivos externos y herramientas de edición modernas.
--------------------------------------------------------------------------------
1. Fundamentos y Evolución de la Web
La Web tiene su origen en 1989, creada por Tim Berners-Lee en el CERN como una herramienta colaborativa para el conocimiento científico. Su evolución ha sido guiada por estándares universales mantenidos por el W3C (World Wide Web Consortium).
Definiciones de "Web"
El término puede referirse a tres conceptos distintos:
1. El proyecto inicial del CERN.
2. El conjunto de protocolos desarrollados.
3. El espacio de información: Los servidores interconectados a través de Internet (la acepción más común hoy en día).
Áreas del Diseño Web
El diseño web se estructura en cinco facetas interrelacionadas, visualizadas a menudo mediante la metáfora de una pirámide:
Área Descripción Tecnología/Herramienta
Contenido Organización y estructura de la información. HTML
Visual Plantilla, elementos gráficos y estética. CSS
Tecnología Elementos interactivos y programación. JavaScript / Scripts
Distribución Velocidad y fiabilidad de la entrega. Hardware/Software de red
Propósito El objetivo económico o funcional del sitio. Estrategia
--------------------------------------------------------------------------------
2. El Modelo Cliente-Servidor
El desarrollo web moderno se fundamenta en la interacción entre tres componentes principales:
* Lado del Servidor (Server-side): Incluye el hardware, servidores web, bases de datos y lenguajes como PHP, Java (Servlets), Perl (CGI) y Node.js. Se encarga de la persistencia de datos y la lógica de negocio compleja.
* Lado del Cliente (Client-side): Se ejecuta en el navegador del usuario. Utiliza tecnologías como HTML para estructura, CSS para presentación y JavaScript para el comportamiento.
* La Red: Los elementos de conectividad que permiten la comunicación entre el cliente y el servidor.
--------------------------------------------------------------------------------
3. Programación en el Lado del Cliente: JavaScript
JavaScript es el lenguaje de script más utilizado y soportado por todas las plataformas. Su función principal es aportar dinamismo y gestionar la interacción del usuario.
Características y Funcionalidades
* Dinamismo e Interacción: Reacciona a eventos en formularios y enlaces.
* Gestión de Interfaz: Controla ventanas, marcos, plug-ins y applets de Java.
* Pre-procesamiento: Valida datos antes de enviarlos al servidor, mejorando la experiencia del usuario.
* AJAX: Permite procesos asíncronos en segundo plano para solicitar o enviar datos (XML/JSON) sin recargar la página completa.
Relación con el Servidor
Las tecnologías client-side y server-side son complementarias:
* Validación: Se recomienda validar en el cliente para mayor rapidez y en el servidor para asegurar la integridad total de los datos.
* Limitaciones: JavaScript no puede escribir ficheros directamente en el servidor ni acceder a sus recursos de sistema de forma autónoma; debe ceder los datos a un lenguaje de servidor para estas tareas.
--------------------------------------------------------------------------------
4. Compatibilidad y Limitaciones
El código JavaScript es interpretado por el navegador del cliente (Firefox, Chrome, Safari, Opera, Edge/IE), lo que introduce desafíos significativos.
* Implementaciones Heterogéneas: Cada navegador soporta versiones de JavaScript de manera distinta y puede contener errores (bugs) específicos de la plataforma.
* Desactivación por el Usuario: Un usuario puede desactivar JavaScript. El sitio web debe seguir siendo funcional (aunque sea de forma básica) sin él.
* Dispositivos y Accesibilidad: Algunos dispositivos móviles, navegadores de voz y buscadores no ejecutan JavaScript.
* Estándares: Es fundamental seguir las especificaciones del W3C para el HTML base, asegurando que el código sea interpretable correctamente.
--------------------------------------------------------------------------------
5. Seguridad en el Entorno Cliente
Para proteger al usuario de scripts maliciosos, los navegadores aplican restricciones estrictas:
1. Espacio Seguro de Ejecución (Sandbox): El código solo puede realizar tareas relacionadas con la web, sin acceso a funciones genéricas del sistema operativo del cliente.
2. Política de Mismo Origen (Same-origin policy): Impide que un script de un dominio acceda a información (cookies, contraseñas) de otro dominio distinto.
Restricciones Críticas de JavaScript
* No puede leer ni escribir ficheros en el ordenador del cliente (excepto cookies).
* No puede lanzar aplicaciones locales en el cliente.
* No puede modificar preferencias del navegador ni capturar transmisiones de streaming para retransmisión.
* No puede enviar correos electrónicos de forma invisible (debe usar una aplicación de servidor).
* No puede implementar multiprocesamiento o multitarea real por sí solo.
--------------------------------------------------------------------------------
6. Herramientas y Metodología de Programación
Entornos de Desarrollo (Editores)
Se desaconsejan los editores WYSIWYG en favor de editores de código fuente que ofrezcan:
* Resaltado de sintaxis e indentado automático.
* Completado automático y navegación de código.
* Gestión de versiones y comprobación de errores en tiempo real.
Entre los editores más populares se encuentran Visual Studio Code (VSCode), Atom y SublimeText.
Integración de Código en HTML
Existen dos métodos principales:
1. Directo (Inline): Uso de etiquetas <script type="text/javascript"> dentro del HTML.
2. Externo (Recomendado): Referenciar un archivo independiente .js mediante el atributo src: <script type="text/javascript" src="archivo.js"></script>
Ventajas del uso de ficheros externos:
* Separación de código y estructura.
* Reutilización de código entre múltiples páginas.
* Carga más rápida gracias a la caché del navegador.
* Mayor modularidad y facilidad de depuración.
Protección del Código
Es técnicamente imposible ocultar el código JavaScript, ya que el navegador debe descargarlo para ejecutarlo. Las estrategias disponibles son:
* Ofuscación: Uso de software para comprimir el código y hacerlo difícil de leer (eliminando espacios, renombrando variables a nombres ininteligibles).
* Licenciamiento: Incluir mensajes de copyright o promover el código en plataformas colaborativas como GitHub, asumiendo un paradigma de código abierto.