Curso Angular 01/01/2019 Curso JavaScript.

Slides:



Advertisements
Presentaciones similares
Scripting en el lado del Cliente
Advertisements

Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
JavaScript Programación Web. Java Script es un lenguaje de escripts que se usa en páginas web (ligero) Java es un lenguaje de programación orientada a.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Aplicaciones Web Verano Programación de aplicaciones Web FCC-BUAP Verano 2016BMB - RAM2.
Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
PRESENTACIÓN DRUPAL Versión 0.1 Por Ricardo Chang.
Lenguaje de programación: Lua Fundamentos de lenguaje de programación. Iván Cardemil Patricio Tudela Camilo Rojas Llosect Moscoso.
Hojas de Estilo en Cascada CSS RAFAEL MOURGLIA. CSS son las siglas de Cascade Style Sheet que traducido significa hojas de estilo en cascada. Las hojas.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Pruebas de Funcionalidad de Software: Caja Negra y Caja Blanca Curso: Diseño de Sistemas 9no. Semestre.
COMPONENTES DE INTERNET
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Convenciones de nomenclatura y diseño
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Conceptos Básicos Prof. Carlos Rodríguez Sánchez
Introducción a la Programación Multimedial
PHP Hypertext Preprocessor
Herencia Implementación en Java.
Capítulo 12 Leer archivos XML con AJAX
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
BASES DE DATOS.
Estructuras de Control en Visual Basic.net
LENGUAJES Y REPRESENTACION TECNICA
Introducción a programación web Martin Esses
PSEUDOCÓDIGO Prof. Rafael Mourglia.
Aplicaciones de gmail.
UNIDAD II INTERNET.
Programación orientada a objetos
Manejo de Excepciones Agustín J. González ELO329.
Tema 3. Lenguaje unificado de modelado UML
Manejo de Excepciones Agustín J. González ELO329.
Lenguaje y representación técnica
LÓGICA DE PROGRAMACIÓN
Introducción Gabriel Montañés León.
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Introducción a las estructuras de datos
HISTORIA El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el.
Plantillas (Templates)‏
Hipervínculos scratch
Manejo de Excepciones Agustín J. González ELO329.
CONCEPTOS PRELIMINARES (Cont)
Curso de iniciación al trabajo con MatLab 7.0
Manejo de Excepciones Agustín J. González ELO329.
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
HERRAMIENTAS DE PROGRAMACIÓN
Universidad Nacional de Colombia - Leguajes de Programación
¿Qué es un hipervínculo? . Un hipervínculo es un enlace, normalmente entre dos páginas web de un mismo sitio, pero un enlace también puede apuntar a.
Introducción al Visual Basic  Un programa en sentido informático está constituido en un sentido general por variables que contienen los datos con los.
Introducción práctica la uso de la tarjeta Arduino.
COMPONENTES WEB TEMA: variables.
Instituto Tecnológico de Minatitlán
HTML5 es la nueva versión del lenguaje de marcado que se usa para estructurar páginas web, que actualmente todavía sigue en su evolución, gracias a él.
Javascript.
Entendiendo PHP En diseño de software en el Front-end es la parte del software que interactúa con los usuarios. Es la persona que se encarga del diseño.
Como sumar dos números con JavaScript
Curso Angularn Tema 01b 15/01/2019 Curso JavaScript.
“Conceptos Básicos de Java”
Frontend vs Desarrollo WEB Moderno Perfiles Ingenieros Backend Ingenieros Frontend Diseñadores Web: Se encargan de crear la interfaz gráfica, la.
Lenguajes del lado del cliente
Algunas Características de C++ no presentes en C
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Manejo de Excepciones Agustín J. González ELO329 ELO329.
DESARROLLO DE APLICACIONES WEB INSTRUCTOR: HEMERSON VILLACORTA MANIHUARI.
Manejo de Excepciones en C++
Tecnología Web Rodrigo Durán y Juan Díaz. ¿Que es?
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
Intr. a la creación y gestión de páginas web
Transcripción de la presentación:

Curso Angular 01/01/2019 Curso JavaScript

Tema 1. Introducción 01/01/2019 Curso JavaScript

Índice 1.1 Introducción a angular Patrón SPA Patrón MVC Url fragments 1.2 Introducción a ECMA Script 6 Template literals let y const Arrow functions Operador for…of Sintaxis corta de objetos Operadores Rest y Spread Valores por defecto Destructuring Otras características de ES2015/ES6 Clases 1.3 Introducción a TypeScript Particularidades de TypeScript Tipado de datos Interfaces Visibilidad de métodos y propiedades de las clases Constructores breves Tipos unión Otras características de TypeScript Operador Elvis (de Angular) 01/01/2019 Curso JavaScript

