| theme | blood |
|---|---|
| transition | slide |
| title | Micro Frontend |
| enableMenu | true |
| enableSearch | false |
| enableChalkboard | true |
| slideNumber | true |
Luís Antônio (tonhao.dev)
- O que é
- Como funciona
- Exemplo
- Sistema único
- Não dividido
- Vários componentes ligados a uma plataforma
- Mais simples de desenvolver
- Simples de testar
- Simples de fazer o deploy
- Manutenção
- Alterações vs Deploy
- Não há flexibilidade quanto a linguagem
(mas só no backend)
é um estilo de arquitetura que estrutura um aplicativo como uma coleção de serviços
microservices.io
- Deploy independente
- Baixo acoplamento
- Reflete as necessidades de negócio
- Responsabilidade de um time pequeno
- Be Technology Agnostic
- Be Technology Agnostic
- Isolate Team Code
- Be Technology Agnostic
- Isolate Team Code
- Establish Team Prefixes
- Be Technology Agnostic
- Isolate Team Code
- Establish Team Prefixes
- Favor Native Browser Features over Custom APIs
- Be Technology Agnostic
- Isolate Team Code
- Establish Team Prefixes
- Favor Native Browser Features over Custom APIs
- Build a Resilient Site
- Cargas úteis aumentadas
- Baixo desempenho
- Coding e Deploy mais complexo
- Dependências redundantes
- Risco de falta de comunicação (teams)
class BlueBuy extends HTMLElement {
connectedCallback() {
this.innerHTML = `<button type="button">buy for 66,00 €</button>`;
}
disconnectedCallback() { ... }
}
window.customElements.define('blue-buy', BlueBuy);const prices = {
t_porsche: '66,00 €',
t_fendt: '54,00 €',
t_eicher: '58,00 €',
};
class BlueBuy extends HTMLElement {
static get observedAttributes() {
return ['sku'];
}
connectedCallback() {
this.render();
}
render() {
const sku = this.getAttribute('sku');
const price = prices[sku];
this.innerHTML = `<button type="button">buy for ${price}</button>`;
}
attributeChangedCallback(attr, oldValue, newValue) {
this.render();
}
disconnectedCallback() {...}
}
window.customElements.define('blue-buy', BlueBuy);Funciona bem para pai-filho, mas e no nosso exemplo?
Como fazer para que os componentes do time azul se comuniquem?
Favor Native Browser Features over Custom APIs
class BlueBuy extends HTMLElement {
[...]
connectedCallback() {
[...]
this.render();
this.firstChild.addEventListener('click', this.addToCart);
}
addToCart() {
// maybe talk to an api
this.dispatchEvent(new CustomEvent('blue:basket:changed', {
bubbles: true,
}));
}
render() {
this.innerHTML = `<button type="button">buy</button>`;
}
disconnectedCallback() {
this.firstChild.removeEventListener('click', this.addToCart);
}
}class BlueBasket extends HTMLElement {
connectedCallback() {
[...]
window.addEventListener('blue:basket:changed', this.refresh);
}
refresh() {
// fetch new data and render it
}
disconnectedCallback() {
window.removeEventListener('blue:basket:changed', this.refresh);
}
}https://micro-frontends.org/1-composition-client-only/
Luis Antonio (tonhao.dev)
- https://www.youtube.com/watch?v=KZpSghOWOnE&t=1418s&ab_channel=FullCycle
- https://www.youtube.com/watch?v=SC1QkRfFccE&t=359s&ab_channel=Codeminer42
- https://dev.to/jpbrab0/o-que-e-micro-front-end-4kci#:~:text=Micro%20Front-end%20%C3%A9%20um,dessas%20funcionalidades%20de%20forma%20independente
- https://micro-frontends.org/








