Prefácio

Muitas pessoas, ao começar no front-end, geralmente começam “copiando e colando”: memorizam tags, decoram propriedades, copiam componentes, rodam um scaffold e pronto. No início, parece que até dá para montar algumas páginas, mas quanto mais se avança, mais tudo fica pesado — ao ver exemplos de outras pessoas parece que está tudo claro, mas ao tentar escrever do zero não se sabe por onde começar; e, ao encontrar um bug, então, não há a menor ideia do que fazer.

Isso acontece porque a verdadeira dificuldade muitas vezes não é “não conseguir escrever código”, e sim “não entender o código”.

Tente se perguntar as seguintes questões:

  • Por que, ao digitar uma URL, a página consegue aparecer?
  • O que HTML, CSS e JS passam a fazer dentro do navegador, respectivamente?
  • Por que existem reflow (refluxo) e repaint (repintura)?
  • Por que às vezes o this aponta para um lugar tão estranho?
  • Por que Promise.then executa antes de setTimeout?
  • Por que o nextTick do Vue consegue obter o DOM depois da atualização?
  • Por que, no React, o key não pode ser escrito de qualquer jeito?
  • Por que, quando o projeto cresce, o build fica lento a ponto de irritar?

Essas perguntas parecem soltas, mas por trás delas existe um sistema rigoroso de conhecimentos de front-end Web. O desenvolvimento front-end é uma prática de engenharia composta por várias linhas: navegador, protocolos de rede, mecanismos da linguagem, renderização de páginas, engenharia (tooling), ideias de framework, otimização de performance, etc.

Este artigo tem o objetivo de ajudar você a romper a armadilha de “ver as árvores, mas não ver a floresta”. Vou tentar conectar, do simples ao profundo, os principais fios de baixo nível do front-end, para que você reconheça de novo o que é, de fato, o front-end.

I. O que exatamente o front-end faz

1. O que é a Web

A Web, essencialmente, é um sistema baseado na internet para transmissão de informações, acesso a recursos e interação. As pessoas acessam páginas pelo navegador; o navegador solicita recursos ao servidor; o servidor devolve HTML, CSS, JavaScript, imagens, áudio e vídeo; e então o navegador analisa e renderiza esses recursos no que vemos na tela.

O ecossistema de front-end Web, na prática, se organiza em torno de 6 etapas centrais:

  • Localização de recursos: encontrar recursos via URL
  • Comunicação em rede: transmitir recursos via HTTP/HTTPS
  • Descrição de conteúdo: descrever estrutura com HTML
  • Apresentação visual: controlar aparência com CSS
  • Interação e comportamento: implementar lógica com JavaScript
  • Renderização do navegador: transformar código em uma interface visível e interativa

Desenvolvimento front-end é “a parte do sistema que o usuário consegue ver e com a qual consegue interagir diretamente”.

2. Do que uma página web é feita

Uma página web básica normalmente contém três partes:

  • HTML: estrutura. O que existe na página.
  • CSS: apresentação. Como a página parece.
  • JavaScript: comportamento. O que acontece na página.

Dá para entender com uma analogia simples:

  • HTML é como as vigas e paredes (estrutura) de uma casa
  • CSS é como a decoração, iluminação, cores e layout
  • JavaScript é como o sistema elétrico, o controle de portas, botões e automação

As três juntas compõem a página front-end.

3. O que é um navegador

Um navegador não é apenas “um software para buscar páginas” — ele é, na essência, um ambiente de execução complexo, que pelo menos assume estas responsabilidades:

  • Fazer requisições de rede
  • Analisar HTML / CSS / JavaScript
  • Construir a árvore DOM e a árvore CSSOM
  • Gerar a árvore de renderização e completar layout e pintura
  • Executar código JavaScript
  • Manter o event loop, timers e callbacks de rede
  • Fornecer várias Web APIs, como localStorage, fetch, history, canvas

Navegadores comuns incluem:

  • Chrome
  • Edge
  • Firefox
  • Safari
  • Opera

4. O que é o “motor” do navegador