SPA: Single Page Application. Es un tipo de aplicación web donde todas las pantallas las muestra en la misma página, sin recargar el navegador. Técnicamente: aplicación con un único punto de entrada. Solo existe un único punto de entrada, y a través de él se pueden acceder a diferentes vistas. En el mismo punto de entrada, se irán intercambiando distintas vistas, produciendo el efecto de que tienes varias páginas, cuando realmente todo es la misma, intercambiando vistas. Ejemplo: GMAIL 01/01/2019 Curso JavaScript

Bloques SPA 01/01/2019 Curso JavaScript

Arquitectura 01/01/2019 Curso JavaScript

Modelo MVC 01/01/2019 Curso JavaScript

Modelo: Model-View-Presenter 01/01/2019 Curso JavaScript

SPA Para aclarar posibles malentendidos: SPA no implica que no cambie la dirección de la barra de direcciones, es decir, la URL a la que accedes con el navegador. De hecho, es normal que al interaccionar con una SPA la URL que se muestra en la barra de direcciones del navegador vaya cambiando  La clave es que, aunque cambie esta URL, la página no se recarga. El hecho de cambiar esa URL es algo importante, ya que el propio navegador mantiene un historial de pantallas entre las que el usuario se podría mover, pulsando el botón de "atrás" en el navegador o "adelante". Con todo ello, se consigue que el usuario pueda usar el historial como lo hace en una página normal, siendo que en una SPA la navegación entre la secuencia de páginas del historial se realiza realmente entre vistas de la aplicación. 01/01/2019 Curso JavaScript

Problemas con SPA Alta complejidad técnica Sistema de routing adaptado a las necesidades de la aplicación Uso de analytics más complejo por la navegación sintética Los diseñadores no están preparados técnicamente y deben trabajar sobre maquetas que después son integradas por los programadores No amigable para robots y spiders de los buscadores El navegador debe tener activado JS Falta de sincronismo con el servidor en navegación tradicional 01/01/2019 Curso JavaScript

Lenguajes y tecnologías para producir una SPA Lenguajes y tecnologías para producir una SPA Lenguajes y tecnologías para producir una SPA  Una SPA se implementa utilizando Javascript. No existe ningún otro tipo de lenguaje en el que puedas realizar una SPA, ya que básicamente es una aplicación web que se ejecuta del lado del cliente. Nota: Obviamente, también se realiza usando HTML + CSS, para la presentación, ya que son los lenguajes que entiende el navegador. Existen diversas librerías y frameworks que facilitan el desarrollo de una SPA: AngularJS Angular 2 React Polymer EmberJS 01/01/2019 Curso JavaScript

URL: Universal Resource Locator (Localizador Uniforme de Recursos) Describen la localización de un recurso (documento o una página) Anatomía de una URL Los fragmentos se utilizan en las URLs para saltar a una sección específica dentro de una página. 01/01/2019 Curso JavaScript

ES6 JavaScript & TypeScript 01/01/2019 Curso JavaScript

Transpilación El navegador no interpreta TypeScript. Convertir TypeScript a JavaScript Actualmente, los navegadores soportan JavaScript ES5 Transpilación: Proceso de convertir TypeSCript a Javascript Uso de un compilador: tsc npm install -g typescript Verificar la versión: tsc -v Para crear un fichero de configuración: tsc --init 01/01/2019 Curso JavaScript

TypeScript Lenguaje de programación open source creado por Microsoft Primera versión liberada en 2012 TypeScript es un superconjunto de ES6 01/01/2019 Curso JavaScript

ES6 ES6 es un acuerdo de como debería funcionar JavaScript en el futuro Cada una de las empresas que implementan navegadores deciden como implementar las características respetando el acuerdo A día de hoy Chrome es el navegador que da el mejor soporte a ES6 En ocacsiones las características ES6 se activan cuando se utiliza se indica el modo “use sctrict”. Recomendación: agregar “use strict” a los ficheros Para compilar con las características: tsc -t ES6 -w nombreFichero.ts Visita este enlace para ver las características ES6 y el soporte: http://kangax.github.io/compat-table/es6/ 01/01/2019 Curso JavaScript

