Introdução à Programação Web

História, conceitos básicos e principais tecnologias

Por Marcos Mueller

Introdução à Programação Web

"A web é a maior plataforma de software que a humanidade já criou." - Tim Berners-Lee

Bem-vindo ao seu guia completo de Introdução à Programação Web. Este e-book foi criado para fornecer uma base sólida em desenvolvimento web, desde os conceitos fundamentais até as tecnologias mais avançadas.

O que você aprenderá:

  • HTML e CSS - Estruturando e estilizando páginas web
  • JavaScript e Interatividade - Manipulação do DOM, eventos e lógica de programação
  • Frameworks Front-end - React, Vue ou Angular
  • Desenvolvimento Back-end - Node.js, PHP ou Python com Flask/Django
  • Banco de Dados e APIs - Comunicação entre front-end e back-end
  • Boas Práticas e Segurança - SEO, acessibilidade, segurança web
  • Publicação e Hospedagem - Como colocar o projeto online
0% lido

Capítulo 1 - Introdução à Programação Web

1.1 O que é Programação Web?

A programação web é a arte de criar e desenvolver páginas e aplicativos para a internet, permitindo que usuários interajam com informações e serviços em qualquer dispositivo conectado. Ela envolve o uso de diversas tecnologias, desde linguagens de marcação como HTML, até estilos com CSS e interatividade com JavaScript.

Principais Características da Programação Web:

  • Interatividade: Criar sites dinâmicos que respondem às ações dos usuários.
  • Acessibilidade: Tornar a web disponível para qualquer pessoa, independentemente do dispositivo ou localização.
  • Comunicação Cliente-Servidor: Utilização de servidores e bancos de dados para armazenar e processar informações.

Áreas de Atuação

A programação web se divide em três principais áreas:

  • Front-end: Responsável pela interface visual e experiência do usuário. Utiliza HTML, CSS, JavaScript e frameworks.
  • Back-end: Lida com processamento de dados e lógica do servidor, utilizando tecnologias como Node.js, Python, PHP.
  • Full-stack: Engloba tanto front-end quanto back-end, permitindo o desenvolvimento completo de aplicações web.

Aplicações da Programação Web

  • Sites Institucionais: Empresas e organizações criando presença digital.
  • Plataformas de E-commerce: Venda de produtos e serviços online.
  • Redes Sociais: Conexão entre usuários em aplicativos dinâmicos.
  • Serviços Online: Ferramentas como bancos digitais, aplicativos de produtividade e entretenimento.

1.2 A Evolução da Web

A web passou por várias transformações desde sua criação, tornando-se uma plataforma essencial para comunicação, negócios e entretenimento.

O início da internet e a Web 1.0

  • Criada por Tim Berners-Lee em 1989.
  • Primeiros sites eram estáticos, com apenas texto e imagens.
  • Pouca interatividade e nenhuma personalização.

Web 2.0: A Revolução da Interatividade

  • Introdução de CSS e JavaScript, permitindo conteúdos dinâmicos.
  • Redes sociais e blogs permitiram que usuários criassem e compartilhassem conteúdo.
  • Aplicações web como Gmail e Google Docs começaram a substituir programas desktop.

Web 3.0 e o futuro descentralizado

  • Blockchain e descentralização de dados.
  • Uso de inteligência artificial para personalizar experiências online.
  • Maior foco em privacidade e segurança digital.

1.3 Tecnologias Essenciais

A programação web utiliza várias tecnologias que trabalham juntas para criar sites e aplicações.

HTML (HyperText Markup Language)

  • Estruturação de páginas web.
  • Uso de tags como <h1>, <p>, <div> para organizar o conteúdo.

CSS (Cascading Style Sheets)

  • Define estilos como cores, fontes e layouts.
  • Permite criar sites responsivos que funcionam bem em diferentes dispositivos.

JavaScript

  • Linguagem de programação que adiciona interatividade aos sites.
  • Permite manipular elementos, validar formulários e criar animações.

Frameworks e Bibliotecas

  • React, Vue e Angular para front-end.
  • Node.js, Django e Laravel para back-end.
  • Bootstrap e Tailwind CSS para estilização rápida.

Banco de Dados

  • SQL (MySQL, PostgreSQL) e NoSQL (MongoDB, Firebase) para armazenar informações.

APIs

  • Conexão entre sistemas, permitindo integração com serviços externos como mapas, pagamentos e redes sociais.

1.4 Ambiente de Desenvolvimento

Ter um ambiente de desenvolvimento bem configurado é essencial para produtividade e qualidade do código.