O “motor” do navegador normalmente se refere às partes relacionadas ao motor de renderização e ao motor de JavaScript. No desenvolvimento front-end, quando se fala em motor, em geral é sobre como ele analisa a página e executa o código.

Motores comuns:

  • Blink: usado por Chrome, Edge, Opera e outros navegadores baseados em Chromium
  • WebKit: usado pelo Safari
  • Gecko: usado pelo Firefox
  • Trident: usado por versões antigas do Internet Explorer

Historicamente, muitos “problemas de compatibilidade” são, na verdade, diferenças no quanto cada motor suporta os padrões.

5. Por que existem padrões Web

Sem um padrão unificado, cada navegador faria sua própria implementação. Uma página poderia funcionar no Chrome, quebrar no Firefox e ter outro comportamento no Safari.

Por isso existem organizações como W3C e WHATWG, que impulsionam o desenvolvimento de padrões como HTML, CSS, DOM, URL e Fetch.

A utilidade de padrões Web é bem prática:

  • Reduzir custo de compatibilidade
  • Facilitar manutenção
  • Permitir acesso por diferentes dispositivos
  • Tornar o conteúdo mais compreensível para buscadores
  • Dar regras comuns para colaboração em engenharia

Hoje, ao escrever front-end, ter consciência de padrões é muito importante — porque muitos problemas não são “isso roda?”, e sim “isso é correto, estável e fácil de manter?”.


II. Ambiente de desenvolvimento front-end e ferramentas básicas

1. Do que você precisa no mínimo

Para iniciar no front-end, o conjunto mais básico costuma ser:

  • Um computador
  • Um navegador (recomendado: Chrome)
  • Um editor de código (recomendado: VS Code)
  • Um servidor estático local ou ferramenta de desenvolvimento

Se for apenas HTML e CSS, navegador + editor já bastam. Mas, quando entram modularização em JavaScript, npm, ferramentas de build e desenvolvimento com frameworks, você precisa de um ambiente Node.js.

2. Por que o editor é importante

Em projetos front-end há muitos arquivos e uma estrutura complexa; o editor não é só um “bloco de notas para escrever código”. Um bom editor afeta diretamente a produtividade.

Vantagens comuns do VS Code:

  • Ecossistema de extensões
  • Integração prática com Git
  • Depuração forte
  • Suporte muito completo ao ecossistema front-end
  • Quase um padrão de fato em colaboração

Ideias comuns de extensões:

  • Formatação de código
  • Destaque de sintaxe
  • Sugestões de caminho
  • ESLint / Stylelint
  • Indicação de mudanças do Git
  • Auto-refresh do navegador

3. Aprenda cedo as ferramentas de desenvolvedor do navegador

Muita gente iniciante faz só “mudar código -> atualizar página -> ver resultado”. Isso é lento e ineficiente.

As DevTools são obrigatórias; no mínimo, é preciso se familiarizar com:

  • Elements: ver e depurar DOM / CSS
  • Console: rodar JS, ver erros, imprimir logs
  • Network: ver requisições, status, tempo de resposta e cache
  • Sources: debug com breakpoints
  • Application: cookies, storage, cache
  • Performance: analisar gargalos

Para evoluir em front-end, capacidade de depuração é extremamente importante.


III. HTML: a base da estrutura da página

1. O que é HTML

HTML significa HyperText Markup Language (Linguagem de Marcação de Hipertexto). Não é uma linguagem de programação, e sim uma linguagem de marcação para descrever a estrutura de um documento.

“HyperText” tem dois sentidos:

  • não é só texto: também carrega imagens, áudio/vídeo, formulários etc.
  • permite pular de uma página para outra via hiperlinks

A missão central do HTML é descrever “o que existe” na página.

2. Estrutura mais básica de uma página HTML

Uma página HTML moderna normalmente se parece com isto:

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>一只喵博客</title>
  </head>
  <body>
    页面内容
  </body>
</html>