LET Un punto confuso para los desarrolladores procedentes de diferentes lenguajes de programación es el comportamiento de las variables teniendo en cuenta el ámbito. El ámbito (Scope) se refiere al ciclo de vida de una variable: Cuando y hasta cuando es visible una variable. En java y en C++ existe el concepto de “ámbito de bloque” Un bloque es código que está envuelto entre llaves: { } {   // Este es un bloque } // Esto ya no forma parte del bloque En estos lenguajes si se declara una variable dentro del bloque, dicha variable solo es visible dentro del bloque Pero en ES5 sólo existen 2 ámbitos: “ámbito global” y “ámbito de función” var a = "block"; console.log(a); 01/01/2019 Curso JavaScript

IIFE (Immediately Invoked Function Expression) function hello() {   var a = "function";   for (var i=0; i<5; i++) {   (function() {   var a = "block";   })();   }   console.log(a); } hello(); function hello() {   var a = "function";   for (var i=0; i<5; i++) {   function something() {   var a = "block";   };   }   console.log(a); } hello(); ¿Cual es la salida obtenida al ejecutar el código? “function” Dado que las funciones tienen su propio ámbito, utilizando IIFE se tiene el mismo efecto a tener ámbito a nivel de bloque. La variable a dentro del IIFE no es visible fuera del IIFE. 01/01/2019 Curso JavaScript

Let IIFE funciona, pero es una forma bastante larga de resolver este problema. Con ES6 ahora tenemos una nueva palabra clave let, la usamos en lugar de la palabra clave var y sirve para crear una variable con nivel de bloque function hello() {   var a = "function";   for (var i = 0; i < 5; i++) {   let a = "block";   }   console.log(a); } hello(); La variable a declarada dentro del bucle sólo existe dentro del cuerpo de dicho bucle 01/01/2019 Curso JavaScript

Uso de let en bucles for var funcs = []; for (var i = 0; i < 5; i += 1) {   var y = i;   funcs.push(function () {   console.log(y);   }) } funcs.forEach(function (func) {   func() }); Adivina: ¿Cuál es la salida de este fragmento de código? var funcs = []; for (var i = 0; i < 5; i += 1) {   let y = i;   funcs.push(function () {   console.log(y);   }) } funcs.forEach(function (func) {   func() }); 1 2 3 4 5 5 a) b) 01/01/2019 Curso JavaScript

Bucle for var funcs = []; for (let i = 0; i < 5; i += 1) {   funcs.push(function () {   console.log(i);   }) } funcs.forEach(function (func) {   func() }); A pesar de que let i = 0 está estrictamente declarado fuera del bloque for {} Cualquier variable declarada en la expresión de bucle con let tiene alcance de nivel de bloque en el bucle! 01/01/2019 Curso JavaScript

Resumen La palabra reservada let es muy importante en ES6 No es un reemplazo de var. var puede seguir siendo utilizada en ES6, con la misma semántica de ES5 Recomendación: utilizar let 01/01/2019 Curso JavaScript

