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