Pontos-chave:

  • <!doctype html>: diz ao navegador para analisar em modo padrão do HTML5
  • <html>: elemento raiz
  • <head>: metadados (não exibidos diretamente)
  • <body>: corpo da página (a maior parte do que a pessoa vê)
  • <meta charset="UTF-8">: define codificação para evitar caracteres corrompidos
  • <meta name="viewport">: configuração base para adaptação em mobile

3. Tags e elementos HTML

Uma página HTML é composta por várias tags. Elas podem ser:

  • Tags duplas: têm início e fim, como <p></p>
  • Tags únicas/autofechadas: como <img>, , <input>

Tag + conteúdo + atributos formam um elemento.

Exemplo:

<a href="/about" target="_blank">关于一只喵博客</a>

Aqui:

  • a é o nome da tag
  • href e target são atributos
  • 关于我们 é o conteúdo
  • o conjunto é um elemento de link

4. Semântica em HTML

Muita gente iniciante enche tudo de div. Funcionar, funciona — mas isso não é “bem escrito”.

Semântica significa usar a tag certa para expressar a estrutura e o significado certo.

Por exemplo:

  • títulos: h1 ~ h6
  • parágrafos: p
  • navegação: nav
  • conteúdo do artigo: article
  • conteúdo principal: main
  • cabeçalho/rodapé: header, footer
  • listas: ul / ol
  • botões: priorizar button

Vantagens:

  • estrutura mais clara
  • manutenção mais fácil
  • melhor SEO
  • melhor acessibilidade
  • colaboração em equipe mais tranquila

Um princípio simples: pense primeiro no significado da tag, e depois no estilo.

5. Visão geral de tags comuns

Títulos e parágrafos

<h1>主标题</h1>
<p>这是一个段落。</p>

h1 costuma ser o título mais importante; não é obrigatório existir apenas um, mas convém usar com moderação.

<a href="https://example.com">访问一只喵博客</a>
<img src="avatar.jpg" alt="易喵的头像"/>

O alt é muito importante: ele serve como descrição alternativa e ajuda em acessibilidade e SEO.

Listas

<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

Menus, listas de notícias e comentários são ótimos casos de uso.

Tags contêiner

<div></div>
<span></span>

Não têm semântica; são contêineres genéricos. div costuma ser usado para layout em bloco e span para embrulho inline.

Tabelas

Tabelas são boas para dados, não para layout.

<table>
  <caption>一只喵博客前端学习名单</caption>
  <thead>
    <tr>
      <th>姓名</th>
      <th>分数</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>95</td>
    </tr>
  </tbody>
</table>

Formulários

Formulários são a porta de entrada de interação.

<form action="/login" method="post">
  <label for="username">用户名</label>
  <input id="username" name="username" type="text" placeholder="请输入一只喵博客账号"/>

  <label for="password">密码</label>
  <input id="password" name="password" type="password"/>

  <button type="submit">登录</button>
</form>

Na prática, formulários são um tema grande.

6. Caminhos e referências de recursos

Existem duas formas comuns:

  • Caminho relativo
  • Caminho absoluto

Exemplos:

<img src="./images/logo.png" alt="logo"/>
<img src="../assets/banner.jpg" alt="banner"/>

7. Comentários, entidades de caracteres e boas práticas

Comentários:

<!-- 这是注释 -->

Entidades comuns:

  • &lt; representa <
  • &gt; representa >
  • &nbsp; representa espaço
  • &amp; representa &

Boas práticas:

  • nomes de tags/atributos em minúsculas
  • indentação
  • valores de atributos entre aspas
  • estrutura clara
  • evitar abuso de tags sem semântica

IV. CSS: por que a página fica bonita

1. O que é CSS

CSS significa Cascading Style Sheets (Folhas de Estilo em Cascata). Controla a aparência, por exemplo:

  • fontes
  • cores
  • espaçamentos
  • bordas
  • layout
  • animações
  • responsividade

Se HTML responde “o que existe”, CSS responde “como parece”.

2. Três formas de incluir CSS

Inline

<p style="color: red;">你好,一只喵博客</p>

Interno

<style>
  p {
    color: red;
  }
</style>

Externo

<link rel="stylesheet" href="style.css"/>

