Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y...

54
Desarrollo de aplicaciones web (RIA) basadas en HTML y JavaScript

Transcript of Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y...

Page 1: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Desarrollo de aplicaciones web (RIA)

basadas en HTML y JavaScript

Page 2: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

TemarioHTML5CSSJavaScriptjQueryHerramientas de soporte y depuración (ChromeDeveloper Tools, Firefox Developer Tools)

Page 3: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Conceptos generales

Page 4: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Conceptos generales

Rich Internet ApplicationsSingle Page ApplicationsA JAXSeparación entre contenido y estilosHerramientas de desarrollo

Page 5: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Web

Page 6: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

¿Qué es una web?

Medio de transmitir informaciónInformación = "contenidos"Contenidos vs propiedades visualesEl contenido debe tener sentido por sí solo

Page 7: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

¿Cómo me envía el servidor una web?

Peticiones del cliente, respuestas del servidorVarias peticiones de varios recursos, cada uno con suURLWaterfall<script>, defer y async

Page 8: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Motores derenderizado

Page 9: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Motores de renderizado

Gecko: FirefoxWebkit: Chrome y SafariTrident: IEEdgeHTML: Edge

Page 10: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Introducción aHTML y CSS

Page 11: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

HTML

Lenguaje de marcas (etiquetas)Cada etiqueta marca el inicio y el fin de un elementoHTML estructura el texto y le da significadoHTML 5

Page 12: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

CSS

Lenguaje que define cómo se presentan los elementosdel HTMLSepara contenido de propiedades visualesCSS 3

Page 13: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

HTML

Page 14: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

HTML

Apertura y cierreAtributosAnidaciones (sangrado)DOMEsqueleto mínimoEmmetComentarios

Page 15: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Elementos HTML del <head>

TítuloEtiquetas meta

meta charsetmeta viewport

CSSJavaScriptFavicon ( )generador

Page 16: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Elementos HTML del <body>

Elementos de bloque vs. elementos en líneaElementos para el layout:

divsectionmainarticleasidenavheaderfooter

Page 17: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Elementos HTML del <body>

Encabezados (h1-h6)Párrafos (p)Saltos de línea (br)Listas (ul, ol, li)Hiperenlace (a)Imagen (img)Icono (i)Importante (strong)Elemento de texto sin semántica (span)

Page 18: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

CSS

Page 19: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Hojas de estilos

¿Qué es una hoja de estilos?¿Dónde se cargan las hojas de estilos?Hojas de estilo de navegador, de usuario y de autorReglas CSS

Page 20: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Selectores

Por etiquetaPor clasePor idPor parentesco:

descendientehijo directohermanosiguiente hermano

Page 21: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Selectores

Por pseudoclase::hover:visitedfirst-child, last-child, nth-child(n)first-of-type, last-of-type, nth-of-type(n):focus

Por atributoMezcla

Page 22: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Box model

Page 23: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Box model

Contenido + padding + borde + margenMedidas totalesLa propiedad box-sizing

Page 24: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Unidades CSS

Page 25: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Unidades en CSS

px%calc()em

Page 26: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Flow

Page 27: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Flow

El flujoCambiar entre block e inline: la propiedad displayRompiendo el flujo: position

relativeabsolutefixed

Elementos flotantesClearfixFlexbox

Page 28: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

SASS

Page 29: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

SASS

Código fuente -> código compiladoModularización con @importAnidacionesVariablesMixins

Sin argumentosCon argumentos obligatoriosCon argumentos opcionales

Page 30: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Entorno dedesarrollo

Page 31: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Entorno de desarrollo

IDE: (Atom, Angular IDE...)

y npm

Visual Studio CodeGitNodeJS

Page 32: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

NodeJS y npm

Page 33: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

npm

Instalar última versión después de instalar nodeJSRepositorio de módulos distribuiblesMódulos globales y módulos localesLa carpeta node_modulesEl archivo package.jsonnpm initnpm install (--production)

Page 34: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

JavaScript

Page 35: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

JavaScript

Interpretado, compilado y ejecutado en el navegadorCada navegador programa su propio motor de JSEstandarización: ECMAScriptLa versión ES6 o ES2015Transpiladores: Babel, TypeScript

Page 36: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Organización del código JavaScript

Ejemplo de uso clásico de JS: utilizar un plugin dejQuery en nuestra web, o implementar algunainteracción con el usuarioPocas líneas de código, todas en un mismo archivo

Page 37: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Organización del código JavaScript

Programar toda la UI de una página¿2000 líneas en un solo archivo?

Ventajas Inconvenientes

Difícil de leer/entenderDifícil de mantenerPoca reusabilidadDifícil encontrar código nousadoColisiones de nombres

Una sola peticiónHTTP

Page 38: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Organización del código JavaScript

Optimización: dividir el código en variosarchivos/módulos

Ventajas Inconvenientes

Difícil encontrar código nousado (menos difícil queantes)Colisiones de nombresMuchas peticiones HTTPEl orden importa:dependencias

Legible e inteligibleFácil de mantenerReutilizableCargamos sólo lo quenecesitamos

Page 39: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Organización del código JavaScript

Dependencias: es difícil asegurar el orden, y no esposible tener dependencias circulares

Page 40: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Organización del código JavaScript: módulos

Module loaders: ellos gestionan las dependencias ycargan los módulos (RequireJS, SystemJS)

Module bundlers: además de lo anterior, generan unsolo código encadenado y minificado (browserify,webpack)

Page 41: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Organización del código JavaScript: módulos

¿Puedo escribir mis módulos como yo quiera? ¿hay unestándar?¿AMD, CommonJS, UMD, ES6?WebpackES6 -> Babel -> ES5 -> webpack -> bundle -> browser

Page 42: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos
Page 43: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

ES6

let y constTemplate literalsfor ... ofFuncionesArrow functionClasesMódulos

Page 44: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Iterables

Propiedad lengthMétodos:

forEachmapfilterreducefindindexOf

Encadenamiento

Page 45: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Webpack

Page 46: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Webpack

Module bundlerPaquete npmPresetswebpack.config.jswebpack-dev-serverLoaders:

css-loader, style-loadersass-loaderfile-loaderbabel-loader (con babel-core)raw-loader

Page 47: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

jQuery

Page 48: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

jQuery

Framework JSManipulación del DOMEl objeto jQueryEvento DOMContentLoadedHTMLElement

Page 49: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Seleccionando

Selectores CSSNavegando por el DOM

prev(), next(), siblings()parent(), closest()children(), find()first(), last(), eq()

Page 50: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Manipulando el DOM

Crear elementos e insertarlos en el DOMappend(), appendTo()prepend(), prependTo()after(), insertAfter()

Acceder al nodo de texto ( text() )Acceder a la cadena HTML ( html() )

Page 51: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Accediendo a los atributos

attr()addClass(), removeClass(), hasClass()css()

Page 52: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Templates

lodash ( _ )<script type="text/html"></script>_.template()<%= %><% _.each(datos, function(dato, i) { }) { } %>Variables en forma de objeto

Page 53: Desarrollo de aplicaciones web (RIA) basadas en HTML y ... · jQuery Herramientas de soporte y depuración (Chrome Developer Tools, Firefox Developer Tools) Conceptos generales. Conceptos

Links

Playground de BabelConfiguración de WebpackDocumentación sobre todas las API de JavaScriptJSON Server APIDocumentación sobre métodos para navegar por elDOM con jQuery