Escolhendo um Editor de Código

  • Visual Studio Code – Popular, com muitas extensões úteis.
  • Sublime Text – Leve e rápido.
  • Atom – Personalizável e intuitivo.

Ferramentas Essenciais

  • Git para controle de versão e colaboração.
  • Node.js para desenvolvimento JavaScript no back-end.
  • Postman para testar APIs e requisições HTTP.

Testando e Debugando Código

  • DevTools do navegador para inspecionar elementos e analisar performance.
  • Debuggers integrados nos editores de código.

1.5 O Futuro da Web

A web continua evoluindo com novas tecnologias e tendências que transformarão a forma como interagimos online.

Web3 e Descentralização

  • Uso de blockchain para maior segurança e privacidade.
  • Aplicações descentralizadas sem servidores centralizados.

Realidade Virtual e Aumentada

  • Experiências imersivas para comércio, educação e entretenimento.
  • Melhor integração da realidade digital com o mundo físico.

Automação e Inteligência Artificial

  • AI ajudando na geração de código e otimização de sites.
  • Bots e assistentes virtuais cada vez mais inteligentes.

Internet das Coisas (IoT)

  • Conexão entre dispositivos inteligentes na web.
  • Automação residencial e cidades inteligentes.

Reflexão: Seu Objetivo

Qual área da programação web mais te interessa? Front-end, back-end ou full-stack? Quais tecnologias você gostaria de aprender primeiro?

Capítulo 2 - HTML e CSS: Estruturando e Estilizando Páginas Web

2.1 O que é HTML?

O HTML (HyperText Markup Language) é a linguagem de marcação usada para estruturar páginas web. Ele define os elementos da página, como textos, imagens, links e tabelas, organizando o conteúdo para ser exibido nos navegadores.

Principais Características do HTML:

  • Define a estrutura da página.
  • Utiliza tags para marcar elementos.
  • Funciona em conjunto com CSS para estilização e JavaScript para interatividade.

2.2 Estrutura de uma Página HTML

Cada página HTML segue uma estrutura básica, garantindo que os navegadores compreendam seu conteúdo corretamente.

Estrutura Básica HTML:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Minha Página</title>
</head>
<body>
    <h1>Bem-vindo ao meu site!</h1>
    <p>Este é um exemplo de página HTML.</p>
    <a href="#">Clique aqui</a>
</body>
</html>

Explicação da Estrutura:

  • <!DOCTYPE html> – Define o tipo de documento HTML.
  • <html> – Indica a linguagem da página.
  • <head> – Contém configurações da página, como título e meta tags.
  • <body> – Define o conteúdo visível, como textos e imagens.

2.3 O que é CSS?

O CSS (Cascading Style Sheets) é a linguagem usada para estilizar páginas web. Ele define cores, layouts, fontes e espaçamentos, tornando a experiência visual mais agradável.

Principais Características do CSS:

  • Permite separar conteúdo e apresentação.
  • Usa seletores para definir estilos de elementos.
  • Trabalha com propriedades como color, font-size, margin e padding.

2.4 Propriedades Fundamentais do CSS

O CSS é composto por várias propriedades que controlam a aparência de elementos HTML.

Exemplo de Código CSS:

body {
    background-color: #f4f4f4;
    font-family: Arial, sans-serif;
}

h1 {
    color: #333;
    font-size: 24px;
}

p {
    line-height: 1.5;
    text-align: justify;
}

Principais Propriedades:

  • color – Define a cor do texto.
  • background-color – Altera a cor do fundo de um elemento.
  • font-size – Modifica o tamanho da fonte.
  • margin e padding – Controlam espaçamentos internos e externos.

2.5 Responsividade e Design Adaptável

A responsividade garante que páginas web funcionem bem em diferentes tamanhos de tela, como celulares, tablets e desktops.

Técnicas de Design Responsivo:

  • Media Queries: Ajustam o layout de acordo com o tamanho da tela.
  • Flexbox e Grid: Criam layouts flexíveis e adaptáveis.
  • Unidades relativas: Como %, em e vw para dimensionamento dinâmico.

Exemplo de Media Query:

@media (max-width: 600px) {
    body {
        font-size: 16px;
    }
    
    .container {
        padding: 10px;
    }
}

2.6 Estilizando Elementos Interativos

CSS permite personalizar botões, links e formulários para criar uma experiência visual mais rica.

Estilizando Botões:

.botao {
    background-color: #667eea;
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s;
}

.botao:hover {
    background-color: #5a6fd8;
}

2.7 Boas Práticas e Performance