Em projetos reais, quase sempre se recomenda o CSS externo.

3. Seletores

O núcleo do CSS é “selecionar elementos e aplicar estilos”.

Exemplos comuns:

/* 一只喵博客:seletor por tag */
p {}

/* seletor por classe */
.card {}

/* seletor por ID */
#app {}

/* seletor descendente */
.nav a {}

/* seletor de filho */
.list > li {}

/* pseudo-classe */
a:hover {}

/* seletor de atributo */
input[type="text"] {}

Não é sobre ser complexo; é sobre ser claro e sustentável.

4. Especificidade

Quando várias regras atingem o mesmo elemento, o navegador decide qual prevalece.

Ordem geral:

  • !important
  • inline
  • ID
  • classe/atributo/pseudo-classe
  • tag/pseudo-elemento
  • curinga/herança/estilo padrão

Na prática, é melhor controlar complexidade e organização do que “empilhar especificidade”.

5. Modelo de caixa

Quase todo elemento pode ser entendido como uma caixa: content, padding, border e margin.

No modelo padrão, width conta apenas o content.

.box {
  width: 200px;
  padding: 20px;
  border: 10px solid #333;
  margin: 16px;
}

Com box-sizing: border-box;, width passa a incluir padding e border:

* {
  box-sizing: border-box;
}

6. display e tipos de elemento

Tipos comuns:

  • block
  • inline
  • inline-block
  • none
  • flex
  • grid

div é bloco por padrão; span é inline.

7. position

static

Padrão.

relative

Desloca em relação à posição original.

absolute

Relativo ao ancestral posicionado mais próximo; se não houver, ao viewport/bloco inicial.

fixed

Relativo à janela do navegador.

sticky

Antes de um limiar de rolagem, como elemento normal; depois “gruda” como fixed.

8. float e limpeza de float

Hoje, float é mais usado para texto contornar imagens, mas entender ajuda em projetos antigos. Como float sai do fluxo normal, o pai pode colapsar em altura, então costuma-se limpar:

.clearfix::after {
  content: "";
  display: block;
  clear: both;
}

9. O que é BFC

BFC (Block Formatting Context) é um “ambiente de layout” independente.

Disparadores comuns:

  • elemento raiz
  • float != none
  • position: absolute/fixed
  • overflow != visible
  • display: inline-block/table-cell/flex/grid

Usos:

  • limpar float
  • evitar colapso de margin
  • evitar contorno de texto

10. Layout Flex

.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

11. Layout Grid

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

12. Layout responsivo

Estratégias comuns:

  • porcentagem
  • rem
  • vw / vh
  • media queries @media
  • Flex / Grid

Exemplo:

@media (max-width: 768px) {
  .sidebar {
    display: none;
  }
}

13. Reflow e repaint

Reflow (refluxo)

Quando a geometria muda e o navegador recalcula layout.

Repaint (repintura)

Quando só a aparência muda.

Conclusões:

  • reflow sempre causa repaint
  • repaint não necessariamente causa reflow

Otimização:

  • agrupar mudanças de estilo
  • evitar leitura/escrita frequente de propriedades de layout
  • usar transform/opacity para animação

14. Animações e transições

transition

.button {
  transition: transform 0.3s ease;
}
.button:hover {
  transform: translateY(-2px);
}

animation + keyframes

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

V. JavaScript: fazer a página “ganhar vida”

1. O que é JavaScript

JavaScript é a linguagem central do front-end Web. Começou como linguagem de scripts no navegador, e hoje também é base para Node.js, ferramentas de engenharia, apps desktop e mobile.

No front-end, JavaScript é responsável por:

  • manipular DOM
  • responder a eventos
  • enviar requisições
  • processar dados
  • controlar estado
  • dirigir componentes e frameworks

2. Tipos primitivos e tipos por referência

Primitivos comuns:

  • number
  • string
  • boolean
  • undefined
  • null
  • symbol
  • bigint

Tipos por referência são principalmente objetos:

  • Object
  • Array
  • Function
  • Date
  • RegExp

