LET'S BUILD IT
¿Quién soy?
Full-stack LeanMind
Ex-alumno César Manrique
Adrián Ferrera
@AdrianFerrera91
adrian-afergon
adrianferrera.com
Una de las cosas que más nos gusta
Sentarnos a programar
Y hacer que las cosas funcionen
Pero no siempre es así...
LEER
DIÁLOGAR
PROGRAMAR
Gran parte del día entendiendo código
Debatiendo, aprendiendo y escuchando
Las aplicaciones deben mantenerse a lo largo del tiempo
LEER
DIÁLOGAR
PROGRAMAR
Estructura
Comunicación
Separando funcionalidades
Delegando responsabilidades
Haciendo el código mantenible y escalable
Organizando el código
Arquitecto de Software
?
Es una puerta necesaria para crecer profesionalmente
MVC
Three-Tier Architecture
MVA
MVP
MVVM
Hexagonal
Onion
Clean
Medir y Analizar
const postSection = document.getElementById('posts-section');
const http = new XMLHttpRequest();
const url = 'https://jsonplaceholder.typicode.com/posts';
let posts = [];
http.open('GET', url);
http.send();
http.onreadystatechange = (e) => {
posts = JSON.parse(http.responseText);
postSection.innerHTML = '';
posts.forEach((post) => {
const newPost = document.createElement('div');
newPost.innerHTML = `
<div id="post-${post.id}" class="post-item">
<h3>${post.title}</h3>
<p>${post.body}</p>
</div>
`;
postSection.appendChild(newPost);
})
}
function filter(value) {
postSection.innerHTML = '';
posts
.filter((post) =>
post.title.includes(value) || post.body.includes(value))
.forEach((post) => {
const newPost = document.createElement('div');
newPost.innerHTML = `
<div id="post-${post.id}" class="post-item">
<h3>${post.title}</h3>
<p>${post.body}</p>
</div>
`;
postSection.appendChild(newPost);
});
}
function renderPosts(posts) {
posts.forEach((post) => {
const newPost = document.createElement('div');
newPost.innerHTML = `
<div id="post-${post.id}" class="post-item">
<h3>${post.title}</h3>
<p>${post.body}</p>
</div>
`;
postSection.appendChild(newPost);
});
}
function filter(value) {
postSection.innerHTML = '';
const filteredPosts = posts
.filter((post) =>
post.title.includes(value) || post.body.includes(value));
renderPosts(filteredPosts);
}
http.onreadystatechange = (e) => {
posts = JSON.parse(http.responseText);
postSection.innerHTML = '';
renderPosts(posts);
}
¿QUÉ HACEMOS?
Recuperar datos
Filtrar la información
Pintar en pantalla
Acceso a datos
Cálculos y operaciones
Representación
Acceso a datos
Cálculos y operaciones
Representación
Data
Domain
View
*Estos nombres varían dependiendo del autor y la arquitectura
*Estos nombres varían dependiendo del autor y la arquitectura
Data
Domain
View
Recupera datos
Trabaja con modelos
Pinta datos
Data
Domain
View
Recupera datos
Trabaja con modelos
Pinta datos
Devuelve modelos
Devuelve modelos
Recibe modelos
Data
Domain
View
Trabaja con modelos
Pinta datos
Infraestructura
Infraestructura
- ¿Y si leemos los datos de una BD?
+ Solo tenemos que crear un nuevo elemento en data
- ¿Y si cambian las reglas de filtrado?
+ Podemos actualizar la lógica sin que la vista se entere del cambio
- ¿Y si no me resulta sencillo pintar la vista de esta forma?
+ Simplemente puedes visualizarlo de otra forma: React, Vue, Angular, ember, jQuery...
Ya que la lógica no va en esta capa
PERO EXISTEN MUCHOS OTROS CONCEPTOS
Es la puerta para entender
otras tecnologías más complejas
y mejorar cada día en nuestro trabajo
LA ARQUITECTURA NOS AYUDA A:
Comunicarnos con el equipo
Tener un código homogéneo
Simplificarnos el trabajo
Garantizar la calidad
Adrián Ferrera
@AdrianFerrera91