Seguir boas práticas no CSS melhora a manutenibilidade e performance do código.

Principais Boas Práticas:

  • Organização: Agrupar estilos relacionados e usar comentários.
  • Reutilização: Criar classes reutilizáveis para elementos comuns.
  • Especificidade: Evitar seletores muito específicos que dificultam manutenção.
  • Performance: Minimizar o uso de propriedades que causam reflow.

Questionário: HTML e CSS

Qual elemento HTML é usado para criar um link?

Prática: Crie sua Primeira Página

Tente criar uma página HTML simples com CSS. Use os exemplos acima como referência!

Capítulo 3 - JavaScript e Interatividade

3.1 O que é JavaScript?

O JavaScript é uma linguagem de programação usada para criar interatividade em páginas web. Ele permite manipular elementos da página, processar dados e comunicar-se com servidores, tornando sites dinâmicos e interativos.

Principais características do JavaScript:

  • Linguagem interpretada, executada diretamente no navegador.
  • Capaz de manipular o DOM (Document Object Model).
  • Suporte à programação assíncrona (async/await).
  • Utilizado tanto no front-end (navegador) quanto no back-end (Node.js).

3.2 Configurando o Ambiente

Antes de escrever código em JavaScript, é importante configurar um ambiente de desenvolvimento adequado.

Ferramentas essenciais:

  • Editor de código: Visual Studio Code, Sublime Text ou Atom.
  • Navegador: Chrome, Firefox, Edge – todos possuem ferramentas de desenvolvimento.
  • Node.js: Permite executar JavaScript fora do navegador.
  • Git: Para controle de versão e colaboração.

Criando um arquivo JavaScript

Para usar JavaScript em uma página HTML, você pode adicioná-lo diretamente dentro de um arquivo .js e vinculá-lo ao HTML:

Vinculando JavaScript ao HTML:

<script src="script.js"></script>

3.3 Manipulação do DOM

O DOM (Document Object Model) representa a estrutura HTML como um modelo de árvore, permitindo que JavaScript modifique elementos dinamicamente.

Selecionando Elementos:

const titulo = document.querySelector("h1"); // Seleciona o primeiro h1
const botao = document.getElementById("botao"); // Seleciona um elemento pelo ID

Modificando Conteúdo e Estilos:

titulo.textContent = "Novo Título!";
titulo.style.color = "blue;

3.4 Eventos e Interatividade

Eventos permitem que JavaScript responda a interações do usuário, como cliques e movimentos do mouse.

Adicionando Eventos:

botao.addEventListener("click", function() {
    alert("Botão clicado!");
});

Eventos comuns:

  • click – Quando o usuário clica em um elemento.
  • mouseover – Quando o mouse passa sobre um elemento.
  • keydown – Quando uma tecla do teclado é pressionada.

Demonstração Interativa:

Este texto mudará quando você clicar no botão.

3.5 Estruturas e Lógica de Programação

JavaScript oferece estruturas fundamentais para criar lógica de programação.

Variáveis e Tipos de Dados:

let nome = "Marcos"; // String
const idade = 25; // Número
let ativo = true; // Booleano

Condicionais:

if (idade >= 18) {
    console.log("Maior de idade");
} else {
    console.log("Menor de idade");
}

Loops:

for (let i = 0; i < 5; i++) {
    console.log("Número:", i);
}

3.6 Trabalhando com Funções

As funções organizam blocos de código reutilizáveis.

Função Simples:

function saudacao(nome) {
    return `Olá, ${nome}!`;
}
console.log(saudacao("Marcos"));

Arrow Functions:

const soma = (a, b) => a + b;
console.log(soma(5, 3));

3.7 Manipulação de APIs e AJAX

APIs permitem buscar e enviar dados para servidores.

Requisição GET com fetch()

fetch("https://jsonplaceholder.typicode.com/posts")
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Requisição Assíncrona com async/await

async function carregarDados() {
    try {
        const resposta = await fetch("https://jsonplaceholder.typicode.com/users");
        const dados = await resposta.json();
        console.log(dados);
    } catch (erro) {
        console.error("Erro na API:", erro);
    }
}
carregarDados();

3.8 Animações e Efeitos com JavaScript

JavaScript permite criar animações e efeitos dinâmicos.

Animação com setTimeout e setInterval:

setTimeout(() => {
    console.log("Executando após 3 segundos");
}, 3000);

setInterval(() => {
    console.log("Executando a cada 2 segundos");
}, 2000);

Animação com requestAnimationFrame:

function animar() {
    let elemento = document.getElementById("box");
    let posicao = 0;
    
    function movimento() {
        posicao += 1;
        elemento.style.left = posicao + "px";
        if (posicao < 100) {
            requestAnimationFrame(movimento);
        }
    }
    movimento();
}

3.9 Boas Práticas e Otimização

Seguir boas práticas melhora a qualidade e performance do código JavaScript.

Principais Boas Práticas:

  • Evite variáveis globais para evitar conflitos.
  • Use const e let ao invés de var para evitar erros de escopo.
  • Otimize loops e funções para melhorar a performance.
  • Trate erros corretamente usando try/catch.
  • Utilize ferramentas de debugging como console.log().

Prática: Experimente JavaScript

Abra o console do navegador (F12) e tente executar alguns dos códigos acima. O que você conseguiu fazer?

Capítulo 4 - Frameworks Front-end

4.1 O que são Frameworks Front-end?

Os frameworks front-end são ferramentas que facilitam o desenvolvimento de interfaces web modernas e responsivas. Eles fornecem estruturas organizadas e reutilizáveis que ajudam os desenvolvedores a construir aplicações de maneira eficiente e escalável.

Principais vantagens:

  • Modularidade e reuso de código.
  • Melhor desempenho e otimização de renderização.
  • Padronização de desenvolvimento, evitando códigos desorganizados.
  • Melhor experiência do usuário (UX) e design responsivo.

4.2 Principais Frameworks e Bibliotecas

Existem vários frameworks e bibliotecas populares para desenvolvimento front-end, cada um com características específicas:

React.js

  • Criado pelo Facebook, baseado em componentes reutilizáveis.
  • Usa Virtual DOM para melhorar desempenho.
  • Ampla comunidade e suporte a bibliotecas externas.

Vue.js

  • Mais leve e acessível para iniciantes.
  • Abordagem simples e intuitiva.
  • Alto desempenho e fácil integração com projetos existentes.

Angular

  • Desenvolvido pelo Google, voltado para aplicações grandes e escaláveis.
  • Baseado em TypeScript e arquitetura MVVM.
  • Ideal para projetos empresariais e sistemas complexos.

4.3 Componentização e Desenvolvimento Modular

Componentização permite dividir uma aplicação em partes menores e reutilizáveis, facilitando manutenção e expansão.

Exemplo de Componente React:

function Botao(props) {
    return (
        <button 
            onClick={props.onClick}
            className="botao"
        >
            {props.texto}
        </button>
    );
}

Vantagens da Componentização:

  • Reutilização de código.
  • Facilidade na manutenção e testes.
  • Separação entre lógica e apresentação.

4.4 Gerenciamento de Estado

O estado de uma aplicação controla o comportamento e os dados que são exibidos dinamicamente.

Principais formas de gerenciamento de estado:

  • Context API (React) – Simples e eficiente para pequenos projetos.
  • Redux – Ideal para projetos maiores e mais complexos.
  • Pinia/Vuex – Para gerenciamento de estado no Vue.js.

Exemplo de Gerenciamento de Estado com React Context API:

const MeuContexto = React.createContext();

function ComponentePai() {
    const [tema, setTema] = React.useState("claro");
    
    return (
        <MeuContexto.Provider value={{ tema, setTema }}>
            <ComponenteFilho />
        </MeuContexto.Provider>
    );
}

4.5 Manipulação de Dados e APIs

Os frameworks permitem consumir dados externos através de APIs, trazendo informações dinâmicas para o usuário.

Consumo de API com fetch() em React:

useEffect(() => {
    fetch("https://api.exemplo.com/dados")
        .then(response => response.json())
        .then(data => setDados(data));
}, []);

Bibliotecas para integração com APIs:

  • Axios – Alternativa ao fetch() para manipulação de requisições HTTP.
  • GraphQL – Para consultas de dados mais flexíveis e eficientes.

4.6 Estilização em Frameworks

Existem várias abordagens para estilização de componentes em aplicações front-end.

Estilização com Styled Components (React):

const Botao = styled.button`
    background-color: blue;
    color: white;
    padding: 10px;
    border-radius: 5px;
`;

function MeuComponente() {
    return <Botao>Clique Aqui</Botao>;
}

Outras opções:

  • Tailwind CSS – Classes utilitárias para rápida estilização.
  • Material UI – Biblioteca de componentes estilizados para React.
  • Bootstrap – Tradicional framework de estilização responsiva.

4.7 Testes e Debugging

Testar aplicações front-end é essencial para garantir estabilidade e qualidade.