Entender valor vs referência é essencial para atribuição, parâmetros, cópia e comparação.

3. Como detectar tipos

typeof

typeof 1; // 'number'
typeof 'abc'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof function(){}; // 'function'
typeof null; // 'object'

instanceof

[] instanceof Array; // true
{} instanceof Object; // true

Object.prototype.toString.call

Object.prototype.toString.call([]); // [object Array]
Object.prototype.toString.call(null); // [object Null]

4. Declaração de variáveis: var, let, const

var

  • escopo de função
  • hoisting
  • permite redeclaração
  • var global vai para window

let

  • escopo de bloco
  • temporal dead zone
  • não permite redeclaração

const

  • escopo de bloco
  • precisa inicializar
  • não pode reatribuir

Recomendação moderna:

  • prefira const
  • use let quando precisar reatribuir
  • evite var

5. Escopo e cadeia de escopos

Escopo define onde variáveis e funções são acessíveis.

Quando não encontra no escopo atual, o JS procura para cima no escopo léxico.

Isso é base para closures, this, módulos e contexto de execução.

6. Closure

Uma closure é o resultado natural do escopo léxico: uma função pode “lembrar” e acessar variáveis do escopo onde foi definida, mesmo depois que a função externa terminou.

function outer() {
  let articleCount = 0;
  return function inner() {
    articleCount++;
    return articleCount;
  };
}

const nextArticle = outer();
nextArticle(); // 1
nextArticle(); // 2

7. this

this é decidido no momento da chamada (exceto arrow functions).

Casos comuns:

  1. chamada direta: em modo não estrito, window; em estrito, undefined
  2. método de objeto: o objeto chamador
  3. construtor: a instância
  4. call/apply/bind: o objeto especificado
  5. arrow: herda this léxico

8. Protótipos e cadeia de protótipos

JS herda por protótipo. Se não encontra uma propriedade no objeto, busca na cadeia.

9. O que o new faz

  1. cria novo objeto
  2. liga o protótipo
  3. executa a função construtora com this no novo objeto
  4. retorna o objeto retornado (se houver) ou o novo objeto

10. Arrays, objetos e métodos comuns

Métodos de array:

  • push / pop
  • shift / unshift
  • map
  • filter
  • reduce
  • find
  • some / every
  • forEach
  • sort
  • slice / splice

Operações com objeto:

  • leitura/escrita
  • Object.keys
  • Object.values
  • Object.entries
  • Object.assign
  • spread ...

11. DOM e BOM

DOM

Modelo de objetos do documento.

BOM

Modelo de objetos do navegador.

Objetos comuns:

  • window
  • location
  • history
  • navigator
  • screen
  • localStorage

12. Mecanismo de eventos

Fluxo:

  • captura
  • alvo
  • bolha

Exemplo:

element.addEventListener('click', handler);

13. Throttle e debounce

Debounce

Executa apenas a última chamada após um período de silêncio.

Throttle

Executa no máximo uma vez por janela de tempo.


VI. Assíncrono, Promise e event loop: a parte em que mais gente trava

1. Por que existe assíncrono

Se tudo fosse síncrono no thread principal, a página travaria facilmente.

Por isso existe o event loop.

2. Síncrono vs assíncrono

Síncrono

Executa linha por linha.

Assíncrono

Agenda tarefas sem bloquear, e executa callbacks quando prontas.

3. Macro-tarefas e micro-tarefas

Macro:

  • setTimeout
  • setInterval
  • script
  • I/O
  • eventos UI

Micro:

  • Promise.then/catch/finally
  • queueMicrotask
  • MutationObserver

Ordem típica:

  1. executar código síncrono
  2. esvaziar fila de microtarefas
  3. executar uma macrotarefa
  4. esvaziar microtarefas

4. Promise

Promise representa o resultado futuro de uma operação assíncrona.

Estados:

  • pending
  • fulfilled
  • rejected

Métodos:

  • then
  • catch
  • finally
  • Promise.all
  • Promise.race
  • Promise.allSettled
  • Promise.any

5. async/await