Const Nueva palabra clave Declara una variable como “constante” const se utiliza para declarar variables, pero a diferencia de var y let, la variable debe ser inmediatamente declarada Tanto let como const crean variables con ámbito a nivel de bloque. Sólo existen dentro del bloque en el que han sido declaradas. function func() {   if (true) {   const tmp = 123;   }   console.log(tmp); // Error } func(); 01/01/2019 Curso JavaScript

Template Strings Multi-Lines Strings: Con ES5 y ES6 se pueden declarar cadenas de caracteres colocándolos entre ‘ o entre let single = "hello world"; Si se necesita que la cadena se extienda a varias líneas: En ES5: let single = 'hello\n' +   'world\n' +   'my\n' +   'name\n' +   'is\n' +   'asim\n'; console.log(multi); En Es6: let multi = ` hello world my name is asim`; console.log(multi); 01/01/2019 Curso JavaScript

Substitución de variables En ES6: let name = "asim"; let multi = ` hello world my name is ${name} `; console.log(multi); 01/01/2019 Curso JavaScript

Funciones flecha Javascript tiene funciones de primera clase: Las funciones JavaScript pueden ser pasadas al igual que cualquier otro valor Podemos pasar una función como argumento a la función setTimeout: setTimeout( function() {   console.log("setTimeout called!"); }, 1000); La función que hemos pasado como argumento, se denomina función anónima. ES6 introduce una sintaxis ligeramente diferente para definir funciones anónimas: sintaxis flecha Si la función sólo contiene una expresión podemos omitir las llaves setTimeout( () => {   console.log("setTimeout called!") }, 1000); setTimeout( () => console.log("setTimeout called!") , 1000); 01/01/2019 Curso JavaScript

Argumrntos en funciones flecha let add = function(a,b) {   return a + b; }; let add = (a,b) => a + b; 01/01/2019 Curso JavaScript

Destructuring La desestructuración es una forma de extraer valores en variables a partir de datos almacenados en objetos y vectores const obj = {first: ‘Pedro', last: ‘Sánchez', age: 45 }; Si queremos extraer la primera y la última propiedad en variables locales: ES5: const f = obj.first; const l = obj.last; console.log(f); // Pedro console.log(l); // Sánchez ES6: const { first: f, last: l } = obj; console.log(f); // Pedro console.log(l); // Sánchez Atajo en ES6 // {prop} es equivalente a {prop: prop} const {first, last} = obj; console.log(first); // Pedro console.log(last); // Sánchez {first: f, last: l} describe un patrón. Un conjunto de reglas de cómo queremos desestructurar un objeto const {first: f} = obj; extrae la primer propiedad y la almacena en una constante llamada t 01/01/2019 Curso JavaScript

Desestructuración de un vector const arr = ['a', 'b']; const [x, y] = arr; console.log(x); // a console.log(y); // b 01/01/2019 Curso JavaScript

Iteración Iteración sobre vectores No se puede romper el bucle No se puede regresar utilizando una sentencia return let array = [1,2,3]; for (let i = 0; i < array.length; i++) {   console.log(array[i]); } let array = [1,2,3]; array.forEach(function (value) {   console.log(value); }); 01/01/2019 Curso JavaScript

For In & For Out Diseñado para iterar sobre las propiedades de los objetos: var obj = {a:1,b:2}; for (let prop in obj) {   console.log(prop); } // a // b let array = [10,20,30]; for (let index in array) {   console.log(index); }); // 0 // 1 // 2 let array = [10,20,30]; for (let index in array) {   console.log(typeof(index)); }; // string let array = [10,20,30]; for (var value of array) {   console.log(value); } // 10 // 20 // 30 01/01/2019 Curso JavaScript

Resumen The for–in loop is for looping over object properties The for–of loop is for looping over the values in an array for–of is not just for arrays. It also works on most array-like objects including the new Set and Map types which we will cover in the next lecture. 01/01/2019 Curso JavaScript

Map & Set Uso de Object como relación clave-valor let base = {a:1,b:2}; let obj = Object.create(base); obj[c] = 3; for (prop in obj) {   if (obj.hasOwnProperty(prop)) {   console.log(prop)   } } // c let obj = {key: "value", a: 1} console.log(obj.a); // 1 console.log(obj['key']); // "value" let base = {a:1,b:2}; let obj = Object.create(base); obj[c] = 3; for (prop in obj) console.log(prop) // a // b // c 01/01/2019 Curso JavaScript

Map Nueva estructura de datos introducida en ES6 let map = new Map(); map.set("A",1); map.set("B",2); map.set("C",3); let map = new Map()   .set("A",1)   .set("B",2)   .set("C",3); let map = new Map([   [ "A", 1 ],   [ "B", 2 ],   [ "C", 3 ] ]); map.get("A"); // 1 map.has("A"); // true map.delete("A"); // true map.size // 2 map.clear() map.size // 0 for (let key of map.keys()) {   console.log(key); } for (let value of map.values()) {   console.log(value); } // 1: // 2 // 3 for (let entry of map.entries()) {   console.log(entry[0], entry[1]); } // "APPLE" 1 // "ORANGE" 2 // "MANGO" 3 01/01/2019 Curso JavaScript

for (let [key, value] of map.entries()) { console.log(key, value); } Utilizando desestructuración podemos accede a las claves y a los valores de forma directa: for (let [key, value] of map.entries()) {   console.log(key, value); } // "APPLE" 1 // "ORANGE" 2 // "MANGO" 3 for (let [key, value] of map) {   console.log(key, value); } // "APPLE" 1 // "ORANGE" 2 // "MANGO" 3 01/01/2019 Curso JavaScript

Set Equivalente a Map, en este caso únicamente se almacena un valor let set = new Set(); set.add('APPLE'); set.add('ORANGE'); set.add('MANGO'); let set = new Set()   .add('APPLE')   .add('ORANGE')   .add('MANGO'); let set = new Set(['APPLE', 'ORANGE', 'MANGO']); let set = new Set(); set.add('Moo'); set.size // 1 set.has('APPLE') // true set.delete('APPLE') set.size // 2 set.clear(); set.size // 0 let set = new Set(['APPLE', 'ORANGE', 'MANGO']); for (let entry of set) {   console.log(entry); } // APPLE // ORANGE // MANGO 01/01/2019 Curso JavaScript