Principais ferramentas de teste:

  • Jest – Testes unitários automatizados para JavaScript e React.
  • Cypress – Testes end-to-end simulando interações reais.
  • Vue Test Utils – Testes específicos para aplicações Vue.js.

Exemplo de Teste Unitário com Jest:

test("Deve renderizar botão corretamente", () => {
    render(<Botao texto="Clique" />);
    expect(screen.getByText("Clique")).toBeInTheDocument();
});

4.8 Performance e Otimização

Melhorar a performance do front-end é fundamental para garantir um carregamento rápido e uma boa experiência do usuário.

Técnicas de otimização:

  • Code splitting – Carregar apenas o necessário, reduzindo tamanho do bundle.
  • Lazy loading – Carregar elementos conforme necessário.
  • Minificação de código – Remover espaços e caracteres desnecessários.

Exemplo de Lazy Loading com React:

const MeuComponente = React.lazy(() => import("./MeuComponente"));

function App() {
    return (
        <Suspense fallback={<div>Carregando...</div>}>
            <MeuComponente />
        </Suspense>
    );
}

Reflexão: Escolhendo um Framework

Qual framework front-end mais te interessa? React, Vue ou Angular? Por quê?

Capítulo 5 - Desenvolvimento Back-end

5.1 O que é o Back-end?

O back-end é a parte de uma aplicação responsável pelo processamento de dados e lógica do sistema. Ele gerencia requisições feitas pelo front-end, acessa banco de dados e executa operações críticas para o funcionamento de um site ou aplicativo.

Principais funções do back-end:

  • Processamento de dados e lógica de negócios.
  • Gerenciamento de banco de dados.
  • Controle de autenticação e segurança.
  • Conexão entre APIs e serviços externos.

5.2 Servidores e Processamento

Os servidores são responsáveis por hospedar e executar aplicações web, processando solicitações dos usuários e retornando respostas.

Tipos de Servidores:

  • Servidor local: Executa aplicações apenas no ambiente de desenvolvimento.
  • Servidor remoto: Hospeda aplicações acessíveis pela internet.
  • Cloud computing: Hospedagem escalável via AWS, Google Cloud ou Azure.

Fluxo de Processamento:

  1. Usuário envia requisição para o servidor via HTTP.
  2. O servidor processa a solicitação e acessa o banco de dados.
  3. Retorna uma resposta ao usuário (HTML, JSON, ou outro formato).

5.3 Linguagens de Programação Back-end

Existem várias linguagens utilizadas para desenvolvimento back-end, cada uma com características únicas.

JavaScript (Node.js)

  • Popular e eficiente para aplicações web modernas.
  • Permite usar a mesma linguagem no front-end e back-end.
  • Ampla comunidade e muitas bibliotecas disponíveis.

Python (Django, Flask)

  • Simples, robusto e ideal para ciência de dados.
  • Sintaxe clara e fácil de aprender.
  • Excelente para prototipagem rápida.

PHP (Laravel)

  • Tradicionalmente usado em aplicações web.
  • Fácil de configurar e hospedar.
  • Ampla documentação e comunidade.

5.4 Frameworks para Desenvolvimento Back-end

Os frameworks facilitam o desenvolvimento, trazendo funcionalidades prontas para lidar com requisições, segurança e bancos de dados.

Frameworks mais utilizados:

  • Express.js (Node.js) – Minimalista e eficiente para APIs.
  • Django (Python) – Segurança e produtividade.
  • Spring Boot (Java) – Excelente para aplicações corporativas.
  • Laravel (PHP) – Estruturado e poderoso para web apps.

Exemplo de um servidor com Express.js:

const express = require("express");
const app = express();

app.get("/", (req, res) => {
    res.send("Bem-vindo ao servidor!");
});

app.listen(3000, () => {
    console.log("Servidor rodando na porta 3000");
});

5.5 Banco de Dados e Modelagem

Os bancos de dados armazenam e organizam informações utilizadas pelas aplicações web.

Tipos de Bancos de Dados:

  • SQL (MySQL, PostgreSQL) – Estruturados, utilizam tabelas e relações.
  • NoSQL (MongoDB, Firebase) – Flexíveis, armazenam dados em formatos de documentos.

Exemplo de consulta SQL:

SELECT * FROM usuarios WHERE idade > 18;

Modelagem de Dados:

  • Definir tabelas, atributos e relacionamentos.
  • Uso de chaves primárias e estrangeiras.
  • Normalização para eficiência no armazenamento.

5.6 Construção de APIs