Açúcar sintático sobre Promise.

async function getData() {
  const blogUser = await fetchUser();
  const articles = await fetchPosts(blogUser.id);
  return { blogUser, articles };
}

6. Diferenças entre timers, Promise e async/await

  • setTimeout agenda macrotarefas
  • Promise.then é microtarefa
  • async/await é baseado em Promise

VII. HTTP, HTTPS e fundamentos de rede: por que a página consegue pedir dados

1. O que é HTTP

HTTP é o protocolo para transmitir recursos entre cliente e servidor.

É stateless, então usa Cookie/Session/Token para manter estado.

2. O que é HTTPS

HTTPS = HTTP + camada TLS/SSL.

Adiciona:

  • criptografia
  • autenticação
  • integridade

3. Diferenças entre HTTP e HTTPS

  • HTTP é texto puro; HTTPS é criptografado
  • porta 80 vs 443
  • HTTPS exige certificado
  • handshake mais caro

4. Processo geral do HTTPS

  1. cliente faz requisição
  2. servidor devolve certificado
  3. cliente valida
  4. negociam algoritmo e chave de sessão
  5. comunicação criptografada

5. URL, request e response

Um URL costuma conter:

  • protocolo
  • domínio
  • porta
  • caminho
  • query
  • hash

6. Métodos HTTP comuns

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • OPTIONS

7. Status codes comuns

2xx, 3xx, 4xx, 5xx.

8. Cache

Cache forte

  • Cache-Control
  • Expires

Cache negociado

  • ETag / If-None-Match
  • Last-Modified / If-Modified-Since

Diferenças: local, vida útil e se vai automaticamente em requests.

10. O que é cross-origin

Política de mesma origem: protocolo, domínio e porta.

Cross-origin não impede o request, e sim a leitura da resposta pelo script.

11. Soluções para cross-origin

  • CORS
  • proxy
  • JSONP
  • postMessage

VIII. TCP, UDP e de digitar a URL até ver a página

1. TCP vs UDP

TCP é confiável e orientado a conexão; UDP é rápido, sem garantia.

2. Three-way handshake do TCP

  1. cliente SYN
  2. servidor SYN+ACK
  3. cliente ACK

3. Four-way handshake (encerramento)

Quatro passos para ambos confirmarem encerramento.

4. Como o TCP garante confiabilidade

  • segmentação e numeração
  • ACK
  • retransmissão
  • checksum
  • janela deslizante
  • controle de fluxo
  • controle de congestionamento

5. Do URL ao carregamento completo

Fluxo simplificado:

  1. digitar URL
  2. checar cache
  3. DNS
  4. TCP
  5. TLS (se HTTPS)
  6. request HTTP
  7. response
  8. parse HTML
  9. baixar/parse CSS -> CSSOM
  10. baixar/executar JS
  11. construir DOM
  12. render tree
  13. layout
  14. paint
  15. continuar recursos assíncronos etc.

IX. Renderização do navegador: por que a página aparece

1. DOM e CSSOM

HTML vira DOM; CSS vira CSSOM; juntos viram render tree.

2. Render tree != DOM

display:none não entra, por exemplo.

3. Layout e Paint

Layout calcula geometria; Paint desenha pixels.

4. Por que JS bloqueia parsing

Scripts podem mexer no DOM, então o navegador pausa para manter a ordem.

Estratégias:

defer

async

5. Por que performance de primeira tela importa

Usuários só se importam com “é rápido?”.


X. Formulários, validação e entrada do usuário

1. Por que formulários importam

Sites de verdade precisam de login, busca, comentários etc.

2. Elementos comuns

  • input
  • textarea
  • select
  • option
  • button
  • label
  • form

3. Tipos comuns de input

  • text
  • password
  • email
  • number
  • radio
  • checkbox
  • file
  • submit
  • reset
  • date

4. Por que label é importante

Aumenta área clicável e acessibilidade.

5. Formas de envio

GET/POST, e hoje via JS com fetch/axios.

6. Validação front-end vs back-end

Front ajuda UX, mas não substitui back-end.


