Angular FRAMEWORK

 Angular FRAMEWORK

 AngularJS

!==

Diferencias

  • Javascript vs TypeScript

  • Component-based UI

  • SEO Friendly

  • Bindings

  • Bootstrapping

Quienes usan Angular

ProblemA

¿Cómo desarrollo mi aplicación WEB?

¿Qué herramientas uso para el desarrollo?

Javascript puro

Re-hacer la rueda, todo a mano

Jquery

Jquery enfocado al UI, pero no te ayuda con la lógica ni el manejo de datos

Single page APP

Las aplicaciones empezaron a crecer en usuarios y contenido

Y se vio la necesidad de escalar los servidores, moviendo partes de código a el cliente

Usar un Framework

Te guían en como hacer tu aplicación

Componentes que puedes usar

Angular

Imagen de lo que todos esperaban

Programación Angular

¿Qué es Angular?

Angular es un conjunto de herramientas, que te permite hacer una aplicación

Cómo funciona

Template

La plantilla que contiene la estructura de la vista

Un HTML con componentes que se van a renderizar

Componente

Una pequeña parte de la aplicación

Es quién controla la información que el template muestra

Servicio

Lo que maneja la lógica pesada

Tiene un propósito específico y es su responsabilidad

Inyector de Dependencias (DI)

La inyección de dependencias administra los servicios

Se le entregan a quién las pida

Inversión de control (IOc)

Las clases deben configurar sus dependencias desde afuera

Los componentes reciben servicios en su constructor

PAra qué DI/IOc

Permite hacer nuestros componentes independientes de los servicios

Permite que podamos probar nuestras clases de forma fácil

Ventajas

Las ventajas que obtienes al usar angular:

 

- Framework

- Componentes web

- Injector de dependencias

por qué Framework

Existen herramientas que ya están construidas y con las cuales puedes programar

Para qué Componentes web

La aplicación se convierte en algo modular, puede crecer con facilidad

DESVENTAJAS

  • Es gran conjunto de herramientas y es difícil aprender como usarlas

  • Aprender require paciencia y experimentación

TypeScript

TypeScript es un superset de Javascript

Lo mismo que Javascript, pero mejor

porqué typescript

  • TypeScript es que es abierto (open source)

  • Madurez del código

  • TypeScript me permite explicar mis APIs a terceros

  • Compilado

Lo NUEVO!

Angular 5 - Actual

Typescript 2.4.x support

Reactive Forms

HttpClient

i18N Pipes

Router

Animations

Angular 6 -  2018

Typescript 2.6.x support

Forms Features

Router

Optional generic type for ElementRef

Configurando modulos

ModuleWithProviders

UTilizandolo

injectando

@Inject(token:String)

convenciones

  • forRoot se debe usar en el módulo raíz
  • forChild debe ser usado en módulos hijos
  • Nada fuerza estos nombres, son convenciones

Ejemplo

Sugerencias

  • Componentizar

  • Manejar servicios con responsabilidades claras

  • Crear modelos que representen los datos

 FRAMEWORK de Programación reactiva

Quienes usan RX

ProblemA

¿Qué tan difícil es manejar datos asincrónicos?

SoluCión?

No me importa si tienes los datos o no, solo continua

No esperar a los datos y continuar procesando

Solución?

Espero que los datos lleguen pronto, esperaba que llegaran hace mucho tiempo

funciones callback

SoluCión

Te doy mi palabra que te daré un resultado, o al menos te diré si fallé al intentarlo

Promesas

SoluCión

Promesas

MultipleS veces

Observable

Cómo funciona

GENERATOR​​

OBSERVABLE

PROMISE

FUNCTION

Synchonous

Asynchonous

Multiple

Single

Promise VS observable

Los observables se pueden cancelar (unsubscribe)

Los observables se pueden repetir (retry)

Programación reactiva

¿Qué es programación reactiva?

Microsoft's Rx terminology

KISS