As APIs permitem que diferentes sistemas se comuniquem, garantindo integração entre front-end e back-end.

Criando uma API RESTful com Node.js:

app.get("/usuarios", (req, res) => {
    res.json([
        { nome: "Marcos", idade: 25 },
        { nome: "Ana", idade: 22 }
    ]);
});

Métodos HTTP:

  • GET – Busca de dados.
  • POST – Envio de novos registros.
  • PUT – Atualização de informações.
  • DELETE – Remoção de registros.

5.7 Autenticação e Segurança

Garantir segurança é essencial para proteger dados dos usuários e evitar ataques.

Principais estratégias:

  • Autenticação com JWT (JSON Web Token).
  • Criptografia de senhas com bcrypt.
  • Proteção contra SQL Injection e Cross-Site Scripting (XSS).

Exemplo de Autenticação com JWT:

const jwt = require("jsonwebtoken");

const token = jwt.sign(
    { userId: 1 },
    "chave_secreta",
    { expiresIn: "1h" }
);

console.log(token);

5.8 Testes e Otimização

Testar aplicações garante que tudo funcione corretamente e evita falhas no sistema.

Tipos de Testes:

  • Testes unitários: Verificam funções individuais.
  • Testes de integração: Avaliam comunicação entre módulos.
  • Testes de carga: Simulam múltiplos acessos simultâneos.

Ferramentas de Teste:

  • Jest – Para testes JavaScript.
  • Pytest – Para aplicações Python.
  • Postman – Para testar APIs.

Exemplo de Teste com Jest:

test("Deve somar dois números corretamente", () => {
    expect(2 + 3).toBe(5);
});

Reflexão: Back-end vs Front-end

Você prefere trabalhar mais com lógica de negócios e dados (back-end) ou com interface e experiência do usuário (front-end)? Por quê?

Capítulo 6 - Banco de Dados e APIs

6.1 Introdução aos Bancos de Dados

Os bancos de dados são essenciais para armazenar, organizar e recuperar informações de maneira eficiente. Eles permitem que sites e aplicações gerenciem grandes volumes de dados de forma estruturada.

Principais conceitos:

  • Banco de dados relacional (SQL) – Estruturado com tabelas e relacionamentos.
  • Banco de dados não relacional (NoSQL) – Flexível e baseado em documentos, chave-valor ou grafos.
  • CRUD (Create, Read, Update, Delete) – Operações fundamentais para manipulação de dados.

6.2 Bancos de Dados Relacionais (SQL)

Os bancos de dados SQL são estruturados e utilizam tabelas para armazenar informações com relações bem definidas.

Principais bancos SQL:

  • MySQL – Popular e amplamente utilizado.
  • PostgreSQL – Mais robusto e escalável.
  • SQLite – Leve e ideal para aplicações pequenas.

Exemplo de tabela SQL:

CREATE TABLE usuarios (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100),
    email VARCHAR(100) UNIQUE,
    idade INT
);

Consultas SQL básicas:

SELECT * FROM usuarios WHERE idade >= 18;

INSERT INTO usuarios (nome, email, idade) 
VALUES ("Marcos", "marcos@email.com", 25);

6.3 Bancos de Dados Não Relacionais (NoSQL)

Os bancos NoSQL armazenam dados de maneira mais flexível, sem a necessidade de estruturação em tabelas.

Tipos de Bancos NoSQL:

  • MongoDB – Baseado em documentos JSON.
  • Redis – Armazena dados em chave-valor, ótimo para cache.
  • Firebase – Solução de banco de dados em tempo real do Google.

Exemplo de documento MongoDB:

{
    "nome": "Marcos",
    "email": "marcos@email.com",
    "idade": 25
}

Consultas básicas MongoDB:

db.usuarios.find({ idade: { $gte: 18 } });

db.usuarios.insertOne({
    nome: "Ana",
    email: "ana@email.com",
    idade: 22
});

6.4 Introdução às APIs

As APIs (Application Programming Interfaces) permitem que diferentes sistemas se comuniquem entre si, facilitando a troca de dados entre o front-end e o back-end.

Tipos de APIs:

  • REST (Representational State Transfer) – Baseada em HTTP e métodos padrão.
  • GraphQL – Permite buscas de dados mais específicas e eficientes.
  • SOAP – Utilizada em sistemas corporativos mais antigos.

Métodos HTTP essenciais:

  • GET – Buscar dados.
  • POST – Enviar dados.
  • PUT – Atualizar um recurso existente.
  • DELETE – Remover um recurso.

6.5 Criando uma API do Zero