XI. Otimização de performance no front-end

1. O que otimizar

  • carregamento
  • primeira tela
  • responsividade
  • animações
  • tamanho de recursos
  • número de requests
  • re-renderizações

2. Direções comuns

Rede, recursos, renderização e código.

3. Técnicas comuns para primeira tela

  • SSR/SSG
  • skeleton
  • CSS crítico
  • lazy load
  • delay de scripts
  • code splitting
  • preload

4. Ferramentas de análise

  • Chrome Performance
  • Lighthouse
  • Network
  • Web Vitals

XII. Armazenamento, cache e offline

1. Como escolher storage

  • localStorage
  • sessionStorage
  • IndexedDB

2. O que é Service Worker

Uma camada programável entre navegador e rede.


XIII. Git e colaboração

1. Por que front-end precisa de Git

Versionamento, colaboração, rollback e merge.

2. Comandos comuns

  • git init
  • git clone
  • git add
  • git commit
  • git status
  • git log
  • git branch
  • git checkout
  • git switch
  • git merge
  • git pull
  • git push

3. Modelos de branch

main/develop/feature/release/hotfix.


XIV. Modularização e engenharia

1. Por que modularizar

Evita poluição global, dependências confusas e melhora manutenção.

2. Evolução

IIFE, CommonJS, AMD/CMD, ES Module.

3. Por que ferramentas de build

Empacotar, transformar, compatibilidade, otimizar.

4. O que Webpack faz

Do(s) entry(s), rastreia dependências e gera bundles.

5. Ideias de otimização

include/exclude, cache, multithread, minificação, tree shaking, split.

6. O que é Babel

Compilador JS (AST transform).

Usa ESM nativo em dev para startup rápido.


XV. Node.js, npm e ecossistema

1. Por que aprender Node.js

Tooling depende de Node.

2. O que é npm

Gerenciador de pacotes.

3. Conteúdo comum do package.json


XVI. Introdução ao Vue

1. Por que frameworks

Organizar UI e estado.

2. Ideias centrais

Dados dirigem a view.

3. Capacidades

Template, render condicional, lista, eventos, binding, computed, watch, componentes, lifecycle, state, router.

4. O que é componentização

Unidade de UI reutilizável.

5. Por que lifecycle importa

Controlar efeitos colaterais.

6. computed vs watch

7. Por que nextTick

DOM atualiza em batch assíncrono.

8. keep-alive, mixin, Vuex


XVII. Introdução ao React

1. Ideias centrais

2. JSX

3. Funções vs classes

4. Significado de Hooks

5. useEffect e efeitos

6. Por que key importa

7. Por que setState parece sync/async

8. O que é Fiber


XVIII. Roteamento, gerenciamento de estado e SPA

1. O que é SPA

2. Princípio do roteamento

3. Por que state management


XIX. Segurança no front-end

1. XSS

2. CSRF

3. Por que front-end deve saber de segurança


XX. Adaptação mobile e multi-dispositivos

1. Por que mobile difere

2. Ideias comuns

3. viewport

4. Observações


XXI. Como estudar front-end de forma sistemática

1. Sequência de estudo

2. Armadilhas

3. Habilidades mais importantes


Transformar conhecimento espalhado em um sistema

A tecnologia de front-end Web evolui rápido, mas o fio central é claro:

  • HTML descreve estrutura
  • CSS controla aparência
  • JavaScript lida com lógica e interação
  • o navegador vira interface
  • HTTP troca recursos
  • engenharia organiza
  • frameworks aumentam produtividade
  • performance, segurança e normas fazem o projeto “dar certo”

Aprender programação, o maior tabu é “tocar o elefante no escuro”. O que realmente diferencia é construir o seu mapa mental global de conhecimento: saber onde cada ponto se encaixa, que problema resolve e como se conecta.

Se comparar front-end a um prédio: base é alicerce, frameworks são o meio, engenharia e performance são a estrutura, e a prática em projetos é o uso diário.

Primeiro firme o alicerce; depois construa para cima — assim fica difícil “desabar no meio do caminho”.