Programación reactiva es programar con streams de datos asincrónicos

streams de datos

Eres capaz de crear un stream de datos a partir de cualquier cosa

variables, input de usuario, propiedades, caches, estructuras de datos, etc.

funciones y más

Te dan un conjunto de funciones que te permiten combinar filtrar y hacer cambios sobre cualquiera de los streams

Overview

Tenemos muchas funciones que nos ayudan:

  • Transformar (map, scan ...)
  • Filtrar (filter, take ...)
  • Combinar (concat, combineLatest ...)
  • Otros (reduce, retry ...)

Rxjs marbles

http://rxmarbles.com/

Ventajas

Los Sistemas Reactivos son:

 

- flexibles y escalables

- altamente responsivo

- tolerante a fallos

- evolutivo

Flexible

Cuando un cambio es requerido la respuesta es manejada por nuestras herramientas

Cambios en streams de datos son fáciles de hacer

Responsivo

El usuario tendrá una respuesta inmediata

No hay demora entre una acción y su resultado

Evolutivo

La aplicación puede crecer y expandirse, incluyendo nuevas funcionalidades de forma rápida

Hacer el código fácil de mantener y evolucionar

Desventajas

Aprenderlo es difícil, aún más difícil por la falta de buen material

DESVENTAJAS

La master sword - empieza con poco poder

DESVENTAJAS

No sabes como usar la master sword,  solo la mueves

DESVENTAJAS

A través del entrenamiento incrementas el poder de la master sword

DESVENTAJAS

La master sword se convierte en el arma más poderosa que puedes usar

DESVENTAJAS

  • Solo un conjunto de herramientas, no sabes como utilizarlas

  • Difícil de hacer debugging

  • Aprender require experimentación

  • Difícil de poner observables en aplicaciones complejas que ya existen 

DESVENTAJAS

RXJS 6

  • Mejorar el rendimiento
  • Propuesta de Estándar Observable.
  • Dar más modularidad a la estructura de archivos
  • Dar mejores 'call stacks' para hacer el debugging más fácil.

Cuando usarlo

Applicaciones que usen gran cantidad datos, que se puedan representar en una secuencia asincrónica

Cuando NO usarlo

Cuando los datos asincrónicos son de unica respuesta

La aplicación no crecerá en datos, y la complejidad es baja

RX Más que solo JS

http://reactivex.io/

RX Más que solo JS

Sugerencias

  • Mantener los observables simples
  • Mantener la  consistencia de las fuentes datos
  • No sobrecargar los observados

EJemplo con CLICK

La aplicación está hecha para realizar una acción sencilla luego de hacer click en un botón 3 veces rápidamente

https://github.com/hackeo1/click-project

Gracias!

Reto:
https://goo.gl/8iyaGi

Red:

HACKATHON UAM

Contraseña:

Hackathon

Referencias

  • https://www.campusmvp.es/recursos/post/las-5-principales-ventajas-de-usar-angular-para-crear-aplicaciones-web.aspx

  • https://jaxenter.com/angular-5-new-features-138649.html

  • https://www.ngdevelop.tech/angular-6-features/

  • https://angular.io/guide/ajs-quick-reference

  • https://www.scalablepath.com/blog/single-page-applications/

  • https://jaxenter.com/angular-5-new-features-138649.html

  • https://www.ngdevelop.tech/angular-6-features/

Referencias

  • http://slides.com/santiagorodriguezsordo/functional-reactive-programming-spanish

  • https://michalzalecki.com/use-rxjs-with-react/

  • https://medium.com/frintjs/deep-dive-into-observed-components-with-react-js-and-frintjs-e2726eaeff2b

  • https://x-team.com/blog/rxjs-observables/

  • https://xgrommx.github.io/rx-book/index.html

  • https://gist.github.com/staltz/868e7e9bc2a7b8c1f754

ng masters

By Mateo Restrepo Restrepo

ng masters

Presentation about angular framework

  • 475