Criar uma API envolve definir rotas e manipular requisições e respostas.

Exemplo de API RESTful com Express.js:

const express = require("express");
const app = express();

app.get("/usuarios", (req, res) => {
    res.json([
        { nome: "Marcos", idade: 25 },
        { nome: "Ana", idade: 22 }
    ]);
});

app.listen(3000, () => {
    console.log("Servidor rodando na porta 3000");
});

6.6 Autenticação e Segurança em APIs

A segurança em APIs é essencial para proteger dados e garantir acesso seguro aos serviços.

Principais técnicas de segurança:

  • Autenticação com JWT (JSON Web Token) – Garante segurança na comunicação.
  • Criptografia de senhas com bcrypt – Evita o armazenamento inseguro de credenciais.
  • Proteção contra ataques como SQL Injection e XSS.

Exemplo de autenticação JWT:

const jwt = require("jsonwebtoken");

const token = jwt.sign(
    { userId: 1 },
    "chave_secreta",
    { expiresIn: "1h" }
);

console.log(token);

6.7 Consumo de APIs no Front-end

As aplicações front-end precisam se comunicar com APIs para exibir informações dinâmicas.

Requisição de dados com fetch():

fetch("https://api.exemplo.com/usuarios")
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Uso de Axios para facilitar requisições:

axios.get("https://api.exemplo.com/usuarios")
    .then(response => console.log(response.data))
    .catch(error => console.error(error));

6.8 APIs Públicas e Integrações

Existem diversas APIs públicas que podem ser utilizadas para adicionar funcionalidades às aplicações.

APIs populares:

  • OpenWeather API – Informações climáticas.
  • Google Maps API – Serviços de localização e rotas.
  • Twitter API – Integração com redes sociais.

Exemplo de requisição de API externa:

fetch("https://api.openweathermap.org/data/2.5/weather?q=Rio de Janeiro&appid=CHAVE_API")
    .then(response => response.json())
    .then(data => console.log(data));

Prática: Consumindo uma API

Tente fazer uma requisição para uma API pública usando fetch() ou axios. Que dados você conseguiu obter?

Capítulo 7 - Boas Práticas e Segurança

7.1 Introdução às Boas Práticas

Seguir boas práticas no desenvolvimento web melhora a qualidade do código, facilita a manutenção e aumenta a segurança das aplicações.

Principais benefícios das boas práticas:

  • Código mais limpo e organizado.
  • Melhor performance e escalabilidade.
  • Facilidade para colaboração em equipe.
  • Aplicações mais seguras e acessíveis.

7.2 Acessibilidade na Web

A acessibilidade web garante que todas as pessoas, independentemente de limitações físicas ou cognitivas, possam navegar e interagir com um site.

Boas práticas de acessibilidade:

  • Uso de atributos ARIA (aria-label, role) para melhorar a leitura por leitores de tela.
  • Alt text em imagens (<img alt="descrição">).
  • Contraste adequado entre textos e fundo.
  • Navegação via teclado sem depender do mouse.

Exemplo de botão acessível:

<button 
    aria-label="Enviar formulário"
    onclick="enviarFormulario()"
>
    Enviar
</button>

7.3 SEO (Otimização para Motores de Busca)

SEO melhora a visibilidade de um site nos motores de busca como Google, aumentando o tráfego orgânico.

Principais técnicas de SEO:

  • Uso adequado de tags meta (title, description).
  • Estruturação de conteúdo semântico (<h1>, <h2>, <h3>).
  • Links internos e externos para fortalecer autoridade.
  • Tempo de carregamento otimizado para melhorar o ranqueamento.

Exemplo de meta tag de SEO:

<meta name="description" content="Aprenda programação web do zero com este guia completo">
<meta name="keywords" content="programação, web, HTML, CSS, JavaScript">

7.4 Segurança na Web

A segurança web protege usuários contra ataques e vulnerabilidades.

Principais ameaças e prevenções:

  • SQL Injection – Evitar manipulação de banco de dados com sanitização de entrada.
  • XSS (Cross-Site Scripting) – Bloquear scripts maliciosos.
  • CSRF (Cross-Site Request Forgery) – Implementar tokens de segurança.
  • Autenticação segura com JWT e criptografia de senhas.

Exemplo de proteção contra XSS em JavaScript:

function escaparHTML(texto) {
    return texto
        .replace(/&/g, "&")
        .replace(//g, ">");
}

7.5 Boas Práticas na Escrita de Código

Escrever código de forma clara e eficiente facilita a manutenção e colaboração.

Dicas para um código mais limpo:

  • Nomes de variáveis descritivos, evitando x, teste, valor1.
  • Evitar repetições com funções reutilizáveis.
  • Comentários estratégicos, apenas onde necessário.
  • Uso de formatação padronizada com ESLint e Prettier.

Exemplo de código organizado:

function calcularDesconto(valor, percentual) {
    return valor - (valor * (percentual / 100));
}

7.6 Versionamento e Colaboração

O versionamento de código facilita o controle de alterações e colaboração em equipe.

Uso do Git para versionamento:

  • Criar repositório (git init).
  • Fazer commits (git commit -m "Descrição da alteração").
  • Trabalhar com branches (git checkout -b nova_funcionalidade).
  • Enviar alterações para o GitHub (git push origin main).

Exemplo de fluxo Git:

git init
git add .
git commit -m "Primeira versão do projeto"
git push origin main

7.7 Otimização de Performance

O desempenho de um site impacta diretamente na experiência do usuário e no SEO.

Técnicas para melhorar performance:

  • Minificação de CSS e JavaScript (.min.js).
  • Uso de CDN para carregamento mais rápido de recursos.
  • Lazy Loading de imagens para reduzir consumo de dados.
  • Cache eficiente para evitar requisições repetidas ao servidor.

Exemplo de Lazy Loading em imagens:

<img 
    src="placeholder.jpg" 
    data-src="imagem-real.jpg" 
    loading="lazy" 
    alt="Descrição"
>

Reflexão: Segurança e Boas Práticas

Qual aspecto da segurança web mais te preocupa? Como você planeja implementar boas práticas em seus projetos?

Capítulo 8 - Publicação e Hospedagem

8.1 O Processo de Implantação

A implantação de uma aplicação web envolve a transição do ambiente de desenvolvimento para um servidor acessível ao público. Isso requer testes, configurações e otimizações para garantir que tudo funcione corretamente.

Etapas do processo:

  1. Preparação do código – Limpeza, organização e teste de funcionalidades.
  2. Escolha do serviço de hospedagem – Selecione entre servidores dedicados, compartilhados ou em nuvem.
  3. Configuração do domínio – Apontamento de DNS para tornar o site acessível via URL personalizada.
  4. Deploy e publicação – Transferência de arquivos para o servidor e configuração de dependências.
  5. Monitoramento e manutenção – Ajustes contínuos para garantir estabilidade e segurança.

8.2 Tipos de Hospedagem

A escolha da hospedagem impacta o desempenho e a escalabilidade do site.

Principais opções:

  • Hospedagem compartilhada – Econômica, mas com menos controle e recursos.
  • VPS (Servidor Virtual Privado) – Maior controle sobre configurações e desempenho.
  • Servidores dedicados – Total controle e maior capacidade, indicado para grandes projetos.
  • Hospedagem em nuvem (AWS, Google Cloud, Azure) – Escalável e eficiente, com cobrança baseada em uso.

Comparação entre hospedagens:

Tipo Vantagens Desvantagens
Compartilhada Baixo custo, fácil configuração Pouco controle, menor desempenho
VPS Controle total, bom desempenho Custo intermediário, configuração manual
Dedicado Alto desempenho, segurança Custo elevado, exige gerenciamento
Nuvem Escalabilidade, pagamento por uso Complexidade na configuração inicial

8.3 Configuração de Domínio e DNS

O domínio permite que usuários acessem um site de forma amigável, sem precisar lembrar um endereço IP.

Passos para configurar um domínio:

  1. Registrar um domínio – Escolha um serviço como GoDaddy ou Namecheap.
  2. Apontar DNS para o servidor – Configurar registros A, CNAME, MX.
  3. Configurar subdomínios – Para versões diferentes do site (blog.exemplo.com).

Exemplo de configuração DNS:

  • Registro A: Aponta o domínio para um endereço IP.
  • Registro CNAME: Redireciona para outro domínio.
  • Registro MX: Define servidores de e-mail.

8.4 Deploy de Aplicações Web

O deploy publica a aplicação no servidor, tornando-a acessível aos usuários.

Métodos de deploy:

  • FTP/SFTP – Envio de arquivos via FileZilla.
  • GitHub Actions – Automação do deploy com CI/CD.
  • Plataformas como Netlify, Vercel e Heroku – Facilita a implantação com integração nativa.
  • Docker – Padroniza ambientes de deploy para evitar problemas de dependências.

Exemplo de deploy usando Git:

git add .
git commit -m "Publicação inicial"
git push origin main

8.5 Certificados SSL e Segurança