Introducción
A partir de la identificación de las capas y componentes que conforman la arquitectura, en la presente unidad se profundiza sobre el concepto de front-end, que está relacionado con la parte visible de la aplicación web, correspondiente a la interfaz gráfica de usuario, su estructura, estilos y comportamiento.
En tal sentido se estudian las tecnologías y marcos de trabajo, que permiten construir una GUI (graphics arquitectura.)interfaz gráfica de usuario, que cumple con ciertos criterios de calidad, usabilidad y seguridad dentro del contexto de los lineamientos definidos en la arquitectura.
Es así como se presentan HTML (Hypertext Markup Language) y CSS (Cascade Style Sheet) como lenguajes de marcado que permiten definir la estructura y estilo de una página web. De la misma manera, se hace uso de JavaScript, el cual es un lenguaje de programación interpretado que permite incorporar comportamiento a los elementos HTML. Ahora bien, como interfaz entre HTML (estructura) y JavaScript (comportamiento) se estudia DOM (Document Object Model).
Propósitos de aprendizaje
Propósito general
Dar a conocer al estudiante las características, funcionalidades, ventajas y desventajas, de las tecnologías actuales disponibles para la implementación de la interfaz de usuario (Front-end) de una aplicación web.
Propósitos específicos
- Proporcionar al estudiante los conocimientos para que pueda identificar las principales características de las tecnologías que se utilizan para diseñar, estructurar y darle comportamiento a la interfaz gráfica de una página web.
- Ayudar al estudiante a establecer las ventajas y desventajas de cada una de las tecnologías estudiadas, así como sus principales usos, dependiendo del contexto y las condiciones establecidas en los requerimientos y la arquitectura de la aplicación.
- Proporcionar al estudiante los conceptos y lineamientos necesarios para que pueda construir el front-end de una aplicación web, haciendo uso de las tecnologías referenciadas.
Usabilidad y experiencia de usuario
La interfaz gráfica de una aplicación web o front-end debe cumplir con ciertas características para que el usuario se sienta satisfecho al utilizarla.
Si bien es cierto es bastante complejo que el 100% de los usuarios de una aplicación estén completamente satisfechos, a continuación revisaremos dos conceptos que nos ayudarán a identificar las características que debe tener el Front-End de una aplicación web, para lograr en cierta medida ese nivel de satisfacción: La usabilidad y la experiencia del usuario.
![]() |
El que una aplicación sea usable, no implica que tenga una buena experiencia de usuario. Sin embargo, sin un alto grado de usabilidad, es poco probable que esto se logré. De igual forma, es importante resaltar que la buena experiencia de usuario representa el éxito de una aplicación web. |
Capas front-end
Teniendo claridad sobre los conceptos de usabilidad y experiencia de usuario, relevantes para la construcción del front-end de una aplicación web, ahora vamos a enfocarnos en el cómo “construir” dicho front-end, para lo cual es importante presentar una de las mejores prácticas que actualmente se están aplicando en el desarrollo de aplicaciones web: “Separación por Capas”.
Este proceso comienza justamente separando en archivos diferentes el código JavaScript, las hojas de estilos (CSS) y las páginas HTML. Esto permite que diferentes personas puedan crear módulos reutilizables de presentación y comportamiento sin bloquearse entre sí.
Ahora bien, normalmente el contenido de una página web, corresponde al texto y demás recursos como audio, vídeo e imágenes que pueda incluir. Así mismo, es posible hacer enlaces a otras páginas, a través de sus correspondientes URIs (Uniform Resources Identifiers).
![]() |
Malas prácticas: todavía es posible encontrarse con páginas web que aparte del lenguaje HTML, tienen embebido código JavaScript, estilos de presentación e incluso consultas directas a una base de datos. Es como si en la construcción de una casa, el cableado y la tubería estuviesen incrustados en las paredes de cemento; si hay algún daño o se requiere una modificación, lo mejor sería echar el muro abajo y volver a empezar. |
Estructura y presentación
La estructura de una página web está asociada a la disposición de las diferentes secciones en las cuales se presentará el contenido (texto, imágenes, video, etc.), tal como lo presenta el gráfico de esta pantalla.
El contenido dentro de la estructura inicial de la página, incluye los diferentes componentes que hacen parte de ésta, como son: botones, tablas, cuadros de texto, etc., así como el estilo de presentación, en el que se definen colores, tamaños, tipos de letra, posición entre otros. Los componentes, su ubicación y los estilos correspondientes, conforman el diseño gráfico de la página web.
Al hablar de la estructura de una página web y sus componentes, inevitablemente debemos referirnos a HTML - Hypertext Markup Language. Ahora bien, para definir el estilo de dichos componentes utilizaremos las hojas de estilos en cascada (CSS).
Estructura y presentación
HTML - Hypertext Markup Language
De acuerdo con lo presentado en la unidad anterior, Tim Berners-Lee crea el HTML hacia finales de 1990. Las bases de lo propuesto por Lee no han cambiado demasiado, sin embargo, el HTML ha estado en constante evolución. Actualmente nos encontramos en la versión 5, la cual fue desarrollada siguiendo principios como: compatibilidad, utilidad, interoperabilidad y acceso universal. (World Wide Web Consortium, W3C, 2007)
HTML5 incluye mejoras a gran parte de los elementos de las versiones anteriores y adiciona nuevos elementos, y a su vez, atributos. En la siguiente interactividad podemos observar la clasificación de los diferentes elementos de HTML5.
![]() |
Como lo mencionamos anteriormente, los elementos tienen eventos asociados. Algunos de éstos aplican de manera general a todos elementos y otros aplican a elementos en particular dependiendo de su funcionalidad. Veamos una tabla resumen de los mismos de manera general. |
Estructura y presentación
CSS – Cascade Styles Sheets
Las hojas de estilo en cascada permiten modificar la forma en que los componentes se visualizan a través de los navegadores. En tal sentido, a través de CSS podemos modificar el tamaño, tipo y color del texto, alinear elementos, definir colores de borde, fondo, entre otros.
![]() |
Identificadores HTML: a continuación, algunas condiciones que deben cumplir los identificadores de elementos HTML:
|
El W3C, para esta última especificación, ha decidido separar el CSS3 por módulos dedicados a aspectos particulares de este lenguaje, entre los cuales se encuentran: selectores, template layout, fondos y bordes, interface de usuario básica, colores, fuentes, posicionamiento, texto, y muchos más. (Saltzman Dan, A., 2012) Como podemos ver CSS3 tiene bastantes herramientas para construir una interfaz de usuario con “estilo”.
A continuación se definen los siguientes conceptos:
Actividad de aprendizaje
![]() |
Fortalece todo lo aprendido solucionando el siguiente crucigrama |
Estructura y comportamiento
Continuando con la mejor práctica de “Separación por Capas”, en las siguientes secciones abordaremos la manera como podemos darle comportamiento a la interfaz gráfica de nuestra aplicación web, a través de lenguajes de tipo client-side scripting, como JavaScript.
Como se mencionó en secciones anteriores, HTML permite embeber o enlazar scripts desde una página weblos cuales le proporcionan la capacidad al front-end de capturar, validar, transformar, procesar la información de formularios HTML, enviar y recibir información del back-end e incluso adicionar componentes y elementos a una página, de manera dinámica.
En las dos siguientes secciones, profundizaremos en el modelo DOM y en el lenguaje JavaScript.
Estructura y comportamiento
DOM – Document Object Model
Document Object Model - DOM, es una plataforma o lenguaje neutro, que sirve como interfaz para que los programas y scripts puedan de manera dinámica acceder y actualizar el contenido, la estructura y el estilo de los documentos. (World Wide Web Consortium, W3C, 2005).
Dado lo anterior, DOM representa la organización de los objetos en una página. El modelo de objetos, es jerárquico y cada elemento representa un nodo de dicha jerarquía.
Ahora bien, recordemos que DOM es una interfaz, y como tal representa, (Refsnes Data, 2017):
- Los elementos HTML, como objetos
- Los atributos de los elementos, como propiedades.
Por otro lado, tiene acceso a los elementos HTML y sus eventos, a través de métodos.
![]() |
El estándar DOM del W3C está divido en tres partes:
|
Estructura y comportamiento
JavaScript
Script es un código de programación, que no necesita ser compilado (pre-procesado) antes de ser ejecutado; en tal sentido, JavaScript es el lenguaje de scripting más utilizado en la actualidad, es un lenguaje interpretado, débilmente tipado, que es ejecutado por el navegador cuando la página es descargada o en respuesta a un evento disparado por el usuario. (World Wide Web Consortium, W3C, 2017).
La evolución de JavaScript ha ido de la mano, con la evolución de los navegadores, recordemos que es el navegador el que interpreta y ejecuta este tipo de código.
Las instrucciones en JavaScript se separan por “;” y están compuestas por expresiones, variables, valores, operadores, palabras reservadas y comentarios. En la siguiente interactividad, presentamos un resumen de la sintaxis y principales estructuras del lenguaje JavaScript.
Después de hacer este pequeño recorrido por la sintaxis JavaScript, veamos las dos maneras en que una página HTML puede invocar scripts.
Finalmente, estudiemos qué nos ofrece JavaScript para acceder a los elementos de nuestras páginas HTML, a través de DOM. Para esto, JavaScript ha implementado una serie de métodos para los objetos de tipo DOM.
![]() |
La fundación Mozilla es quien ha recibido el legado de Netscape, es así como el navegador FireFox está basado en el antiguo navegador Netscape y ha seguido mejorando el lenguaje JavaScript |
Estructura y comportamiento
Asynchronous JavaScript and XML
Bien, hemos revisado conceptos de HTML, CSS, DOM, JavaScript, pero recuerdan que en la unidad 1, hablamos de una de las técnicas que revolucionó la manera en que el usuario interactúa con la interfaz de usuario de una aplicación web, dicha técnica es AJAX: Asynchronous JavaScript and XML.
AJAX es un término acuñado en 2005, que describe una técnica, que mezcla varias tecnologías, HTML, XML, JavaScript, y cuyo objetivo principal es hacer refrescos parciales sin necesidad de recargar la página entera, dado que puede cargar información del servidor. Una vez la página haya cargado completamente, también permite hacer peticiones al servidor en segundo plano.
Ahora bien, la estrella de esta obra es el objeto XMLHttpRequest, el cual permite realizar invocaciones al back-end en forma sincrónica y asincrónica. Veámos con un ejemplo cómo luce el código JavaScript correspondiente.
En algunas ocasiones es difícil hacer pruebas de peticiones AJAX, por la restricción de algunos servidores web, de no permitir que se hagan este tipo de peticiones desde páginas que no estén bajo su mismo dominio, esto por temas de seguridad. Dicha condición es conocida como “Access-Control-Allow-Origin”.
![]() |
El protocolo HTTP, define una serie de métodos de petición para indicar la acción que se desea realizar sobre un recurso determinado. Por lo pronto se referencian los que más nos interesan:
|
Frameworks front-end
En los capítulos anteriores, hemos visto diferentes lenguajes, técnicas y especificaciones a partir de las cuales se puede crear el front-end de una aplicación web. Sin embargo, construir una aplicación grande y compleja, haciendo uso de estas tecnologías base, puede volverse una tarea dispendiosa.
En la actualidad existen varios frameworks y librerías basadas en HTML, CSS, JavaScript y AJAX, que facilitan la construcción del front-end de las aplicaciones web, proporcionando componentes, estilos y formas más sencillas de comunicarse con el back-end.
En los siguientes capítulos veremos con un poco más de detalle, algunas de las librerías y frameworks JavaScript, más utilizados y conocidos, sin desconocer que hay muchos otros, que están evolucionando y ganándose un espacio en el mercado.
![]() |
Algunos de los otros frameworks para implementación del front-end, que también están ganando adeptos son: Ember.js, Vue.js, Meteor.js, Aurelia, Polymer. |
Frameworks front-end
JQuery
JQuery es un conjunto de librerías libres y de código abierto (licenciadas bajo MIT License), escritas en JavaScript, cuya parte principal, es el motor de selectores llamado Sizzle, el cual también está implementado en dicho lenguaje y hace uso de los selectores CSS como objetos JQuery, para acceder a los elementos de la página HTML. (Bear Yehuda, 2015)
Existen dos maneras de enlazar las librerías JQuery a nuestra página HTML:
- Descargar las librerías y almacenarlas en el servidor
- Incluirlas para ser cargadas desde un CDN disponible en internet.
![]() |
En el siguiente video, podemos observar cómo construir una interfaz gráfica web, haciendo uso de los componentes y librerías de jQuery. |
Ahora veamos un poco de la sintaxis jQuery. No olvidemos que la librería jQuery UI, tiene componentes ya elaborados, con efectos interesantes que podemos utilizar en las interfaces gráficas de nuestras aplicaciones.
Actividad de aprendizaje
![]() |
Aplica los conocimientos estudiados, construyendo una página web. |
Frameworks front-end
Angular.js
Angular.js es un framework JavaScript “Todo incluido” de código abierto, creado por Google, el cual tiene mucho que ofrecer a los desarrolladores, a través de un código base estable, una comunidad activa y en crecimiento, y gran diversidad de herramientas.
Angular.js es un framework construido bajo el patrón MVC, (Recuerden que estudiamos este patrón en la unidad 1); frente a los frameworks tradicionales. Este modelo ofrece varias ventajas, como simplicidad, desarrollo rápido, velocidad en la operación, facilidad en las pruebas y facilidad en el empaquetado y despliegue en cualquier plataforma móvil o web. (Williamson, 2015).
Otro tema a tener en cuenta es que Angular está construido y recomienda trabajar con TypeScript. De acuerdo con lo presentado en el gráfico principal de esta pantalla, haremos una breve descripción de cada parte (Dayley, 2017).
![]() |
Otras librerías bastante utilizadas para construir el front-end de aplicaciones web, son React.js de Facebook y Bootstrap (Mark Otto and Jacob Thornton en Twitter). |
Resumen
En la parte inicial de la unidad, se introducen los conceptos de usabilidad y experiencia de usuario, el primero presentado como atributo de calidad del software y el segundo, como una estrategia para entender mejor las necesidades y expectativas del usuario respecto a una aplicación web.
Posteriormente, se presenta una de las mejores prácticas para abordar la construcción del front-end de aplicaciones web, la “separación por capas”, mediante la descripción de las diferentes capas que conforman el front-end y las relaciones entre estas, así como las ventajas de implementar esta estrategia.
En la parte final, se presentan librerías y frameworks, que facilitan la labor del desarrollador en la construcción del front-end de aplicaciones web, indicando características, arquitectura y ejemplos; exponiendo las diferencias entre un conjunto de librerías y un framework para desarrollo de interfaces gráficas. En esta sección, se hace referencia a diferentes temas tratados en la unidad anterior, como tipos de aplicaciones y patrones.
Actividad de aprendizaje
![]() |
Continuando con la actividad de la unidad 1, aplica tus conocimientos desarrollando de manera detallada la arquitectura y el diseño de la aplicación web, que has planteado para este ejercicio transversal de la asignatura. |
Bibliografía ()
- Bear Yehuda, A. D. (2015). jQuery in Action (3ra. ed) Shelter Island, NY 11964: Manning Publications Co.
- Dayley, C., Dayley, B., & Dayley, B. (s.f.). Learning Angular,(2da ed). Addison-Wesley Professional.
- Ferguson, R., & Heilmann, C. (2013). Beginning JavaScript with DOM Scripting and Ajax (2da ed). Apress.
- Gechev, M. (2017). Getting Started with Angular (2da. ed). Packt Publishing.
- Goodman, D., Rayl, T. G., Novitski, P., & Morrison, M. (2010). JavaScript® Bible (7ma ed). John Wiley & Sons.
- Lazaris, L., Weyl, E., & Goldstein, A. (2015). HTML5 & CSS3 for the Real World. 48 Cambridge Street Collingwood, VIC Australia 3066: SitePoint Pty. Ltd.
- Saltzman Dan, C. A. (2012). CSS3 Solutions, Essential Techniques for CSS3 Developers. Apress
- Williamson, K. (2015). Learning AngularJS. O'Reilly Media, Inc.
Referencias Web
- Angular. (s.f.). Architecture Overview. [online] Recuperado de: https://angular.io/guide/architecture [Revisado 6 de: octubre de 2017].
- Airbnb. (s.f.). Alquileres vacacionales, casas, experiencias y lugares - Airbnb. [online] Disponible en: https://www.airbnb.com.co/ [Revisado 2017]..
- Ecma International. (s.f.) TC39 - ECMAScript® (formerly TC39-TG1). [online] Recuperado de: http: //www.ecma-international.org/memento/tc39.htm [Revisado 6 de octubre de 2017].
- ISO 25000 (s.f.) ISO/IEC 25010 [online] recuperado de: http: //iso25000.com/index.php/normas-iso-25000/iso-25010 [Revisado 2017].
- Mozilla and individual contributors. (s.f.). JavaScript basics. [online] Recuperado de: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basicsRevisado 6 de octubre de 2017].
- Mozilla and individual contributors. (s.f.). Using XMLHttpRequest. [online] Recuperado de: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest [Revisado 6 de octubre de 2017].
- Platt, D. (2016) The Joy of UX: User Experience and Interactive Design for Developers. Introduction: UX Rules the Roost [pdf] Indiana: Pearson education Inc. Recuperado de: http://ptgmedia.pearsoncmg.com/images/9780134276717/samplepages/9780134276717.pdf.
- TypeScrpit. (s.f.). TypeScript - Decorators. [online] Recuperado de: https://www.typescriptlang.org/docs/handbook/decorators.html [Revisado 7 de octubre de 2017].
- Refsnes Data. (s.f.). AJAX Introduction. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/js/js_ajax_intro.asp [Revisado 6 de octubre de 2017].
- Refsnes Data. (s.f.). HTML Event Attributes. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/tags/ref_eventattributes.asp [Revisado 4 de octubre de 2017].
- Refsnes Data. (s.f.). HTML Introduction. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/html/html_intro.asp [Revisado 4 de octubre de 2017].
- Refsnes Data. (s.f.). HTML Tags Ordered by Category. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/tags/ref_byfunc.asp [Revisado 4 de octubre de 2017].
- Refsnes Data. (s.f.). JavaScript HTML DOM. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/js/js_htmldom.asp [Revisado 6 de octubre de 2017].
- Refsnes Data. (s.f.). JavaScript Introduction. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/js/js_intro.asp [Revisado 6 de octubre de 2017].
- Refsnes Data. (s.f.). JavaScript Tutorial. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/js/default.asp [Revisado 6 de octubre de 2017].
- Refsnes Data. (s.f.). jQuery Tutorial. [online]. W3schools.com. Recuperado de: https://www.w3schools.com/jquery/default.asp [Revisado 6 de octubre de 2017].
- Riley, J. (2017). Understanding Metadata. What is Metadata, and what is it for? [pdf] Baltimore: NISO. Recuperado de: https://groups.niso.org/apps/group_public/download.php/17446/Understanding%20Metadata.pdf.
- Pivotal Software. (s.f.). Understanding REST. [online] Srping. Recuperado de: https://spring.io/understanding/REST [Revisado 6 de octubre de 2017].
- Oracle - Java. (s.f.). Java Applets. [online] Recuperado de: https://docs.oracle.com/javase/tutorial/deployment/applet/index.html [Revisado 6 de octubre de 2017].
- Web Hypertext Application Technology Working Group (WHATWG). (s.f). XMLHttpRequest - Living Standard. [online] Recuperado de: https://xhr.spec.whatwg.org/ [Revisado 6 de octubre de 2017].
- World Wide Web Consortium, W3C. (s.f.). 16 Frames. [online] Recuperado de: https://www.w3.org/TR/html401/present/frames.html [Revisado 6 de octubre de 2017].
- World Wide Web Consortium, W3C. (1997). Client-side Scripting and HTML. [online] Recuperado de: https://www.w3.org/TR/WD-script-970314
- World Wide Web Consortium, W3C. (2001). CSS3 module: W3C selectors. [online] Recuperado de: https://www.w3.org/TR/selectors-3/ [Revisado 4 de octubre de 2017].
- World Wide Web Consortium, W3C. (2005). Document Object Model (DOM). [online] Recuperado de: https://www.w3.org/DOM/
- World Wide Web Consortium, W3C. (2007). HTML Design Principles. [online] Recuperado de: https://www.w3.org/TR/html-design-principles// [Revisado 4 de octubre de 2017].
- World Wide Web Consortium, W3C. (s.f). Javascript Web Apis. [online] Recuperado de: https://www.w3.org/standards/webdesign/script [Revisado 5 de octubre de 2017].
- World Wide Web Consortium, W3C. (2006). Naming and Addressing: URIs, URLs, ... [online] Recuperado de: https://www.w3.org/Addressing/ [Revisado 4 de octubre de 2017].
















