Existen automatizaciones y decisiones que ayudan a ahorrar tiempo a los desarrolladores. Tener unas reglas claras de ordenación de carpetas/ficheros reduciendo el tiempo para encontrarlas, utilizar imágenes de docker para tener todos el mismo entorno, auto-generar los servicios/proxies que se comunican con el backend, generar barrels para eliminar el acoplamiento con rutas físicas de los ficheros, utilizar meta-programación, utilizar convenciones y configuraciones que eviten escribir más código. Veremos cómo planteo determinadas automatizaciones en los proyectos en React y daremos un repaso a cómo plantear la configuración de un proyeto de tipo SPA. https://www.youtube.com/watch?v=VH6mTS2Bba4
6. #DotNet2018
Para cumplir con mi MISIÓN
poseo estos PRINCIPIOS
tengo mi ESTRATEGIA
y lo consigo con TÁCTICAS
@cbastospc
Qué vamos a ver hoy
A la hora de desarrollar con React:
9. #DotNet2018
@cbastospc
Cambian usuarios, sus necesidades, los
negocios, las herramientas, las leyes, etc.
Misión
“En un mundo cambiante, implementar una SPA de forma rápida y segura.”
Optimiza los recursos centralizados /
descentralizados. Mejora la experiencia de usuario
Cuanto antes lleguemos a ofrecerle lo
que le aporta valor, mejor.
18. #DotNet2018
@cbastospc
Táctica Infraestructura en contenedores
• Dependencias auto-contenidas
• Eliminar la variable “entorno”
• Facilidad de on-boarding / ejecución
• Encapsulación del proceso de build
• Documenta el entorno
Ventajas
19. #DotNet2018
Táctica Arquitectura de web components
Descripción
• React + JSX
• Redux
• Redux SAGA middleware
@cbastospc
No seamos más papistas que el papa
20. #DotNet2018
@cbastospc
Táctica Estructura auto-organizada de proyecto
• Recordar pocas reglas.
• Evitar mapas mentales
• Principio de la mínima sorpresa
• Transferencia entre proyectos.
• Guidelines + Linting
“Más del 80% del tiempo lo pasamos leyendo o buscando, no modificando el código.”
Descripción
24. #DotNet2018
@cbastospc
Táctica UI Controls controlados
App
G
G
App
G
G
G
G
• Utilizar de terceros
• Encapsular en componente propio.
• TUS convenciones de estructura/naming
• Punto de cambios controlado
• Frontera “Navegador” controlada
Descripción
Ventajas
25. #DotNet2018
@cbastospc
Táctica La navaja suiza de la composición
• Hijos conocidos
• Tipos de hijos conocidos
• Hijos desconocidos
• Hijos reconocidos
• Herederos
5 Técnicas
35. #DotNet2018
Táctica Única fuente de verdad
• Gestión de estado centralizado
• Utilizo mi connector (HOC)
• Reducers tipo máquina de estados
• Mapa de acciones con meta-programación
Descripción
@cbastospc
NO TODO ES ESTADO CENTRALIZADO
36. #DotNet2018
@cbastospc
Táctica Clientes web api auto-generados
• Swagger code gen script de npm
• Lee swagger.json
• Templates
• Genera el api.js
• Alias de webpack.
• Tests de contrato
• DRY
Descripción
Ventajas
37. #DotNet2018
@cbastospc
Táctica Habla en la lengua del territorio
• La interfaz es un contrato
• Evita los mapas mentales.
• Proyecta en el Api Client
• Proyecta cerca del consumidor
SAGA Reducer Container Component Select
[
{ id: 1, name: ‘Roberto’},
{ id: 2, name: ‘Pedro’}
]
[
{ value: 1, text: ‘Roberto’},
{ value: 2, text: ‘Pedro’}
]
¿Dónde hago los .map()?
Api Client
[
{ id: 1, customer: ‘Roberto’},
{ id: 2, customer: ‘Pedro’}
]
Descripción
43. #DotNet2018
Thanks and …
See you soon!
Thanks also to the sponsors.
Without whom this would not have been posible.
Notes de l'éditeur
Rigidez
Fragilidad
Inmovilidad
Viscosidad
Todos con docker
DEV : VOLUMEN
PRO: BUILD MULTI-STAGE
Estrategias
Producto fiable, versionable y replicable
Estrategias
Estructura de proyecto intuitiva
Granularidad y modularidad
Separar las responsabilidades
Hazlo simple, no dupliques, no adivines
Controla las fronteras
Detectar pronto los errores
Todo probado con software
Estrategias
Estructura de proyecto intuitiva
Coherencia y consecuencia
Estrategias
Evitar el deterioro
Estrategias
Evitar el deterioro: fragilidad
Controla las fronteras
Estrategias
Evitar el deterioro
Granularidad y modularidad
Separar las responsabilidades
Estrategias
Estructura de proyecto intuitiva
Granularidad y modularidad
Separar las responsabilidades
Hazlo simple, no dupliques, no adivines
Controla las fronteras
Evitar el deterioro
Todo probado con software
Estrategias
Granularidad y modularidad
Separar las responsabilidades
Hazlo simple, no dupliques, no adivines
Controla las fronteras
Evitar el deterioro
Estrategias
Controla las fronteras
Detectar pronto los errores
OPEN API
Estrategias
Evitar el deterioro
Todo probado con software
jEST/ENZYME + Puppeteer
Dos patrones:
PAGE OBJECT
BUILDER