Você está na página 1de 131

COMO SE TORNAR UM

DESENVOLVEDOR
FULL-STACK
TUDO QUE VOCÊ PRECISA APRENDER
ÍNDICE

Introdução ao Desenvolvimento Full-Stack

Fundamentos de Programação

Front-end

Back-end

Desenvolvimento de Aplicações Web

Ferramentas e Recursos Adicionais

Conclusão e Considerações Finais

www.fullstackmaster.com.br
03

INTRODUÇÃO
O Desenvolvimento Full-Stack é uma área de
tecnologia em constante evolução que
permite aos desenvolvedores criar aplicações
web completas, desde o front-end (interface
do usuário) até o back-end (servidor e banco
de dados). Isso significa que, como
Desenvolvedor Full-Stack, você será
responsável por todos os aspectos da
aplicação, desde a sua aparência e
funcionalidade até a segurança e
escalabilidade.

Ser um Desenvolvedor Full-Stack significa


ter uma compreensão sólida dos
fundamentos de programação, bem como
conhecimento especializado em tecnologias
front-end e back-end. É uma habilidade
altamente procurada em todo o mundo, com
uma ampla gama de oportunidades de
carreira e salários atraentes.

Neste livro, você aprenderá os conceitos


básicos e avançados do Desenvolvimento
Full-Stack, incluindo as tecnologias mais
populares, ferramentas e processos
utilizados no desenvolvimento de aplicações.

www.fullstackmaster.com.br
04
Você também receberá dicas práticas sobre
como se tornar um Desenvolvedor Full-Stack
bem-sucedido e como manter-se atualizado
com as novidades da indústria.

Se você está procurando uma carreira


emocionante e desafiadora no mundo da
tecnologia, o Desenvolvimento Full-Stack é
uma ótima opção. Vamos começar!

POR QUE SE TORNAR UM


DESENVOLVEDOR FULL-STACK?
Além da oportunidade de criar aplicações
web completas, há muitas outras razões
pelas quais se tornar um Desenvolvedor Full-
Stack pode ser uma ótima escolha de
carreira.

Aqui estão algumas das principais vantagens:

Versatilidade: Como Desenvolvedor Full-


Stack, você terá habilidades que lhe
permitirão trabalhar em uma ampla gama de
projetos, desde pequenas startups até
grandes empresas. Isso significa que você
terá mais liberdade para escolher os projetos
que lhe interessam e poderá trabalhar em
uma variedade de tecnologias.

www.fullstackmaster.com.br
05
Salários atraentes: A demanda por
Desenvolvedores Full-Stack é alta, o que
significa que as empresas estão dispostas a
pagar bons salários para atrair e reter
profissionais talentosos. De acordo com
pesquisas recentes, os salários médios para
Desenvolvedores Full-Stack variam entre
US$70.000 e US$120.000 por ano.

Crescimento profissional: Sim, estamos


falando de uma área em constante evolução,
o que significa que sempre haverá novas
tecnologias e ferramentas para aprender.
Além disso, como Desenvolvedor Full-Stack,
você terá a oportunidade de se especializar
em tecnologias front-end ou back-end, ou
mesmo em ambas.

Flexibilidade: Muitos Desenvolvedores Full-


Stack trabalham como freelancers ou em
regime de home office, o que lhes permite
uma maior flexibilidade quanto a horários de
trabalho e localização. Isso pode ser uma
ótima opção para aqueles que buscam um
equilíbrio entre trabalho e vida pessoal.

Satisfação pessoal: O Desenvolvimento Full-


Stack é uma área altamente criativa, onde é
possível ver o resultado imediato do seu
trabalho.

www.fullstackmaster.com.br
06
Além disso, você terá a oportunidade de
solucionar problemas complexos e ajudar a
melhorar a vida das pessoas através da
tecnologia.

Ou seja, ser um Desenvolvedor Full-Stack é


uma escolha de carreira que oferece muitas
vantagens, incluindo salários atraentes,
crescimento profissional, flexibilidade e
satisfação pessoal.

Se você está procurando uma carreira


emocionante e lucrativa no mundo da
tecnologia, pode ter certeza que o
Desenvolvimento Full-Stack é a melhor
opção!

O QUE VOCÊ PRECISA SABER PARA


SE TORNAR UM DESENVOLVEDOR
FULL-STACK
HTML, CSS e JavaScript: Estes são os
principais pilares da construção de
interfaces de usuário da web.

Você precisa saber como estruturar e


estilizar páginas da web, bem como interagir
com elas através de JavaScript.

www.fullstackmaster.com.br
07
Frameworks e bibliotecas front-end: Como
React, Angular ou Vue, estes são ferramentas
que facilitam a construção de aplicações web
mais complexas. Você precisa conhecer pelo
menos um desses frameworks e entender
como funcionam.

Banco de dados: Você precisa entender como


armazenar e recuperar informações do
usuário, como criar tabelas, relacionamentos
e consultas. Você também precisa conhecer
pelo menos uma linguagem de banco de
dados, como SQL ou NoSQL.

Linguagem de programação back-end: Você


precisa conhecer pelo menos uma linguagem
de programação, como Python, Ruby, Java ou
NodeJS, para desenvolver a parte back-end
de suas aplicações.

API's: Você precisa entender como criar e


consumir API's, ou seja, como aplicações
podem se comunicar entre si através de
requisições HTTP.

Segurança da aplicação: Você precisa


entender como proteger suas aplicações
contra ataques cibernéticos, como injeção de
SQL, cross-site scripting (XSS) e cross-site
request forgery (CSRF).

www.fullstackmaster.com.br
08
Versionamento de código: Você precisa
entender como controlar suas versões de
código e colaborar com outros
desenvolvedores, com ferramentas como Git.

Desenvolvimento ágil: Você precisa conhecer


metodologias ágeis, como Scrum ou Kanban,
para gerenciar projetos de software de forma
eficiente.

E você deve está pensando, sim é isso


mesmo que eu quero aprender, para de me
enrolar. Calma! Essa é apenas a introdução
mostrando tudo que você irá aprender neste
e-book completo sobre Como se tornar um
Desenvolvedor Full-Stack. Vou detalhar cada
etapa pra você, este e-book trata-se de uma
trilha de estudos completo para você saber
exatamente os passos que você precisa dar
em sua carreira para se tornar um
programador habilitado para o sucesso!

É importante ter em mente que o


aprendizado nunca para, e sempre haverá
novas tecnologias e ferramentas para
aprender. Por isso, é importante estar
sempre atualizado e disposto a aprender
coisas novas.

www.fullstackmaster.com.br
09

FUNDAMENTOS DA
1 PROGRAMAÇÃO
Neste capítulo, você aprenderá sobre os
fundamentos da programação e como eles se
aplicam ao desenvolvimento Full-Stack.

Antes de começarmos a explorar as


tecnologias e ferramentas específicas, é
importante ter uma compreensão sólida dos
conceitos básicos da programação.

Primeiramente, você precisa entender o que é


uma linguagem de programação.

As linguagens de programação são os meios


pelos quais você pode dar instruções a um
computador para realizar tarefas específicas.

Existem várias linguagens de programação


disponíveis, cada uma com suas próprias
características e usos específicos.

Algumas das conceitos básicos da


programação incluem variáveis, operadores,
estruturas de controle de fluxo, funções e
estruturas de dados.

www.fullstackmaster.com.br
10
Uma variável é uma espaço na memória do
computador onde você pode armazenar
informações.

Os operadores permitem realizar cálculos e


comparar valores.

As estruturas de controle de fluxo, como if-


else e loop, permitem que você controle o
fluxo de execução do seu código.

As funções são blocos de código que podem


ser reutilizados em várias partes do seu
programa.

E as estruturas de dados, como arrays e


objetos, permitem armazenar e manipular
informações de forma organizada.

Você também precisa ter conhecimento sobre


a lógica de programação, e neste capítulo
vamos focar em 3 pilares que você precisa ter
como base se você quiser dominar o Universo
Full-Stask

Lógica de Programação
Algoritmos e Estruturas de Dados
Linguagem de Programação

www.fullstackmaster.com.br
11
LÓGICA DE PROGRAMAÇÃO

A lógica de programação é a habilidade de


pensar de forma lógica e resolver problemas
utilizando o computador. Isso inclui a
compreensão de como o seu código será
executado e como ele se relaciona com
outros componentes do seu sistema.

E posso te afirmar sem medo de errar que a


primeira habilidade que você precisa dominar
para se tornar um programador de “mão
cheia” é a habilidade de pensar de forma
lógica.

A lógica de programação é um componente


fundamental do desenvolvimento de
software. Ele permite aos desenvolvedores
pensar de forma lógica e resolver problemas
utilizando o computador. Sem a lógica de
programação, seria impossível escrever
programas que funcionem de forma eficiente
e correta.

A lógica de programação envolve a


compreensão de como o seu código será
executado pelo computador. Isso significa
entender como o seu código se relaciona com
outros componentes do seu sistema, como
banco de dados e APIs.

www.fullstackmaster.com.br
12
Para desenvolver suas habilidades de lógica
de programação, você pode começar
resolvendo problemas simples. Por exemplo,
você pode escrever um programa que calcule
a média de vários números. Conforme você se
familiariza com a lógica de programação,
você pode avançar para problemas mais
complexos, como a criação de aplicativos de
e-commerce ou sistemas de gerenciamento
de banco de dados.

Além de resolver problemas, é importante


praticar sua capacidade de pensar de forma
lógica. Isso pode ser feito através de
exercícios de pensamento lógico, como
sudoku ou outros quebra-cabeças.

A lógica de programação é uma habilidade


que é desenvolvida com o tempo e a prática.
Quanto mais você pratica, mais fácil será
escrever código que seja eficiente, correto e
fácil de manter. Com a lógica de
programação como base, você estará
preparado para continuar a explorar os
outros aspectos do desenvolvimento Full-
Stack.
ALGORITMOS E ESTRUTURAS DE DADOS

Algoritmos e estruturas de dados são


conceitos importantes na programação. Um
algoritmo é uma sequência de passos lógicos
que são seguidos para resolver um problema.

www.fullstackmaster.com.br
13
As estruturas de dados, por sua vez, são
estruturas lógicas que armazenam e
organizam dados de forma eficiente.

Os algoritmos são fundamentais na


programação, pois são usados para resolver
problemas complexos e realizar tarefas como
busca, ordenação e filtragem de dados. Por
exemplo, um algoritmo de busca pode ser
usado para encontrar um registro específico
em um grande banco de dados. Já um
algoritmo de ordenação pode ser usado para
organizar uma lista de números em ordem
crescente ou decrescente.

As estruturas de dados são usadas para


armazenar e organizar dados de forma
eficiente. Algumas estruturas de dados
comuns incluem arrays, listas ligadas, árvores
e grafos. Cada estrutura de dados tem suas
próprias vantagens e desvantagens, e o
desenvolvedor deve escolher a estrutura mais
adequada para o problema que está sendo
resolvido.

Aprender sobre algoritmos e estruturas de


dados é importante para que você possa
escrever código mais eficiente e escalável.
Conforme você adquire experiência como
desenvolvedor, você aprenderá a identificar
quando é necessário utilizar algoritmos mais
avançados, como algoritmos de busca

www.fullstackmaster.com.br
14
em largura ou profundidade, ou estruturas de
dados mais complexas, como árvores binárias
ou grafos.

Aprender sobre algoritmos e estruturas de


dados é uma parte importante da formação
de um desenvolvedor Full-Stack. Com o
tempo e a prática, você adquirirá a
habilidade de escrever código mais eficiente
e escalável, o que será uma grande vantagem
na sua carreira como desenvolvedor.

LINGUAGEM DE PROGRAMAÇÃO

A escolha da linguagem de programação é


uma das decisões mais importantes que um
desenvolvedor Full-Stack precisa fazer.
Existem muitas linguagens de programação
diferentes, cada uma com suas próprias
vantagens e desvantagens.

Para se tornar um desenvolvedor Full-Stack,


você precisa escolher uma linguagem de
programação que seja versátil o suficiente
para ser usada em diferentes camadas da
pilha de tecnologias.

Algumas das linguagens de programação


mais populares para desenvolvimento Full-
Stack incluem JavaScript, Python, Ruby e
PHP.

www.fullstackmaster.com.br
15
Se você está começando do zero, é
aconselhável começar com uma linguagem de
programação fácil de aprender, como
JavaScript ou Python. Ambas as linguagens
têm uma comunidade ativa de
desenvolvedores e muitos recursos
disponíveis para ajudá-lo a aprender e
praticar.

Uma vez que você tenha escolhido uma


linguagem de programação, o próximo passo
é aprender a sintaxe da linguagem e começar
a escrever seu próprio código. A prática é a
chave para se tornar um desenvolvedor Full-
Stack competente, e quanto mais você
praticar, mais rápido você aprenderá.

Antes de você continuar com a leitura, deixa


eu te lembrar algo caso você deseje ir direto
para nossa plataforma de ensino com mais de
2500 aulas práticas.

Se você está procurando uma maneira fácil e


acessível de aprender a programar e se
tornar um desenvolvedor Full-Stack, o nosso
Pacote é a melhor opção sem sombra de
dúvidas. Ele fornece a você todo o
conhecimento e as habilidades necessárias
para se tornar um programador completo!

www.fullstackmaster.com.br
16
Veja os motivos...

Já são mais de 2.500 Aulas gravadas

Nós não nos cansamos de produzir conteúdos


de qualidade para nossos alunos, desde os
conteúdos mais básicos para aqueles que
estão iniciando sua carreira, como conteúdos
mais avançados para aqueles que já
trabalham na área, ou seja, não irá faltar
material para você estudar quantas vezes
quiser ao dia!

Já são mais de 200 projetos práticos

Aqui está um dos diferenciais que tem


transformado a vida de milhares de alunos,
os projetos práticos, pois sabemos que para
você fixar os conhecimentos aprendidos você
precisa colocar em prática com projetos
reais. Principalmente para quem está
iniciando é a melhor forma de aprender!

Sim, estamos no inicio do Livro, mas se você


deseja conhecer tudo que você irá aprender
na prática com o Pacote Full-Stack é só clicar
no botão abaixo!

Temos muitas outras vantagens, mas você só


descubrirá se clicar

PACOTE FULL-STACK MASTER

www.fullstackmaster.com.br
17

DESENVOLVIMENTO
2 FRONT-END
O Desenvolvimento Front-End é uma área
importante do desenvolvimento de software
que se concentra na criação da interface do
usuário (UI) e na experiência do usuário (UX)
em aplicativos web e móveis.

O Desenvolvimento Front-End envolve a


combinação de HTML, CSS e JavaScript para
criar interfaces interativas e atraentes para
os usuários.

HTML (Hypertext Markup Language) é a


linguagem de marcação que define a
estrutura de uma página da web. É usado
para criar elementos como títulos,
parágrafos, imagens e links em uma página
da web.

CSS (Cascading Style Sheets) é a linguagem


de folha de estilo que controla a aparência
de uma página da web. É usado para aplicar
estilos como fontes, cores e espaçamentos a
elementos HTML.

www.fullstackmaster.com.br
18
JavaScript é uma linguagem de programação
que permite a criação de interações
dinâmicas e animações na web. É usado para
adicionar funcionalidades como formulários
interativos, modais e carrinhos de compras a
uma página da web.

Além de HTML, CSS e JavaScript, existem


bibliotecas front-end, como React, Vue e
Angular, que tornam o desenvolvimento de
aplicativos web mais fácil e rápido. Estas
bibliotecas fornecem componentes pré-
construídos e ferramentas que ajudam os
desenvolvedores a construir aplicativos mais
complexos e interativos.

Neste capítulo, vamos explorar


detalhadamente HTML, CSS, JavaScript e
bibliotecas front-end, incluindo como usá-los
para criar interfaces de usuário atraentes e
interativas. Se você está interessado em se
tornar um desenvolvedor Full-Stack, é
importante ter uma compreensão profunda
destes conceitos fundamentais do
Desenvolvimento Front-End.

www.fullstackmaster.com.br
19
O QUE É HTML E COMO USÁ-LO

HTML (Hypertext Markup Language) é a


linguagem de marcação padrão da web e é
usada para criar e estruturar páginas da web.
HTML permite a criação de elementos como
títulos, parágrafos, imagens, links e
formulários, que são usados para apresentar
conteúdo na web.

Para usar HTML, basta criar um arquivo com


a extensão .html e adicionar elementos HTML
usando tags.

Por exemplo, para criar um título, você pode


usar a tag <h1>, enquanto para adicionar um
parágrafo, você pode usar a tag <p>. É
importante notar que as tags HTML devem
ser fechadas corretamente, ou seja, cada tag
de abertura deve ter uma tag de fechamento
correspondente.

www.fullstackmaster.com.br
20
Aqui estão alguns exemplos práticos de como
usar HTML para desenvolver sites:

Criar um título:

<h1>Meu Título</h1>

Adicionar um parágrafo:

<p>Este é um exemplo de um parágrafo em HTML.


</p>

Inserir uma imagem:

<img src="minha-imagem.jpg" alt="Minha


Imagem">
Criar um link:

<a href="https://www.exemplo.com">Clique aqui


para ir ao site de exemplo</a>

Criar um formulário:

<form action="enviar-form.php">
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome">

<label for="email">Email:</label>
<input type="email" id="email" name="email">

<input type="submit" value="Enviar">


</form>

www.fullstackmaster.com.br
21
Este é apenas um rápido exemplo do poder e
flexibilidade do HTML. Aprender HTML é
fundamental para qualquer pessoa interessada em
se tornar um desenvolvedor front-end ou full-
stack, pois ele é a base da construção de qualquer
site na web.

O QUE É CSS E COMO USÁ-LO

CSS, sigla para Cascading Style Sheets, é uma


linguagem de estilo utilizada para definir a
aparência de um site ou aplicação web. Ele é
usado para estilizar elementos HTML como cor,
fontes, espaçamento, posições, animações e
outros aspectos visuais.

O CSS é um dos pilares do desenvolvimento


Front-End e é importante para criar páginas web
atraentes, responsivas e acessíveis.

www.fullstackmaster.com.br
22
Este é apenas um rápido exemplo do poder e
flexibilidade do HTML. Aprender HTML é
fundamental para qualquer pessoa interessada em
se tornar um desenvolvedor front-end ou full-
stack, pois ele é a base da construção de qualquer
site na web.

O QUE É CSS E COMO USÁ-LO

CSS, sigla para Cascading Style Sheets, é uma


linguagem de estilo utilizada para definir a
aparência de um site ou aplicação web. Ele é
usado para estilizar elementos HTML como cor,
fontes, espaçamento, posições, animações e
outros aspectos visuais.

O CSS é um dos pilares do desenvolvimento


Front-End e é importante para criar páginas web
atraentes, responsivas e acessíveis.

www.fullstackmaster.com.br
23
EXEMPLOS PRATICOS DO USO DO CSS

Estilizando Títulos: Você pode usar CSS para


mudar a cor, fonte, tamanho e estilo dos títulos
em uma página HTML. Por exemplo, você pode
fazer com que todos os títulos de h1 tenham uma
fonte específica e cor de fundo:

h1 {
font-family: Arial, sans-serif;
font-size: 36px;
color: blue;
background-color: yellow;
}

Layout de Página: O CSS permite que você crie


layouts complexos para suas páginas. Por
exemplo, você pode usar a propriedade "display"
para definir se um elemento deve ser exibido
como uma linha ou como uma caixa flutuante, ou
você pode usar a propriedade "float" para flutuar
elementos uns aos outros.

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

www.fullstackmaster.com.br
24
.box {
float: left;
width: 50%;
height: 50px;
background-color: lightblue;
}

Mudando Cores: O CSS permite que você mude as


cores de fundo, texto e outros elementos. Por
exemplo, você pode mudar a cor de fundo de
todos os elementos "body" para um tom de cinza
claro:

body {
background-color: #f2f2f2;
}

Estes são apenas alguns exemplos de como você


pode usar o CSS para estilizar suas páginas web.

É importante entender a sintaxe e as


propriedades do CSS para criar projetos visuais
eficientes e atraentes. No pacote Full Stack da
Danki Code, você encontrará aprofundamento em
CSS, incluindo a utilização de frameworks CSS
como Bootstrap e Materialize, que proporcionam
uma série de recursos e componentes prontos
para serem usados em seus projetos.

Nos últimos dois tópicos, foi apresentado o que é


HTML e CSS e como eles são utilizados no
desenvolvimento de sites na web.

www.fullstackmaster.com.br
25
O HTML é uma linguagem de marcação que define
a estrutura e o conteúdo de uma página da web,
enquanto o CSS é uma linguagem de folhas de
estilo que permite aos desenvolvedores estilizar e
formatar essas páginas.

A integração do HTML e CSS permite que os


desenvolvedores criem páginas da web atraentes
e funcionais. Por exemplo, você pode criar uma
página simples da web com um título, um
subtítulo, uma imagem e um botão de compra
estilizado em CSS, da seguinte maneira:

<html>
<head>
<style>
h1 {
text-align: center;
color: blue;
}

p{
text-align: center;
font-size: 18px;
}

img {
display: block;
margin: 0 auto;
width: 50%;
}

www.fullstackmaster.com.br
26
.buy-button {
display: block;
margin: 20px auto;
padding: 10px 20px;
background-color: green;
color: white;
border-radius: 5px;
text-align: center;
}
</style>
</head>
<body>
<h1>Meu Produto</h1>
<p>Subtítulo do Produto</p>
<img src="product.jpg" alt="Produto">
<a href="#" class="buy-button">Comprar</a>
</body>
</html>

Com este exemplo, você pode ver como o HTML


fornece a estrutura da página e o conteúdo,
enquanto o CSS fornece a formatação e estilo.
Juntos, eles permitem a criação de páginas da
web atraentes e funcionais.

www.fullstackmaster.com.br
27
JAVASCRIPT E SEU PODER NA WEB

O JavaScript é uma linguagem de programação


popular que permite criar páginas da web
dinâmicas e interativas. É amplamente utilizado
em aplicativos da web, jogos, inteligência
artificial e muito mais. É uma linguagem versátil
e fácil de aprender, tornando-a ideal para
iniciantes e programadores experientes.

Agora você aprenderá desde as noções básicas até


as técnicas avançadas da linguagem. Nós
começaremos por discutir as bases da sintaxe do
JavaScript, incluindo variáveis, operadores,
estruturas de controle de fluxo e funções. Em
seguida, exploraremos a manipulação de
elementos da página web, incluindo eventos,
formulários e animações.

www.fullstackmaster.com.br
28
Você também aprenderá sobre o poder dos
objetos em JavaScript, incluindo como criar e
manipular objetos, herança e prototype. Além
disso, abordaremos tópicos avançados, como o
uso de bibliotecas e frameworks populares, como
React e Angular, e a criação de aplicativos da web
usando Node.js.

Este guia foi criado para ser um recurso completo


para aqueles que desejam aprender JavaScript,
sejam iniciantes ou programadores experientes.
Cada capítulo fornecerá exemplos práticos e
atividades para ajudá-lo a solidificar seus
conhecimentos. Ao final deste guia, você terá as
habilidades e conhecimentos necessários para
criar aplicativos da web incríveis e animados
usando JavaScript.

Então, prepare-se para mergulhar no mundo do


JavaScript e descobrir o poder da programação da
web!

As bases da Sintaxe JavaScript

JavaScript é uma das linguagens de programação


mais utilizadas no mundo atualmente. É uma
linguagem dinâmica, orientada a objetos e com
tipagem fraca. Isso significa que ela permite a
manipulação de tipos de dados de diferentes
formas, oferecendo uma grande flexibilidade ao
programador.

www.fullstackmaster.com.br
29
Mas antes de mergulhar nos recursos avançados
da linguagem, é fundamental conhecer suas
bases. A sintaxe do JavaScript é simples, mas ao
mesmo tempo poderosa, e é por isso que é
importante que se tenha um bom conhecimento
dela.

Uma das coisas mais importantes a se saber sobre


a sintaxe do JavaScript é que ele é sensível à
formatação. Isso significa que é necessário
prestar atenção à indentação, às vírgulas, às
aspas e a outros detalhes que podem parecer
pequenos, mas que são fundamentais para o
correto funcionamento do código.

Além disso, o JavaScript utiliza o ponto e vírgula


(;) para separar instruções. Isso é importante
porque ele permite que você execute várias ações
em uma única linha de código.

Por exemplo:

var x = 10;
var y = 20;
var z = x + y;

Outra característica importante da sintaxe do


JavaScript é que ele utiliza as chaves ({}) para
delimitar o escopo de uma função ou um bloco de
código.

www.fullstackmaster.com.br
30
Isso é importante porque permite que você
agrupe várias instruções em uma única seção e
garanta que elas sejam executadas juntas. Por
exemplo:

function soma(x, y) {
return x + y;
}

Além disso, o JavaScript também utiliza


parênteses () para delimitar os argumentos de
uma função. Isso é importante porque permite
que você passe informações para a função e
receba resultados dela. Por exemplo:

var resultado = soma(10, 20);

Em resumo, a sintaxe do JavaScript é simples e


intuitiva, mas é importante prestar atenção aos
detalhes para garantir o correto funcionamento
do código. É por isso que é fundamental que se
tenha um bom conhecimento das suas bases antes
de se aventurar pelos seus recursos avançados.

Este é apenas o começo da nossa jornada pelo


mundo do JavaScript. A partir daqui, vamos
descobrir juntos as muitas possibilidades que
essa linguagem oferece!

www.fullstackmaster.com.br
31
Variáveis e tipos de dados em JavaScript

Antes de começarmos a escrever código em


JavaScript, é importante compreender os
diferentes tipos de dados e como usar variáveis
para armazená-los. Em JavaScript, existem sete
tipos de dados primitivos: números, cadeias de
caracteres, lógicos, undefined, null, simbolos e
bigint. Vamos explorar cada um deles em
detalhes.

Números são usados para representar valores


numéricos e podem ser inteiros ou ponto
flutuante. Por exemplo, você pode armazenar o
número 42 em uma variável da seguinte maneira:

let idade = 42;

Cadeias de caracteres, ou strings, são usadas para


representar texto. Elas são sempre envolvidas por
aspas duplas ou aspas simples. Por exemplo:

let nome = "João";

Lógicos são valores verdadeiros ou falsos. Eles


são usados frequentemente em estruturas de
controle de fluxo para tomar decisões no código.
Por exemplo:
let estáChovendo = true;

www.fullstackmaster.com.br
32
Undefined é um valor especial que indica que
uma variável não foi definida. Por exemplo:

let x;
console.log(x); // Output: undefined

Null é um valor especial que indica que uma


variável foi definida como nulo ou vazio. Por
exemplo:

let y = null;
console.log(y); // Output: null

Simbolos são valores únicos usados como


identificadores em objetos. Eles são criados
usando a função Symbol(). Por exemplo:

let id = Symbol();

BigInt é um novo tipo de dados introduzido


recentemente em JavaScript que permite
representar inteiros de precisão arbitrária.

Eles são criados adicionando "n" ao final do


número. Por exemplo:

let numeroGrande = 12345678901234567890n;

Agora que você entende os diferentes tipos de


dados em JavaScript, está pronto para começar a
usar variáveis para armazená-los.

www.fullstackmaster.com.br
33
Manipulação de Elementos da Página Web com
JavaScript

Uma das principais vantagens do JavaScript é sua


capacidade de manipular elementos da página
web. Isso significa que você pode criar aplicações
interativas que respondem a ações do usuário e
atualizam a página em tempo real.

A primeira coisa que você precisa saber é como


selecionar elementos na página. Isso pode ser
feito com o método document.querySelector(),
que permite selecionar elementos por seu nome
de tag, classe ou ID.

Por exemplo:

var botao = document.querySelector("button");


var paragrafo = document.querySelector(".texto");

Uma vez que você tenha selecionado um


elemento, pode manipulá-lo de várias maneiras.
Por exemplo, você pode atualizar o conteúdo de
um elemento com o método innerHTML:

paragrafo.innerHTML = "Olá, mundo!";

Você também pode adicionar ou remover classes


com os métodos classList.add() e
classList.remove():

botao.classList.add("ativo");
botao.classList.remove("ativo");

www.fullstackmaster.com.br
34

Além disso, você pode responder a eventos, como


cliques de botão, com o método
addEventListener().

Por exemplo:

botao.addEventListener("click", function() {
paragrafo.innerHTML = "Você clicou no botão!";
});

Outra coisa que você pode fazer com JavaScript é


trabalhar com formulários. Por exemplo, você
pode pegar os valores dos campos de formulário
com o método value:

var nome =
document.querySelector("input[name=nome]").val
ue;
var email =
document.querySelector("input[name=email]").val
ue;

E você também pode validar os dados de


formulário antes de enviá-los para o servidor,
verificando se os campos estão preenchidos ou se
o email está no formato correto, por exemplo.

Por último, mas não menos importante, você pode


criar animações incríveis com JavaScript.

www.fullstackmaster.com.br
35

Isso pode ser feito usando o método setInterval(),


que permite atualizar a página em intervalos
regulares, ou o método requestAnimationFrame(),
que sincroniza as animações com a taxa de
atualização da tela.

Em resumo, a manipulação de elementos da


página web com JavaScript é uma habilidade
crucial para qualquer desenvolvedor front-end. É
possível criar aplicações interativas, manipular
elementos da página, trabalhar com formulários e
criar animações incríveis.

Aprender a manipulação de elementos é o


primeiro passo para criar aplicações web
poderosas e incríveis.

Lembre-se de que a manipulação de elementos da


página web é apenas uma parte do que o
JavaScript pode fazer. Existem muitas outras
coisas incríveis que você pode fazer com esse
poderoso idioma de programação. Portanto,
continue aprendendo e explorando o JavaScript
para descobrir suas possibilidades ilimitadas!

O Poder dos objetos em JavaScript

Os objetos são uma das partes mais importantes e


poderosas do JavaScript. Eles permitem que você
agrupe dados e funcionalidades relacionadas em
uma única entidade, o que facilita a organização
e a reutilização de código.

www.fullstackmaster.com.br
36

Os objetos são criados usando a notação de


chaves {} e podem conter propriedades, que são
simplesmente pares de chave-valor que
descrevem características do objeto. Além disso,
os objetos também podem conter métodos, que
são funções que executam ações relacionadas ao
objeto.

O poder dos objetos em JavaScript vem de sua


capacidade de encapsulamento e herança. O
encapsulamento permite que você esconda
detalhes de implementação de outras partes do
seu código, permitindo que você altere a
implementação do objeto sem afetar o resto do
código. A herança permite que você crie novos
objetos a partir de objetos existentes, herdando
todas as suas propriedades e métodos.

Além disso, o JavaScript suporta programação


orientada a objetos, que é uma técnica de
programação que permite que você modele seus
dados e comportamentos como objetos do mundo
real. Isso torna mais fácil trabalhar com dados
complexos e criar aplicações avançadas.

Em resumo, o poder dos objetos em JavaScript é


inestimável. Eles permitem que você organize e
reutilize seu código de forma eficiente, crie
aplicações avançadas e modele seus dados como
objetos do mundo real.

www.fullstackmaster.com.br
37

Portanto, é importante que você compreenda bem


como trabalhar com objetos em JavaScript para
aproveitar ao máximo suas possibilidades.

Como criar e manipular objetos, herança e


prototype com JavaScript

A criação de objetos em JavaScript é feita usando


a notação de chaves {}. Dentro dessas chaves,
você pode definir propriedades e métodos para o
objeto. Por exemplo:

var carro = {
marca: "Tesla",
modelo: "Model S",
ano: 2020,
acelerar: function() {
console.log("Acelerando...");
}
};

Você também pode criar objetos usando uma


função construtora, que é uma função especial
que é executada sempre que um novo objeto é
criado a partir dela. Por exemplo:

www.fullstackmaster.com.br
38

function Carro(marca, modelo, ano) {


this.marca = marca;
this.modelo = modelo;
this.ano = ano;
this.acelerar = function() {
console.log("Acelerando...");
};
}

var carro = new Carro("Tesla", "Model S", 2020);

A manipulação de objetos é feita usando a


notação de ponto. Por exemplo, para acessar a
propriedade "marca" do objeto "carro", você faria:
console.log(carro.marca); // imprime "Tesla"

A herança em JavaScript é implementada usando


o conceito de protótipos. Cada objeto tem um
protótipo que é outro objeto a partir do qual ele
herdou propriedades e métodos. Você pode criar
novos objetos a partir de outros objetos usando o
operador "new" e alterando o protótipo do objeto.
Por exemplo:

function Veiculo(marca, modelo, ano) {


this.marca = marca;
this.modelo = modelo;
this.ano = ano;
}

www.fullstackmaster.com.br
39

Veiculo.prototype.acelerar = function() {
console.log("Acelerando...");
};

function Carro(marca, modelo, ano) {


Veiculo.call(this, marca, modelo, ano);
}

Carro.prototype =
Object.create(Veiculo.prototype);
Carro.prototype.constructor = Carro;

var carro = new Carro("Tesla", "Model S", 2020);

Em resumo, criar e manipular objetos, herança e


protótipos em JavaScript é uma habilidade
importante para qualquer desenvolvedor front-
end. É importante que você compreenda bem
como trabalhar com objetos, herança e protótipos
para criar aplicações avançadas e organizadas.

www.fullstackmaster.com.br
40
BIBLIOTECAS FRONT-END

As bibliotecas front-end, como React, Vue e


Angular, são essenciais para a construção de
interfaces de usuário modernas e responsivas.
Essas bibliotecas permitem que os
desenvolvedores criem componentes reutilizáveis
​q ue podem ser facilmente integrados em
aplicativos da web.

Cada biblioteca possui suas próprias


características e métodos exclusivos de
programação, mas todas têm o objetivo comum de
simplificar o processo de desenvolvimento front-
end.

React, por exemplo, é uma biblioteca JavaScript


desenvolvida pelo Facebook. Ele utiliza uma
abordagem baseada em componentes, permitindo
que os desenvolvedores criem interfaces de
usuário altamente personalizáveis ​e flexíveis.

www.fullstackmaster.com.br
41
Vue, por outro lado, é uma biblioteca JavaScript
de código aberto que também utiliza uma
abordagem baseada em componentes. Ele é
conhecido por sua simplicidade e facilidade de
uso, além de sua grande variedade de recursos e
bibliotecas de terceiros. Ele também possui uma
documentação detalhada e uma forte comunidade
de desenvolvedores, tornando-o uma escolha
popular para projetos front-end.

Angular, por sua vez, é um framework front-end


desenvolvido pelo Google. Ele é uma solução
completa que inclui uma ampla gama de recursos
e funcionalidades para ajudar os desenvolvedores
a criar aplicativos da web escaláveis. Ele utiliza a
linguagem TypeScript, que adiciona recursos
extras ao JavaScript, como tipagem estática, e
torna o código mais fácil de ser mantido e
atualizado.

Em resumo, as bibliotecas front-end são


ferramentas valiosas para desenvolvedores que
desejam criar interfaces de usuário modernas e
eficientes. Cada biblioteca tem suas próprias
características e vantagens, mas todas são
projetadas para simplificar o processo de
desenvolvimento front-end e permitir que os
desenvolvedores criem aplicativos da web de alta
qualidade.

www.fullstackmaster.com.br
42
REACT: O FRAMEWORK FRONT-END QUE VOCÊ
PRECISA CONHECER

Se você é um desenvolvedor web ou está


pensando em se tornar um, certamente já ouviu
falar em React. Este é um dos frameworks mais
populares para a criação de interfaces de usuário
(UI) para aplicações web.

Mas o que torna o React tão especial? Por que


tantos desenvolvedores escolhem trabalhar com
ele? Neste capítulo, vamos explorar as respostas
a essas perguntas, além de aprender como usar o
React e criar alguns exemplos práticos.

O que é React?

React é um framework de código aberto mantido


pelo Facebook e pela comunidade de
desenvolvedores. Ele foi criado para simplificar o
processo de criação de interfaces de usuário para
aplicações web.

www.fullstackmaster.com.br
43
Com o React, os desenvolvedores podem criar
componentes de UI reutilizáveis e escaláveis, que
se atualizam automaticamente quando o estado
da aplicação é alterado.

O React utiliza uma linguagem de marcação


chamada JSX para criar elementos de UI. Ele
também utiliza uma abordagem baseada em
componentes, o que significa que cada parte da
interface é criada como um componente separado.
Isso permite que os desenvolvedores organizem
melhor seu código, tornando-o mais fácil de
entender e manter.

Por que usar o React?

Existem muitas razões pelas quais o React é uma


escolha popular entre os desenvolvedores web.
Aqui estão algumas das principais vantagens do
React:

1. Fácil de aprender: O React é fácil de aprender


e usar, especialmente se você já tem
experiência em desenvolvimento web.
2. Reutilização de código: Com o React, você
pode criar componentes de UI reutilizáveis, o
que significa que você pode usar o mesmo
código em diferentes partes da aplicação.
3. Velocidade e desempenho: O React é rápido e
eficiente, o que significa que as aplicações
criadas com ele tendem a ter um desempenho
melhor do que aquelas criadas com outros
frameworks.

www.fullstackmaster.com.br
44
4. Grande comunidade: O React tem uma grande
comunidade de desenvolvedores, o que significa
que há muitos recursos e ferramentas disponíveis
para ajudá-lo a criar suas aplicações.

Como usar o React?

Agora que você sabe o que é o React e por que


ele é tão popular, vamos aprender como usá-lo.
Aqui estão as etapas básicas para criar uma
aplicação React:

1. Instale o Node.js: O React é construído em


cima do Node.js, então você precisará instalá-
lo primeiro.
2. Crie um novo projeto React: Use o comando
"create-react-app" para criar um novo projeto
React.
3. Crie seus componentes: Use a linguagem de
marcação JSX para criar seus componentes de
UI.
4. Adicione estilos: Adicione estilos aos seus
componentes usando CSS ou uma biblioteca
de estilos como o Bootstrap.
5. Teste e publique sua aplicação: Teste sua
aplicação e publique-a na web para que
outros possam usá-la.

www.fullstackmaster.com.br
45
Exemplo prático

Para dar uma ideia de como o React funciona na


prática, vamos criar um componente simples de
lista de tarefas.

Crie um novo arquivo TaskList.js na pasta


src/components. Em seguida, podemos definir
nosso componente de lista de tarefas da seguinte
forma:

import React from 'react';

function TaskList(props) {
const { tasks } = props;

return (
<ul>
{tasks.map((task) => (
<li key={task.id}>{task.title}</li>
))}
</ul>
);
}

export default TaskList;

Nesse exemplo, nosso componente TaskList


recebe um array de tarefas (tasks) como
propriedade (props).

www.fullstackmaster.com.br
46
Em seguida, usamos o método map do JavaScript
para percorrer o array de tarefas e gerar uma lista
de itens HTML (<li>) para cada tarefa. O atributo
key é usado pelo React para identificar de forma
única cada item da lista.

Finalmente, exportamos nosso componente


usando o export default.

Agora podemos usar nosso componente em outro


lugar do nosso projeto, por exemplo no arquivo
App.js:

import React from 'react';


import TaskList from './components/TaskList';

function App() {
const tasks = [
{ id: 1, title: 'Comprar pão' },
{ id: 2, title: 'Lavar roupa' },
{ id: 3, title: 'Estudar React' },
];

return (
<div>
<h1>Minhas Tarefas</h1>
<TaskList tasks={tasks} />
</div>
);
}

export default App;

www.fullstackmaster.com.br
47
Nesse exemplo, importamos nosso componente
TaskList e o usamos dentro do componente App.
Passamos o array de tarefas tasks como
propriedade para o componente TaskList.

Quando nosso aplicativo é executado, o React


renderiza a lista de tarefas usando o componente
TaskList com base nas propriedades passadas.

Qualquer alteração nas propriedades do


componente ou no estado interno do componente
aciona a atualização da interface de usuário.

Espero que tenha gostado de aprender sobre o


React e como criar um componente simples de
lista de tarefas. Mas se você está interessado em
outras opções, outro framework JavaScript
popular e poderoso que vale a pena conhecer é o
Vue.js.

O Vue.js é uma biblioteca JavaScript para


construção de interfaces de usuário reativas e
complexas. Ele utiliza um sistema de
componentes baseado em templates, tornando
mais fácil a criação e manutenção de aplicativos
escaláveis.

Em nosso próximo tópico, vamos explorar mais


sobre o Vue.js e como ele pode ser utilizado para
criar aplicativos modernos e responsivos.
Continue!

www.fullstackmaster.com.br
48
VUE.JS: A BIBLIOTECA JAVASCRIPT PARA
CRIAÇÃO DE INTERFACES DE USUARIOS

Vue.js é uma biblioteca JavaScript de código


aberto que tem como objetivo facilitar a criação
de interfaces de usuário reativas e dinâmicas.
Desenvolvido por Evan You, o Vue.js é um dos
frameworks front-end mais populares do mercado,
com uma ampla comunidade de desenvolvedores
e recursos disponíveis.

Eficiência do Vue.js

A eficiência do Vue.js se dá por sua facilidade de


uso e curva de aprendizado baixa. Ele oferece
uma sintaxe simples e intuitiva que facilita a
criação de componentes reutilizáveis, o que torna
o desenvolvimento mais rápido e eficiente. Além
disso, o Vue.js oferece uma grande variedade de
recursos e bibliotecas de terceiros, tornando-o
uma ferramenta versátil e poderosa para o
desenvolvimento de aplicações web.

www.fullstackmaster.com.br
49
Para que serve o Vue.js?

O Vue.js é uma biblioteca focada em interfaces de


usuário, sendo utilizado principalmente para o
desenvolvimento de aplicações web dinâmicas e
responsivas.

Ele permite a criação de componentes


reutilizáveis e a manipulação de dados em tempo
real, o que é ideal para aplicativos que exigem
atualizações constantes de conteúdo e interação
com o usuário.

Exemplo prático de uso do Vue.js

Um exemplo prático de uso do Vue.js pode ser a


criação de um sistema de busca de produtos em
um site de e-commerce.

Para isso, podemos utilizar o Vue.js para criar um


componente de busca reutilizável que possa ser
integrado em diferentes páginas do site.

Primeiramente, criamos um componente Vue.js


chamado "SearchBar". Este componente contém
um input de busca e um botão de pesquisa, que
disparam uma ação quando o usuário clica no
botão ou pressiona a tecla Enter.

www.fullstackmaster.com.br
50
<template>
<div class="search-bar">
<input type="text" v-model="searchTerm"
@keydown.enter="search" placeholder="Buscar
produto...">
<button @click="search">Buscar</button>
</div>
</template>

<script>
export default {
data() {
return {
searchTerm: ''
}
},
methods: {
search() {
// lógica de busca do produto
}
}
}
</script>

Em seguida, podemos utilizar este componente


em diferentes páginas do site, como em uma
página de listagem de produtos:

www.fullstackmaster.com.br
51
<template>
<div class="product-list">
<search-bar></search-bar>
<div class="product-items">
<!-- lista de produtos -->
</div>
</div>
</template>

<script>
import SearchBar from './SearchBar.vue'

export default {
components: {
SearchBar
}
}
</script>

Com este exemplo, podemos ver como o Vue.js


pode ser utilizado para criar componentes
reutilizáveis e integráveis em diferentes páginas
de um site. Isso pode reduzir o tempo de
desenvolvimento e tornar o código mais
organizado e fácil de manter.

www.fullstackmaster.com.br
52
ANGULAR JS: CRIANDO APLICAÇÕES WEB DE
FORMA INTERATIVA E DINÂMICA

Angular JS é um framework JavaScript poderoso


que pode ajudá-lo a criar aplicativos da web
dinâmicos e interativos. Neste guia, exploraremos
todos os conceitos básicos do Angular JS e
mostraremos como usá-lo para criar aplicativos
incríveis.

O que é Angular JS?

Angular JS é um framework JavaScript de código


aberto que é mantido pelo Google. Ele foi
projetado para ajudar os desenvolvedores a criar
aplicativos da web dinâmicos e interativos, com
facilidade e rapidez.

O Angular JS é baseado em um padrão de design


chamado Model-View-Controller (MVC), que
separa a lógica de negócios da interface do
usuário. Isso torna mais fácil para os
desenvolvedores trabalharem em diferentes
partes do aplicativo ao mesmo tempo.

www.fullstackmaster.com.br
53
Por que usar o Angular JS?

O Angular JS tem muitos recursos que o tornam


uma excelente opção para o desenvolvimento de
aplicativos da web. Um dos principais benefícios
é a capacidade de criar aplicativos altamente
interativos e responsivos.

O Angular JS é capaz de atualizar a interface do


usuário automaticamente à medida que os dados
mudam, sem que o usuário precise atualizar a
página manualmente.

Além disso, o Angular JS tem muitos recursos que


podem ajudar a acelerar o desenvolvimento. Ele
inclui um sistema de injeção de dependência, que
facilita a criação de componentes reutilizáveis ​e o
gerenciamento de dependências.

Também possui um sistema de vinculação de


dados bidirecional, que permite que as alterações
em uma parte do aplicativo sejam refletidas em
outras partes, automaticamente.

Como começar com o Angular JS?

Se você é novo no Angular JS, pode ser um pouco


intimidante começar. Felizmente, há muitos
recursos disponíveis para ajudá-lo a começar.
Aqui estão algumas etapas para começar:

www.fullstackmaster.com.br
54
1. Instale o Angular JS

A primeira etapa para começar a usar o Angular JS


é instalá-lo. Você pode baixar o Angular JS
diretamente do site oficial, ou instalá-lo usando
um gerenciador de pacotes como o npm.

2. Aprenda o básico do Angular JS

Depois de instalar o Angular JS, é hora de


começar a aprender os conceitos básicos. Você
pode encontrar muitos tutoriais e guias on-line
que podem ajudá-lo a começar.

3. Experimente alguns projetos simples

Uma vez que você tenha aprendido o básico do


Angular JS, é hora de experimentá-lo. Comece
criando alguns projetos simples e veja como
funciona.

4. Desenvolva seu projeto

Depois de se sentir confortável com o Angular JS,


comece a desenvolver seu próprio projeto.
Certifique-se de seguir as melhores práticas e
padrões de design recomendados pelo Angular JS.

www.fullstackmaster.com.br
55
Para começar, vamos criar um exemplo simples
de uma lista de tarefas. A lista terá um formulário
para adicionar novas tarefas e a lista de tarefas
existentes. Vamos lá!

1. Configurando o ambiente

Antes de começarmos a escrever o código,


precisamos configurar o ambiente. Para isso,
vamos adicionar as seguintes dependências no
nosso projeto:

AngularJS: a biblioteca principal do AngularJS


Bootstrap: uma biblioteca de componentes
visuais para o HTML, CSS e JS
jQuery: uma biblioteca de funções JavaScript
que simplifica o acesso ao DOM

Para fazer isso, podemos adicionar os links para


os arquivos CDN no nosso arquivo HTML:

www.fullstackmaster.com.br
56
<!doctype html>
<html ng-app="taskApp">
<head>
<title>Lista de Tarefas</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap
/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/angula
rjs/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-
3.2.1.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/
3.3.7/js/bootstrap.min.js"></script>
</head>
<body ng-controller="taskController">
...
</body>
</html>

2. Criando o controlador

Agora que o ambiente está configurado, podemos


criar o controlador que irá gerenciar a nossa lista
de tarefas. Vamos criar um arquivo JavaScript
chamado "taskController.js" e adicionar o
seguinte código:

www.fullstackmaster.com.br
57
var app = angular.module("taskApp", []);
app.controller("taskController", function($scope) {
$scope.tasks = [];
$scope.addTask = function() {
$scope.tasks.push($scope.newTask);
$scope.newTask = "";
};
});

Nesse código, estamos criando um novo módulo


AngularJS chamado "taskApp" e um novo
controlador chamado "taskController".

O controlador tem uma lista de tarefas vazia e


uma função para adicionar novas tarefas à lista.

3. Adicionando o formulário

Agora que temos o controlador, podemos


adicionar o formulário na nossa página HTML:

www.fullstackmaster.com.br
58
<div class="container">
<h1>Lista de Tarefas</h1>
<form ng-submit="addTask()">
<div class="form-group">
<label for="newTask">Nova Tarefa:
</label>
<input type="text" class="form-control"
id="newTask" ng-model="newTask">
</div>
<button type="submit" class="btn btn-
primary">Adicionar Tarefa</button>
</form>
<hr>
<ul class="list-group">
<li class="list-group-item" ng-repeat="task
in tasks">{{ task }}</li>
</ul>
</div>

Nesse código, estamos criando um formulário que


chama a função "addTask()" quando é submetido.
O formulário tem um campo de texto para digitar
a nova tarefa e um botão para adicionar a tarefa à
lista.

Também adicionamos uma lista HTML usando a


diretiva "ng-repeat" para exibir as tarefas
existentes na lista.

www.fullstackmaster.com.br
59
4. Testando o exemplo

Agora que criamos nosso exemplo de lista de


tarefas com AngularJS, vamos testá-lo. Podemos
fazer isso abrindo a página HTML no navegador e
tentando adicionar algumas tarefas à lista.

Ao digitar uma tarefa no campo de texto e clicar


no botão "Adicionar Tarefa", a tarefa deve ser
adicionada à lista abaixo do formulário. Podemos
testar também se a lista está sendo atualizada
corretamente quando adicionamos mais tarefas.

Além disso, podemos testar a validação do


formulário. Se deixarmos o campo de texto vazio
e tentarmos adicionar uma tarefa, a tarefa não
deve ser adicionada à lista e o campo de texto
deve continuar vazio.

Podemos também fazer testes automatizados


utilizando ferramentas de teste de unidade e
integração. Para isso, podemos usar o framework
Jasmine em conjunto com o Karma para executar
os testes em um navegador automatizado.

Um exemplo de teste de unidade seria testar se a


função "addTask()" adiciona corretamente uma
tarefa à lista. Podemos escrever um teste assim:

www.fullstackmaster.com.br
60
describe('TaskController', function() {
beforeEach(module('taskApp'));

var $controller, $rootScope;

beforeEach(inject(function(_$controller_,
_$rootScope_) {
$controller = _$controller_;
$rootScope = _$rootScope_;
}));

describe('addTask', function() {
it('should add a task to the list', function() {
var $scope = $rootScope.$new();
var controller =
$controller('taskController', { $scope: $scope });

$scope.newTask = 'Test task';


$scope.addTask();

expect($scope.tasks).toContain('Test
task');
});
});
});

Nesse teste, estamos criando um novo escopo


para o controlador, simulando a digitação de uma
tarefa e chamando a função "addTask()". Em
seguida, estamos testando se a tarefa foi
adicionada corretamente à lista.

www.fullstackmaster.com.br
61
Além disso, podemos fazer testes de integração
para testar se o formulário está funcionando
corretamente. Um exemplo de teste de integração
seria simular a digitação de uma tarefa no campo
de texto e verificar se ela é exibida corretamente
na lista após ser adicionada.

www.fullstackmaster.com.br
62

DESENVOLVIMENTO
3 BACK-END
O back-end é uma parte fundamental de
qualquer aplicação web. É responsável por
gerenciar a lógica do negócio, o
armazenamento de dados e a comunicação
com outras partes da aplicação, como o
front-end. Para que o back-end funcione
corretamente, é necessário utilizar uma
linguagem de servidor adequada, um banco
de dados eficiente e API's bem construídas.

Algumas das linguagens de servidor mais


populares são Node.js, Ruby on Rails e
Django. Cada uma dessas linguagens possui
suas próprias vantagens e desvantagens,
dependendo das necessidades do projeto. Por
exemplo, Node.js é conhecido por ser
extremamente escalável e eficiente em
aplicações com muitos usuários simultâneos,
enquanto Ruby on Rails é uma escolha
popular para projetos que exigem uma rápida
prototipagem.

Em relação aos bancos de dados, há várias


opções disponíveis, como MySQL, MongoDB e
PostgreSQL.

www.fullstackmaster.com.br
63
Cada banco de dados tem suas próprias
características e benefícios. MySQL é uma escolha
popular para aplicações de grande escala que
exigem alta disponibilidade e confiabilidade,
enquanto o MongoDB é uma escolha popular para
projetos que exigem flexibilidade e
escalabilidade.

Por fim, as API's são uma parte importante do


back-end, permitindo que diferentes partes da
aplicação se comuniquem de forma eficiente. As
API's podem ser usadas para fornecer dados para
o front-end, integrar serviços externos ou
permitir que outros desenvolvedores criem
aplicativos que se integrem com a sua aplicação.

É importante construir API's bem projetadas e


documentadas para garantir uma comunicação
eficiente e fácil integração com outras partes da
aplicação.

www.fullstackmaster.com.br
64
LINGUAGENS DE SERVIDOR

As linguagens de servidor são utilizadas para


criar sistemas web dinâmicos e escaláveis, que
conseguem lidar com uma grande quantidade de
acessos simultâneos. Elas fornecem uma ampla
variedade de recursos e funcionalidades para o
desenvolvimento de aplicativos web robustos e
seguros.

A seguir, serão apresentadas algumas das


principais linguagens de servidor utilizadas no
mercado:

1. Node.js

O Node.js é uma plataforma baseada em


JavaScript que permite a criação de aplicações
web escaláveis e de alta performance. Ele é ideal
para aplicações que precisam lidar com uma
grande quantidade de requisições simultâneas,
como aplicações de streaming, chats em tempo
real e redes sociais.

www.fullstackmaster.com.br
65

2. Ruby on Rails

O Ruby on Rails é um framework de código aberto


que utiliza a linguagem Ruby para a criação de
aplicações web. Ele é conhecido por ser fácil de
aprender e por ser utilizado por empresas como
Airbnb, GitHub e Shopify.

3. Django

O Django é um framework web de código aberto


escrito em Python. Ele é utilizado para a criação
de aplicações web escaláveis e seguras, e é
conhecido por sua facilidade de uso e por sua
grande comunidade de desenvolvedores.

4. PHP

O PHP é uma linguagem de programação utilizada


para a criação de aplicações web. Ele é conhecido
por ser fácil de aprender e por sua
compatibilidade com diversos bancos de dados e
sistemas operacionais.

5. Java

O Java é uma linguagem de programação utilizada


para o desenvolvimento de aplicações web. Ele é
conhecido por sua segurança, escalabilidade e
pela sua grande comunidade de desenvolvedores.

www.fullstackmaster.com.br
66

As linguagens de servidor são essenciais para a


criação de aplicações web robustas, escaláveis e
seguras. Elas fornecem uma ampla variedade de
recursos e funcionalidades para o
desenvolvimento de aplicativos web, permitindo
que eles sejam customizados de acordo com as
necessidades de cada projeto.

Agora que já conhecemos um pouco sobre as


linguagens de servidor, vamos dar uma olhada em
um exemplo prático de utilização do Node.js para
criar um sistema de chat em tempo real.

Para criar um sistema de chat em tempo real


utilizando o Node.js, podemos utilizar o
framework Socket.io.

O Socket.io permite a criação de comunicação em


tempo real entre o servidor e o cliente, tornando
possível a criação de sistemas de chat, jogos
multiplayer, entre outras aplicações.

Vamos ver um exemplo prático de como criar um


sistema de chat em tempo real utilizando o
Socket.io e o Node.js:

www.fullstackmaster.com.br
67
1. Instale o Socket.io e o Express:

npm install socket.io express

2. Crie um arquivo index.js com o seguinte


código:

const express = require('express');


const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

app.use(express.static(__dirname + '/public'));

app.get('/', (req, res) => {


res.sendFile(__dirname + '/index.html');
});

io.on('connection', (socket) => {


console.log('Usuário conectado');

socket.on('chat message', (msg) => {


console.log('Mensagem: ' + msg);
io.emit('chat message', msg);
});

socket.on('disconnect', () => {
console.log('Usuário desconectado');
});
});

http.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
www.fullstackmaster.com.br
68
1. Instale o Socket.io e o Express:

npm install socket.io express

2. Crie um arquivo index.js com o seguinte


código:

const express = require('express');


const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

app.use(express.static(__dirname + '/public'));

app.get('/', (req, res) => {


res.sendFile(__dirname + '/index.html');
});

io.on('connection', (socket) => {


console.log('Usuário conectado');

socket.on('chat message', (msg) => {


console.log('Mensagem: ' + msg);
io.emit('chat message', msg);
});

socket.on('disconnect', () => {
console.log('Usuário desconectado');
});
});

http.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
www.fullstackmaster.com.br
69
3. Crie um arquivo index.html com o seguinte
código:

<!DOCTYPE html>
<html>
<head>
<title>Sistema de Chat em Tempo Real</title>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-
3.6.0.min.js"></script>
<script>
$(function () {
var socket = io();

$('form').submit(function(e) {
e.preventDefault();
socket.emit('chat message',
$('#mensagem').val());
$('#mensagem').val('');
return false;
});

socket.on('chat message', function(msg) {


$('#mensagens').append($('<li>').text(msg));
});
});
</script>
</head>
<body>
<h1>Sistema de Chat em Tempo Real</h1>
<ul id="mensagens"></ul>
<form action="">

www.fullstackmaster.com.br
70
<input id="mensagem" autocomplete="off" />
<button>Enviar</button>
</form>
</body>
</html>

4. Inicie o servidor com o seguinte comando:

node index.js

5. Acesse http://localhost:3000 no seu navegador


e comece a enviar mensagens.

Pronto! Agora você tem um sistema de chat em


tempo real utilizando o Node.js e o Socket.io.

Neste exemplo, quando um usuário envia uma


mensagem, o servidor envia a mensagem para
todos os usuários conectados ao mesmo tempo,
tornando possível a comunicação em tempo real
entre os usuários.

www.fullstackmaster.com.br
71
BANCO DE DADOS

Os bancos de dados são uma parte essencial do


desenvolvimento de software, uma vez que
permitem o armazenamento, organização e
recuperação de informações importantes para as
aplicações. Existem vários tipos de bancos de
dados, desde os tradicionais bancos de dados
relacionais, como o MySQL e PostgreSQL, até os
bancos de dados NoSQL, como o MongoDB e
Cassandra.

Os bancos de dados relacionais são os mais


utilizados em sistemas de gerenciamento de
banco de dados (DBMS), e têm como principal
característica o armazenamento de informações
em tabelas, com relações definidas entre elas. Já
os bancos de dados NoSQL têm uma estrutura de
dados mais flexível e escalável, o que os torna
ideais para aplicações que precisam armazenar
grandes quantidades de dados em ambientes
distribuídos.

www.fullstackmaster.com.br
72
Neste capítulo, vamos explorar os diferentes
tipos de bancos de dados e suas principais
características. Além disso, vamos mostrar
exemplos de como utilizar alguns dos bancos de
dados mais populares, incluindo o MySQL,
MongoDB e PostgreSQL, para armazenar e
recuperar informações em aplicações web. Com
essas informações, você poderá escolher o tipo de
banco de dados mais adequado para o seu projeto
e implementá-lo com confiança.

O MySQL é um dos bancos de dados relacionais


mais populares do mundo, conhecido por sua
facilidade de uso, desempenho e confiabilidade.
Ele é amplamente utilizado em aplicações web,
desde pequenos projetos até grandes empresas,
graças à sua capacidade de lidar com grandes
volumes de dados e alta disponibilidade.

Uma das principais vantagens do MySQL é sua


flexibilidade. Ele suporta vários sistemas
operacionais, como Windows, Linux e MacOS, e
pode ser integrado facilmente com várias
linguagens de programação, como PHP, Python,
Java e C#.

www.fullstackmaster.com.br
73
Além disso, o MySQL oferece uma ampla gama de
recursos avançados, como replicação, clustering e
recuperação de desastres.

Outra vantagem do MySQL é sua escalabilidade.


Ele pode ser facilmente configurado para lidar
com um grande número de usuários simultâneos e
suporta várias conexões de banco de dados ao
mesmo tempo. Além disso, o MySQL possui uma
arquitetura modular, o que significa que é
possível adicionar ou remover recursos de acordo
com as necessidades do projeto.

O MySQL também é conhecido por sua segurança.


Ele oferece suporte para criptografia de dados em
trânsito e em repouso, autenticação baseada em
certificados SSL/TLS, e suporte para autenticação
baseada em criptografia. Além disso, o MySQL
permite o uso de políticas de senha complexas e
a verificação de senhas em relação a regras pré-
definidas.

Em termos de desempenho, o MySQL é conhecido


por sua rapidez e eficiência. Ele usa uma
arquitetura de armazenamento em cache para
acelerar as consultas, além de oferecer
otimizações para consultas complexas e
indexação de dados. Além disso, o MySQL suporta
várias técnicas de otimização, como
particionamento de tabelas, criação de índices, e
cache de consulta.

www.fullstackmaster.com.br
74
Em resumo, o MySQL é um banco de dados
confiável, flexível, escalável e seguro, que
oferece excelente desempenho e eficiência. É
uma excelente escolha para aplicações web que
requerem grande capacidade de armazenamento e
alta disponibilidade.

Para utilizar o MySQL em um projeto, é


necessário instalar o banco de dados no servidor
e, em seguida, criar uma conexão com o banco de
dados a partir da aplicação. A linguagem SQL é
utilizada para realizar consultas e operações de
manipulação de dados no banco de dados.

O MongoDB é um banco de dados NoSQL


orientado a documentos, que se tornou muito
popular na comunidade de desenvolvimento de
software nos últimos anos.

Diferente dos bancos de dados relacionais


tradicionais, o MongoDB armazena dados em
documentos BSON (uma representação binária do
formato JSON), o que o torna mais flexível e
escalável.

www.fullstackmaster.com.br
75
Uma das principais vantagens do MongoDB é sua
flexibilidade. Ele suporta vários tipos de dados,
incluindo números, strings, datas, objetos, arrays
e muito mais. Além disso, ele não requer uma
estrutura de tabela pré-definida, o que significa
que os dados podem ser adicionados ou
modificados sem a necessidade de reestruturar o
banco de dados.

Outra vantagem do MongoDB é sua


escalabilidade. Ele é capaz de lidar com grandes
volumes de dados e suporta a replicação e a
fragmentação (sharding) dos dados, permitindo
que ele seja facilmente escalado
horizontalmente. Além disso, o MongoDB suporta
vários sistemas operacionais e é facilmente
integrado com várias linguagens de programação,
como Java, Python, Ruby e Node.js.

O MongoDB também é conhecido por sua


eficiência e desempenho. Ele usa um sistema de
indexação para acelerar as consultas, além de
suportar consultas complexas e operações de
agregação de dados. Além disso, o MongoDB usa
o padrão de leitura-escrita lock para garantir a
consistência dos dados, o que torna as operações
de escrita muito rápidas.

Outra vantagem do MongoDB é sua facilidade de


uso. Ele tem uma sintaxe simples e fácil de
entender, e oferece uma variedade de
ferramentas para gerenciamento e administração
do banco de dados.

www.fullstackmaster.com.br
76
Além disso, o MongoDB é capaz de se integrar
com outras ferramentas de gerenciamento, como
o MongoDB Compass, que permite visualizar e
manipular os dados de forma mais fácil.

Em termos de segurança, o MongoDB oferece uma


variedade de recursos para proteger os dados,
como autenticação e criptografia de dados em
trânsito. Além disso, ele suporta uma variedade
de plugins de segurança para garantir a
integridade dos dados.

Em resumo, o MongoDB é um banco de dados


NoSQL flexível, escalável, eficiente e fácil de
usar, que oferece uma variedade de recursos
avançados e de segurança. É uma excelente
escolha para projetos que requerem uma alta
escalabilidade e flexibilidade de dados.

Para utilizar o MongoDB em um projeto, é


necessário instalar o banco de dados no servidor
e, em seguida, criar uma conexão com o banco de
dados a partir da aplicação. O MongoDB usa uma
linguagem de consulta chamada MongoDB Query
Language (MQL) para realizar consultas e
operações de manipulação de dados no banco de
dados.

www.fullstackmaster.com.br
77

O PostgreSQL é um sistema de gerenciamento de


banco de dados relacional de código aberto, que
se destaca por sua robustez, estabilidade e
recursos avançados. Ele foi criado em 1986 e,
desde então, tem sido amplamente utilizado em
empresas e projetos de grande porte.

Uma das principais vantagens do PostgreSQL é


sua capacidade de lidar com grandes volumes de
dados e transações simultâneas. Ele suporta
transações ACID (Atomicidade, Consistência,
Isolamento e Durabilidade), o que garante a
integridade dos dados e evita problemas de
concorrência. Além disso, ele suporta várias
técnicas de indexação e otimização de consultas,
o que o torna muito eficiente em termos de
desempenho.

Outra vantagem do PostgreSQL é sua


flexibilidade. Ele suporta vários tipos de dados,
incluindo números, strings, datas, objetos, arrays
e muito mais. Além disso, ele permite a criação
de funções e procedimentos armazenados em
várias linguagens de programação, o que o torna
muito versátil e adaptável a diferentes
necessidades.

www.fullstackmaster.com.br
78
O PostgreSQL também é conhecido por sua
segurança. Ele suporta vários recursos de
segurança, como autenticação, criptografia de
dados em trânsito e em repouso, e controle de
acesso baseado em papéis. Além disso, ele tem
uma comunidade ativa e uma equipe dedicada de
desenvolvedores que trabalham continuamente
para melhorar sua segurança e estabilidade.

Outra vantagem do PostgreSQL é sua facilidade


de uso. Ele tem uma sintaxe simples e fácil de
entender, e oferece uma variedade de
ferramentas para gerenciamento e administração
do banco de dados. Além disso, ele tem uma
grande quantidade de recursos disponíveis, como
a capacidade de criar triggers, índices e views, o
que permite uma maior flexibilidade na
modelagem de dados.

Em resumo, o PostgreSQL é um sistema de


gerenciamento de banco de dados relacional
robusto, estável, eficiente, seguro e fácil de usar,
que oferece uma variedade de recursos
avançados. É uma excelente escolha para projetos
que requerem grande escalabilidade e
flexibilidade de dados.

Para utilizar o PostgreSQL em um projeto, é


necessário instalar o banco de dados no servidor
e, em seguida, criar uma conexão com o banco de
dados a partir da aplicação. O PostgreSQL usa a
linguagem SQL para realizar consultas e
operações de manipulação de dados no banco de
dados.
www.fullstackmaster.com.br
79

As APIs, ou Application Programming Interfaces,


são conjuntos de protocolos, ferramentas e
padrões que permitem a comunicação entre
diferentes sistemas e aplicativos. Elas são a base
para muitas aplicações modernas, permitindo que
diferentes serviços se comuniquem entre si e
troquem informações de forma rápida e eficiente.

As APIs permitem que desenvolvedores acessem


recursos e funcionalidades específicas de outros
sistemas, como dados, processamento de
informações e funcionalidades de software. Elas
permitem que aplicativos e serviços se integrem
de forma transparente, fornecendo acesso a
informações e recursos em tempo real.

As APIs podem ser de diferentes tipos, como


RESTful, SOAP, XML-RPC, entre outras. Elas
também podem ser públicas ou privadas,
dependendo da finalidade e do tipo de
informação que elas fornecem.

www.fullstackmaster.com.br
80

Para usar uma API, um desenvolvedor geralmente


precisa se registrar na plataforma que oferece a
API e obter uma chave de acesso ou token. Com a
chave, ele pode enviar solicitações para a API e
receber respostas contendo as informações
solicitadas.

As APIs são uma parte crucial da arquitetura de


software moderna e são amplamente utilizadas
em uma variedade de aplicações, como
aplicativos móveis, serviços da web, redes sociais,
jogos e muito mais. Elas permitem que aplicativos
e serviços sejam integrados e compartilhem
informações em tempo real, o que pode melhorar
a experiência do usuário e a eficiência do
software.

Em conclusão, as APIs são uma parte fundamental


da tecnologia moderna e são essenciais para o
desenvolvimento de aplicativos e serviços que
precisam se integrar e trocar informações em
tempo real. Elas são uma ferramenta valiosa para
desenvolvedores e empresas que desejam criar
soluções inovadoras e eficientes.

www.fullstackmaster.com.br
81

Se você deseja se tornar um desenvolvedor full-


stack, o Pacote Full Stack Master é a escolha
certa para você. Este pacote oferece um conjunto
completo de cursos e treinamentos em várias
tecnologias de desenvolvimento, incluindo front-
end, back-end, bancos de dados, APIs e muito
mais.

Com o Pacote Full Stack Master, você terá acesso


a conteúdo de alta qualidade, instrutores
experientes e uma comunidade ativa de
desenvolvedores. Você aprenderá habilidades
valiosas que o ajudarão a progredir em sua
carreira de desenvolvedor, melhorar sua
eficiência e aumentar sua capacidade de criar
soluções inovadoras.

Não perca esta oportunidade de se tornar um


desenvolvedor full-stack de sucesso. Adquira
agora o Pacote Full Stack Master e dê o primeiro
passo em direção a uma carreira de sucesso em
um dos mercados mais promissores da atualidade.

www.fullstackmaster.com.br
82

DESENVOLVIMENTO
4 DE APLICAÇÕES WEB
Neste capítulo, vamos explorar o
desenvolvimento de aplicações web, desde a
criação de uma aplicação full-stack completa
até o processo de testes em desenvolvimento
de software e deploy de aplicações.

Uma aplicação web full-stack envolve a


criação de um frontend interativo e um
backend funcional que trabalham juntos para
fornecer uma experiência de usuário perfeita.
Abordaremos também a importância dos
testes em desenvolvimento de software e
como eles podem ajudar a garantir a
qualidade da aplicação.

Finalmente, discutiremos o processo de


deploy de aplicações e os principais desafios
que podem surgir ao colocar uma aplicação
em produção.

www.fullstackmaster.com.br
83
CRIAÇÃO DE UMA APLICAÇÃO FULL-STACK
COMPLETA

vamos mostrar como criar uma aplicação web


full-stack completa, passo a passo, usando um
exemplo real. Para isso, vamos criar uma
aplicação de gerenciamento de tarefas, usando as
seguintes tecnologias:

Frontend: React.js
Backend: Node.js com o framework Express.js
Banco de Dados: MongoDB

Passo 1: Definir os requisitos

Antes de começar a desenvolver a aplicação, é


necessário definir os requisitos. Para nossa
aplicação de gerenciamento de tarefas, os
requisitos são:

O usuário deve ser capaz de adicionar,


remover e editar tarefas.
O usuário deve ser capaz de marcar as tarefas
como concluídas.
As tarefas devem ser armazenadas em um
banco de dados

Passo 2: Criar o ambiente de desenvolvimento

Para criar o ambiente de desenvolvimento, vamos


instalar as seguintes ferramentas:

Node.js
MongoDB
www.fullstackmaster.com.br
84
Editor de código de sua preferência (VS Code,
Sublime Text, etc.)

Passo 3: Criar o backend

Vamos começar criando o backend da aplicação.


Para isso, vamos criar uma nova pasta e executar
os seguintes comandos:

npm init -y
npm install express body-parser cors mongoose

Isso criará um novo projeto Node.js e instalará as


dependências necessárias. Em seguida, vamos
criar um arquivo server.js e adicionar o seguinte
código:

const express = require('express');


const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');

const app = express();


const port = 4000;

app.use(cors());
app.use(bodyParser.json());

mongoose.connect('mongodb://localhost:27017/to
do', { useNewUrlParser: true, useUnifiedTopology:
true });
const connection = mongoose.connection;

www.fullstackmaster.com.br
85
connection.once('open', () => {
console.log('MongoDB database connection
established successfully');
});

app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});

Esse código cria um servidor express, conecta-se


ao banco de dados MongoDB e define a porta em
que o servidor irá escutar. Neste ponto, se
executarmos o comando node server.js, o servidor
estará funcionando.

Passo 4: Criar o modelo de dados

Agora que o backend está funcionando,


precisamos definir o modelo de dados para as
tarefas. Vamos criar um arquivo task.js na pasta
models com o seguinte código:

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const taskSchema = new Schema({


description: { type: String, required: true },
completed: { type: Boolean, required: true }
}, {
timestamps: true,
});

www.fullstackmaster.com.br
86
const Task = mongoose.model('Task', taskSchema);

module.exports = Task;

Esse código define um modelo de dados para as


tarefas com as seguintes propriedades: descrição e
concluída. O parâmetro timestamps: true adiciona
automaticamente as propriedades createdAt e
updatedAt para cada tarefa.

Passo 5: Criar as rotas

Agora que temos o modelo de dados, precisamos criar


as rotas para a nossa API RESTful. Vamos criar um
arquivo tasks.js na pasta routes com o seguinte
código:

const router = require('express').Router();


let Task = require('../models/task.model');

router.route('/').get((req, res) => {


Task.find()
.then(tasks => res.json(tasks))
.catch(err => res.status(400).json(`Error: ${err}`));
});

router.route('/:id').get((req, res) => {


Task.findById(req.params.id)
.then(task => res.json(task))
.catch(err => res.status(400).json(`Error: ${err}`));
});

www.fullstackmaster.com.br
87
router.route('/add').post((req, res) => {
const description = req.body.description;
const completed = req.body.completed;

const newTask = new Task({


description,
completed
});

newTask.save()
.then(() => res.json('Task added!'))
.catch(err => res.status(400).json(`Error: ${err}`));
});

router.route('/:id').delete((req, res) => {


Task.findByIdAndDelete(req.params.id)
.then(() => res.json('Task deleted.'))
.catch(err => res.status(400).json(`Error: ${err}`));
});

router.route('/update/:id').post((req, res) => {


Task.findById(req.params.id)
.then(task => {
task.description = req.body.description;
task.completed = req.body.completed;

task.save()
.then(() => res.json('Task updated!'))
.catch(err => res.status(400).json(`Error: ${err}`));
})
.catch(err => res.status(400).json(`Error: ${err}`));
});

module.exports = router;

www.fullstackmaster.com.br
88
Esse código cria as rotas necessárias para a nossa
API, incluindo rotas para listar todas as tarefas, listar
uma tarefa específica, adicionar uma nova tarefa,
excluir uma tarefa e atualizar uma tarefa existente.

Passo 6: Criar o frontend

Agora que o backend está funcionando, podemos


criar o frontend da aplicação. Para isso, vamos criar
uma nova pasta e executar os seguintes comandos:

npx create-react-app frontend


cd frontend
npm install axios bootstrap react-router-dom

Isso criará um novo projeto React.js e instalará as


dependências necessárias. Em seguida, vamos criar
uma pasta components e criar um arquivo Task.js
com o seguinte código:

import React from 'react';


import axios from 'axios';

export default class Task extends React.Component {


constructor(props) {
super(props);

this.deleteTask = this.deleteTask.bind(this);

this.state = {
description: '',
completed: false,
}
}
www.fullstackmaster.com.br
componentDidMount() {
89
axios.get(`http://localhost:4000/tasks/${this.props.matc
h.params.id}`)
.then(response => {
this.setState({
description: response.data.description,
completed: response.data.completed,
})
})
.catch(error => {
console.log(error);
});
}

deleteTask() {

axios.delete(`http://localhost:4000/tasks/${this.props.m
atch.params.id}`)
.then(response => {
console.log(response.data);
});

this.props.history.push('/');
}

render() {
return (
<div>
<h3>{this.state.description}</h3>
<p>Completed: {this.state.completed ? 'Yes' : 'No'}
</p>
<button onClick={this.deleteTask}>Delete
Task</button>
</div>
)
}
} www.fullstackmaster.com.br
Esse código cria um componente React que mostra os 90
detalhes de uma tarefa e permite que o usuário a
exclua.

Em seguida, vamos criar um arquivo EditTask.js com o


seguinte código:

import React from 'react';


import axios from 'axios';

export default class EditTask extends React.Component


{
constructor(props) {
super(props);

this.onChangeDescription =
this.onChangeDescription.bind(this);
this.onChangeCompleted =
this.onChangeCompleted.bind(this);
this.onSubmit = this.onSubmit.bind(this);

this.state = {
description: '',
completed: false,
}
}

componentDidMount() {

axios.get(`http://localhost:4000/tasks/${this.props.matc
h.params.id}`)
.then(response => {
this.setState({
description: response.data.description,
completed: response.data.completed,
})
}) www.fullstackmaster.com.br
.catch(error => {
console.log(error); 91
});
}

onChangeDescription(e) {
this.setState({
description: e.target.value
});
}

onChangeCompleted(e) {
this.setState({
completed: e.target.checked
});
}

onSubmit(e) {
e.preventDefault();

const task = {
description: this.state.description,
completed: this.state.completed,
}

axios.post(`http://localhost:4000/tasks/update/${this.pr
ops.match.params.id}`, task)
.then(res => console.log(res.data));

this.props.history.push('/');
}

render() {
return (
<div>

www.fullstackmaster.com.br
<h3>Edit Task</h3>
92
<form onSubmit={this.onSubmit}>
<div className="form-group">
<label>Description: </label>
<input type="text"
className="form-control"
value={this.state.description}
onChange={this.onChangeDescription}
/>
</div>
<div className="form-group">
<div className="form-check">
<input className="form-check-input"
type="checkbox"
checked={this state.completed}
onChange={this.onChangeCompleted}
/>
<label className="form-check-
label">Completed</label>
</div>
</div>
<div className="form-group">
<input type="submit" value="Update Task"
className="btn btn-primary" />
</div>
</form>
</div>
)
}
}

www.fullstackmaster.com.br
Esse código cria um componente React que permite 93
editar uma tarefa existente.

Agora, vamos criar o componente `CreateTask.js` com o


seguinte código:

```javascript
import React from 'react';
import axios from 'axios';

export default class CreateTask extends


React.Component {
constructor(props) {
super(props);

this.onChangeDescription =
this.onChangeDescription.bind(this);
this.onSubmit = this.onSubmit.bind(this);

this.state = {
description: '',
completed: false,
}
}

onChangeDescription(e) {
this.setState({
description: e.target.value
});
}

onSubmit(e) {
e.preventDefault();

www.fullstackmaster.com.br
const task = {
description: this.state.description, 94
completed: this.state.completed,
}

axios.post('http://localhost:4000/tasks/add', task)
.then(res => console.log(res.data));

this.setState({
description: '',
completed: false,
})
}

render() {
return (
<div>
<h3>Create New Task</h3>
<form onSubmit={this.onSubmit}>
<div className="form-group">
<label>Description: </label>
<input type="text"
className="form-control"
value={this.state.description}
onChange={this.onChangeDescription}
/>
</div>
<div className="form-group">
<input type="submit" value="Create Task"
className="btn btn-primary" />
</div>
</form>
</div>
)
}
}

www.fullstackmaster.com.br
95
Esse código cria um componente React que permite criar
uma nova tarefa.

Passo 7: Criar as rotas da aplicação

Agora que temos os componentes necessários, vamos


criar as rotas para eles. Para isso, vamos criar um novo
arquivo App.js com o seguinte código:

import React from 'react';


import { BrowserRouter as Router, Route, Link } from
"react-router-dom";
import "bootstrap/dist/css/bootstrap.min.css";

import TaskList from "./components/TaskList";


import EditTask from "./components/EditTask";
import CreateTask from "./components/CreateTask";

function App() {
return (
<Router>
<div className="container">
<nav className="navbar navbar-expand-lg navbar-
light bg-light">
<Link to="/" className="navbar-brand">Task
Manager</Link>
<div className="collpase navbar-collapse">
<ul className="navbar-nav mr-auto">
<li className="navbar-item">
<Link to="/" className="nav-
link">Tasks</Link>
</li>

www.fullstackmaster.com.br
96
<li className="navbar-item">
<Link to="/create" className="nav-
link">Create Task</Link>
</li>
</ul>
</div>
</nav>
<br />
<Route path="/" exact component={TaskList} />
<Route path="/edit/:id" component={EditTask} />
<Route path="/create" component={CreateTask} />
</div>
</Router>
);
}

export default App;

Passo 8: Executar a aplicação

Finalmente, podemos executar a aplicação. Para isso,


precisamos rodar o servidor backend e o servidor
frontend.

Para rodar o servidor backend, abra um terminal na


pasta do projeto e execute o seguinte comando:

node server.js

Isso irá iniciar o servidor backend na porta 4000.


Para rodar o servidor frontend, abra outro terminal na
pasta do projeto e execute os seguintes comandos:

www.fullstackmaster.com.br
97
npm install
npm start

Isso irá instalar as dependências necessárias e iniciar o


servidor frontend na porta 3000.

Agora, abra o seu navegador e acesse a seguinte URL:

http://localhost:3000/

Isso irá abrir a aplicação no seu navegador e você


poderá visualizar a lista de tarefas, criar novas tarefas,
editar tarefas existentes e marcar tarefas como
concluídas.

Neste exemplo, vimos como criar uma aplicação Full-


Stack completa utilizando as tecnologias Node.js,
Express, MongoDB e React. Aprendemos como criar um
servidor backend que se comunica com um banco de
dados MongoDB, como criar componentes React para a
interface do usuário e como criar rotas para a aplicação.

Para se tornar um desenvolvedor Full-Stack competente,


é necessário ter conhecimento em diversas áreas,
incluindo programação do lado do servidor, banco de
dados, programação do lado do cliente, design de
interfaces e gerenciamento de projetos. É importante
estudar essas áreas de forma abrangente e praticar
constantemente para se tornar um desenvolvedor
completo e capaz de criar aplicações web robustas e de
alta qualidade. O mercado de trabalho para
desenvolvedores Full-Stack é amplo e promissor, e a
demanda por profissionais capacitados nessa área
continua a crescer.

www.fullstackmaster.com.br
98
TESTES EM DESENVOLVIMENTO DE SOFTWARE

Os testes são uma parte fundamental do


desenvolvimento de software. Eles ajudam a garantir
que o software seja de alta qualidade, livre de bugs e
atenda aos requisitos do usuário. Neste capítulo,
veremos um passo a passo sobre como realizar testes
em desenvolvimento de software e mostraremos um
exemplo prático.

Passo 1: Planejamento de testes

Antes de começar a escrever qualquer código, é


importante planejar os testes que serão realizados.
Isso inclui identificar os requisitos de teste,
estabelecer as métricas de sucesso e definir o escopo
dos testes. É importante também documentar essas
informações para referência futura.

Passo 2: Testes unitários

Os testes unitários são aqueles que verificam a


funcionalidade individual de um componente ou
unidade de código. Eles devem ser escritos pelos
desenvolvedores durante a implementação do código e
executados automaticamente após cada alteração.

No nosso exemplo prático, vamos supor que estamos


desenvolvendo um sistema de cadastro de usuários.
Um teste unitário poderia verificar se o sistema é
capaz de criar um novo usuário com sucesso.

www.fullstackmaster.com.br
99
Passo 3: Testes de integração

Os testes de integração verificam a integração entre


diferentes componentes ou módulos do sistema. Eles
são importantes para garantir que as diferentes partes
do sistema funcionem bem juntas. Esses testes devem
ser escritos e executados após a implementação de
cada componente.

Em nosso exemplo, um teste de integração poderia


verificar se o sistema de cadastro de usuários está
integrado corretamente com o sistema de
autenticação.

Passo 4: Testes de aceitação

Os testes de aceitação verificam se o sistema atende


aos requisitos do usuário e se comporta conforme o
esperado. Eles devem ser escritos por uma equipe de
teste independente e devem ser baseados nos
requisitos do usuário.

Em nosso exemplo, um teste de aceitação poderia


verificar se o sistema de cadastro de usuários permite
a criação de novos usuários com todos os campos
obrigatórios preenchidos e se retorna uma mensagem
de sucesso ao usuário.

www.fullstackmaster.com.br
100
Passo 5: Testes de desempenho

Os testes de desempenho verificam a capacidade do


sistema de lidar com cargas de trabalho intensas e
medem o tempo de resposta do sistema em condições
extremas. Eles devem ser realizados após a
implementação do sistema e devem ser executados em
um ambiente semelhante ao de produção.

Em nosso exemplo, um teste de desempenho poderia


verificar se o sistema de cadastro de usuários é capaz
de lidar com um grande número de solicitações
simultâneas.

Passo 6: Automação de testes

Para garantir que os testes sejam realizados de forma


consistente e eficiente, é importante automatizá-los
sempre que possível. Isso pode ser feito por meio do
uso de ferramentas de automação de testes.

Em nosso exemplo, os testes unitários e de integração


podem ser automatizados usando uma ferramenta
como o Jest. Os testes de aceitação podem ser
automatizados usando uma ferramenta como o
Selenium.

Passo 7: Execução de testes

Após escrever os testes e automatizá-los, é hora de


executá-los.

www.fullstackmaster.com.br
101
DEPLOY DE APLICAÇÕES

O deploy de uma aplicação consiste em disponibilizá-


la em um servidor de produção para que possa ser
acessada pelos usuários. Neste capítulo, mostraremos
um passo a passo para realizar o deploy de uma
aplicação web em um servidor.

Exemplo Prático

Para este exemplo, vamos considerar que já temos uma


aplicação web desenvolvida e pronta para ser
disponibilizada em produção. Para o deploy,
utilizaremos o serviço de hospedagem Heroku, que é
um dos mais populares para deploy de aplicações web.

Passo 1: Criação da conta no Heroku

Antes de começar, é necessário criar uma conta no


Heroku, caso ainda não tenha. Para isso, acesse o site
https://www.heroku.com/ e clique em "Sign Up" para
criar uma conta gratuita.

Passo 2: Instalação do CLI do Heroku

Para realizar o deploy da nossa aplicação, precisamos


instalar o CLI (Command Line Interface) do Heroku.
Para isso, acesse o site

https://devcenter.heroku.com/articles/heroku-cli e siga
as instruções para instalar o CLI de acordo com o seu
sistema operacional.

www.fullstackmaster.com.br
102
O deploy de uma aplicação consiste em disponibilizá-
la em um servidor de produção para que possa ser
acessada pelos usuários. Neste capítulo, mostraremos
um passo a passo para realizar o deploy de uma
aplicação web em um servidor.

Exemplo Prático

Para este exemplo, vamos considerar que já temos uma


aplicação web desenvolvida e pronta para ser
disponibilizada em produção. Para o deploy,
utilizaremos o serviço de hospedagem Heroku, que é
um dos mais populares para deploy de aplicações web.

Passo 1: Criação da conta no Heroku

Antes de começar, é necessário criar uma conta no


Heroku, caso ainda não tenha. Para isso, acesse o site
https://www.heroku.com/ e clique em "Sign Up" para
criar uma conta gratuita.

Passo 2: Instalação do CLI do Heroku

Para realizar o deploy da nossa aplicação, precisamos


instalar o CLI (Command Line Interface) do Heroku.
Para isso, acesse o site:

https://devcenter.heroku.com/articles/heroku-cli e siga
as instruções para instalar o CLI de acordo com o seu
sistema operacional.

www.fullstackmaster.com.br
103
Passo 3: Preparação da aplicação

Antes de realizar o deploy, é importante garantir que a


nossa aplicação está configurada corretamente.
Certifique-se de que os arquivos necessários estão
presentes, as dependências estão instaladas e as
variáveis de ambiente foram configuradas
corretamente.

Passo 4: Criação do app no Heroku

Agora, vamos criar um novo app no Heroku para


hospedar a nossa aplicação. Para isso, abra o terminal
e execute o comando:

heroku create <nome-do-app>

Onde <nome-do-app> é o nome que você deseja dar


para o seu app.

Passo 5: Configuração do banco de dados

Se a sua aplicação utiliza um banco de dados, é


necessário configurá-lo no Heroku. Para isso, utilize o
serviço de hospedagem de banco de dados do Heroku
ou um provedor externo compatível com o Heroku.

Passo 6: Realização do deploy

Agora, vamos realizar o deploy da nossa aplicação para


o Heroku. Para isso, execute os seguintes comandos no
terminal:

www.fullstackmaster.com.br
git add .
git commit -m "Initial commit"
104
git push heroku master

O primeiro comando adiciona todas as alterações


pendentes no repositório local. O segundo comando
realiza um commit com uma mensagem descritiva. E o
terceiro comando envia as alterações para o Heroku e
realiza o deploy da aplicação.

Passo 7: Verificação do status do deploy

Para verificar o status do deploy, execute o comando:

heroku logs --tail

Esse comando exibirá os logs da aplicação em tempo


real, permitindo que você verifique se o deploy foi
realizado com sucesso e se a aplicação está
funcionando corretamente.

Passo 8: Acesso à aplicação

Finalmente, para acessar a sua aplicação, acesse a URL


do seu app no Heroku, que deve seguir o padrão:

https://<nome-do-app>.herokuapp.com/

Com este passo a passo simples, é possível realizar o


deploy de uma aplicação web de forma eficiente e
segura. É importante lembrar que o processo de deploy
pode variar dependendo da plataforma de hospedagem
escolhida e das tecnologias utilizadas na aplicação.
Porém, em geral, seguindo os passos apresentados é
possível realizar o deploy de forma bem-sucedida.

www.fullstackmaster.com.br
105
É importante lembrar que o deploy é apenas uma etapa
do ciclo de vida da aplicação, e que é necessário estar
sempre atento a possíveis atualizações e melhorias, a
fim de garantir que a aplicação continue funcionando
de forma satisfatória e atendendo às necessidades dos
usuários.

www.fullstackmaster.com.br
106
FERRAMENTAS E
5 RECURSOS ADICIONAIS
O desenvolvimento de software é uma área
em constante evolução, e novas ferramentas
e recursos são criados para tornar o processo
de desenvolvimento mais eficiente e
produtivo.

Neste capítulo, vamos explorar algumas


dessas ferramentas e recursos adicionais que
podem ser utilizados para aprimorar o
desenvolvimento de software. Vamos abordar
o gerenciamento de versão de código, a
hospedagem de aplicações e as metodologias
ágeis, apresentando exemplos de algumas
das ferramentas e tecnologias mais utilizadas
no mercado, como o Git, o Heroku, a AWS, o
Scrum e o Kanban.

Com essas ferramentas e recursos, é possível


melhorar a qualidade do código, agilizar o
processo de desenvolvimento e garantir a
satisfação dos usuários finais.

www.fullstackmaster.com.br
107
GERENCIAMENTO DE VERSÃO DE CÓDIGO

O gerenciamento de versão de código é uma prática


fundamental para qualquer projeto de
desenvolvimento de software. Ele permite que várias
pessoas trabalhem simultaneamente no mesmo
código-fonte, realizando alterações e correções sem
afetar o trabalho dos outros desenvolvedores. Além
disso, o gerenciamento de versão também permite que
os desenvolvedores voltem a uma versão anterior do
código em caso de erros ou problemas com as novas
alterações.

Existem várias ferramentas de gerenciamento de


versão de código disponíveis, mas o Git é uma das
mais populares e amplamente utilizadas no mercado.
Ele é um sistema de controle de versão distribuído, o
que significa que cada desenvolvedor tem uma cópia
do repositório de código em sua máquina, permitindo
que trabalhem offline e sincronizem suas alterações
com o repositório central posteriormente.

www.fullstackmaster.com.br
108
O Git funciona com o conceito de "branches"
(ramificações), permitindo que os desenvolvedores
trabalhem em diferentes versões do código
simultaneamente sem interferir no trabalho dos
outros. O código é mesclado (merged) no ramo
principal (main) após a revisão e testes adequados.

Para utilizar o Git em um projeto, é necessário criar


um repositório, adicionar os arquivos do projeto e
realizar os commits com as alterações feitas.

www.fullstackmaster.com.br
109
As principais ferramentas que os desenvolvedores
utilizam para trabalhar com o Git são a linha de
comando e as interfaces gráficas (GUIs).

Uma das melhores ferramentas de interface gráfica


para o Git é o GitHub, que é uma plataforma de
hospedagem de repositórios Git, permitindo que os
desenvolvedores colaborem em projetos de software
de maneira fácil e segura. Ele também oferece uma
série de recursos adicionais, como controle de acesso,
gerenciamento de problemas (issues), controle de
projetos (projects) e integração contínua.

Para utilizar o GitHub em um projeto, é necessário


criar uma conta e criar um repositório na plataforma.
Em seguida, é necessário clonar o repositório em sua
máquina local, realizar as alterações e fazer o commit.
Após o commit, é possível fazer o push das alterações
para o repositório remoto no GitHub.

No exemplo da aplicação full-stack completa que


desenvolvemos anteriormente, poderíamos utilizar o
Git para gerenciar as diferentes versões do código.
Para isso, seria necessário criar um repositório no
GitHub e cloná-lo em nossas máquinas locais. Em
seguida, poderíamos criar diferentes branches para
trabalhar em diferentes partes da aplicação, como o
front-end, o back-end e o banco de dados. Após as
alterações serem realizadas e testadas, poderíamos
mesclá-las no branch principal e fazer o deploy da
aplicação.

www.fullstackmaster.com.br
110
COM O EXEMPLO DA APLICAÇÃO FULL-STACK QUE
DESENVOLVEMOS ANTERIORMENTE, VAMOS
MOSTRAR COMO UTILIZAR O GIT PARA GERENCIAR
AS DIFERENTES VERSÕES DO CÓDIGO.

1. Inicializar o repositório Git: Primeiro, vamos


inicializar o repositório Git em nossa aplicação, para
que possamos começar a gerenciar as diferentes
versões do nosso código. Para fazer isso, abra o
terminal e navegue até o diretório da aplicação. Em
seguida, execute o seguinte comando:

git init

Isso criará um novo repositório Git na pasta da nossa


aplicação.

2. Adicionar os arquivos para o repositório: Agora que


nosso repositório Git está configurado, precisamos
adicionar os arquivos da nossa aplicação para que
possamos começar a controlar as alterações. Para
adicionar todos os arquivos, execute o seguinte
comando:

git add .

Isso adicionará todos os arquivos e pastas dentro do


diretório atual para o repositório Git.

3. Criar um commit: Agora que adicionamos os


arquivos, precisamos criar um commit para salvar as
alterações no repositório Git. Para fazer isso, execute o
seguinte comando:

www.fullstackmaster.com.br
111
git commit -m "Mensagem do commit"

Substitua "Mensagem do commit" por uma breve


descrição das alterações feitas.

4. Criando uma branch: Uma das melhores práticas em


Git é trabalhar em uma branch separada para cada
recurso ou correção de bugs. Isso ajuda a manter as
alterações organizadas e a evitar conflitos entre as
alterações de diferentes desenvolvedores. Para criar
uma nova branch, execute o seguinte comando:

git checkout -b nome-da-branch

Substitua "nome-da-branch" pelo nome que deseja dar


à sua nova branch.

5. Realizando alterações: Agora podemos fazer as


alterações necessárias em nossa aplicação,
adicionando novos recursos ou corrigindo bugs.
Certifique-se de testar suas alterações localmente
antes de prosseguir.

6. Adicionando alterações para o repositório: Assim


que tiver feito as alterações necessárias e estiver
satisfeito com o resultado, adicione as alterações para
o repositório Git:

git add .

7. Criando um novo commit: Agora, crie um novo


commit para salvar suas alterações no repositório Git:

www.fullstackmaster.com.br
112
git commit -m "Mensagem do commit"

8. Mesclando com a branch principal: Agora que


terminamos de fazer alterações na nossa branch, é
hora de mesclá-las com a branch principal. Primeiro,
precisamos mudar para a branch principal:

git checkout main

Agora podemos mesclar nossas alterações da branch


atual na branch principal:

git merge nome-da-branch

Substitua "nome-da-branch" pelo nome da sua branch


atual.

9. Enviando alterações para o repositório remoto: Após


ter feito suas alterações e commits no seu repositório
local, você pode enviá-las para o repositório remoto
no GitHub usando o comando git push.

Para fazer isso, primeiro você precisa se certificar de


que está no branch correto. Digamos que você tenha
criado um branch para desenvolver uma nova
funcionalidade chamado minha-feature. Para enviar as
alterações desse branch para o repositório remoto,
você deve usar o seguinte comando:

git push origin minha-feature

www.fullstackmaster.com.br
113
Isso enviará todas as alterações do seu branch minha-
feature para o repositório remoto no GitHub. Se você
quiser enviar as alterações do seu branch atual (o que
você está atualmente trabalhando), você pode usar o
seguinte comando:

git push origin HEAD

Isso enviará todas as alterações do seu branch atual


para o repositório remoto. Lembre-se de que você deve
ter permissão para fazer push para o repositório
remoto antes de executar esse comando.

Se você estiver trabalhando em equipe, é importante


manter seu repositório local atualizado com as
alterações feitas por outros membros da equipe. Para
fazer isso, você pode usar o comando git pull para
baixar as alterações do repositório remoto para o seu
repositório local. Certifique-se de fazer isso com
frequência para evitar conflitos e garantir que todos
estejam trabalhando na versão mais recente do código.

Com o Git, é possível trabalhar em equipe de forma


colaborativa e gerenciar diferentes versões do código
de forma eficiente e organizada. Com o uso adequado
de branches, commits e comandos como git push e git
pull, é possível manter um histórico completo de
alterações e garantir a integridade do código-fonte ao
longo do tempo.

www.fullstackmaster.com.br
114
HOSPEDAGEM DE APLICAÇÕES

Neste capítulo, abordaremos o tema de hospedagem de


aplicações, apresentando duas das principais
plataformas utilizadas para este fim: Heroku e AWS.
Com a crescente demanda por aplicações web, é
fundamental entender como disponibilizá-las na
internet para que os usuários possam acessá-las de
forma fácil e segura.

Veremos como escolher a plataforma de hospedagem


adequada, como configurar um servidor e como
implantar nossa aplicação em produção. Além disso,
discutiremos algumas boas práticas para garantir o
bom desempenho da aplicação e a segurança dos
dados dos usuários.

www.fullstackmaster.com.br
115

A hospedagem de aplicações é uma etapa fundamental


no desenvolvimento de uma aplicação web, pois é
através dela que os usuários terão acesso ao sistema.
Existem diversas opções de provedores de
hospedagem, cada um com suas características
específicas.

Neste capítulo, falaremos sobre a plataforma Heroku,


que é uma opção popular para hospedagem de
aplicações web. A Heroku é uma plataforma em nuvem
que permite hospedar aplicações web de maneira fácil
e rápida, sem se preocupar com infraestrutura de
servidor.

Para começar a utilizar a Heroku, é necessário criar


uma conta e instalar o Heroku CLI (Command Line
Interface) em seu computador. Com o CLI instalado,
podemos criar um novo aplicativo na plataforma
usando o comando heroku create.

Uma vez criado o aplicativo, precisamos configurar


alguns arquivos de configuração. O arquivo Procfile é
usado para especificar os processos que serão
executados em nosso servidor, enquanto o arquivo
package.json contém informações sobre as
dependências da aplicação.

www.fullstackmaster.com.br
116
Com a configuração completa, podemos implantar
nossa aplicação na Heroku usando o comando git push
heroku master. Isso fará com que nossa aplicação seja
enviada para a plataforma e configurada
automaticamente.

Uma das vantagens da Heroku é sua escalabilidade. A


plataforma permite escalar verticalmente (adicionando
mais recursos a uma instância existente) e
horizontalmente (adicionando mais instâncias da
aplicação para distribuir a carga).

Além disso, a Heroku possui uma série de addons que


podem ser adicionados à aplicação para adicionar
funcionalidades, como bancos de dados, filas de
mensagens, entre outros.

Em relação à segurança, a Heroku possui diversos


recursos para proteger nossas aplicações, como HTTPS,
autenticação de dois fatores e monitoramento de logs.
Por fim, é importante lembrar que a Heroku possui
uma camada gratuita, que é ideal para testes e
prototipagem. No entanto, para aplicações em
produção, é necessário contratar uma camada paga,
que oferece recursos adicionais e suporte técnico.

Em resumo, a Heroku é uma excelente opção para


hospedar aplicações web, oferecendo facilidade de
uso, escalabilidade e recursos de segurança. Com
alguns passos simples, podemos implantar nossa
aplicação na plataforma e disponibilizá-la para os
usuários.

www.fullstackmaster.com.br
117

Depois de ter criado e testado sua aplicação, você


precisa disponibilizá-la na internet para que os
usuários possam acessá-la. Existem diversas opções de
provedores de hospedagem disponíveis, e neste
capítulo vamos falar sobre a Amazon Web Services
(AWS), uma das plataformas de hospedagem mais
populares e confiáveis do mercado.

1. Introdução à AWS

A Amazon Web Services é uma plataforma de


hospedagem em nuvem que oferece uma variedade de
serviços para hospedar, escalar e gerenciar suas
aplicações web. Ela é conhecida por sua flexibilidade,
segurança e escalabilidade, e é amplamente utilizada
por empresas de todos os tamanhos.

A AWS oferece uma série de serviços diferentes,


incluindo servidores virtuais, armazenamento em
nuvem, bancos de dados, serviços de computação,
serviços de rede e muito mais. Isso permite que você
escolha a combinação certa de serviços para suas
necessidades específicas.

2. Configurando uma instância EC2

Uma das formas mais populares de hospedagem na


AWS é a utilização do serviço de instâncias EC2

www.fullstackmaster.com.br
118
(Elastic Compute Cloud). Para configurar uma instância
EC2, siga os seguintes passos:

Passo 1: Acesse o console da AWS e selecione o


serviço EC2.

Passo 2: Clique no botão "Launch Instance" para iniciar


o assistente de criação de instância.

Passo 3: Escolha a imagem da máquina virtual que


deseja usar e configure as opções de instância de
acordo com suas necessidades.

Passo 4: Defina as configurações de segurança para


sua instância.

Passo 5: Escolha a opção de armazenamento e


configure seu volume de armazenamento.

Passo 6: Revise as configurações da instância e clique


em "Launch" para iniciar a instância.

3. Configurando um banco de dados RDS

Além de uma instância EC2, você também pode


precisar de um banco de dados para sua aplicação. A
AWS oferece um serviço de banco de dados relacional
chamado RDS (Relational Database Service) que pode
ser facilmente configurado. Para configurar um banco
de dados RDS, siga os seguintes passos:

www.fullstackmaster.com.br
119
Passo 1: Acesse o console da AWS e selecione o
serviço RDS.

Passo 2: Clique em "Create Database" para iniciar o


assistente de criação de banco de dados.

Passo 3: Escolha o tipo de banco de dados que deseja


usar (por exemplo, MySQL, PostgreSQL, Oracle, etc.) e
configure as opções de banco de dados de acordo com
suas necessidades.

Passo 4: Defina as configurações de segurança para


seu banco de dados.

Passo 5: Escolha as opções de armazenamento e


configure seu volume de armazenamento.

Passo 6: Revise as configurações do banco de dados e


clique em "Create Database" para iniciar a instância.

4. Hospedando sua aplicação na AWS

Depois de configurar o ambiente e o banco de dados, é


hora de hospedar a nossa aplicação na AWS. Para isso,
podemos utilizar o serviço EC2, que permite a criação
e gerenciamento de instâncias de servidores virtuais
na nuvem.

Para hospedar a nossa aplicação na AWS EC2, siga os


seguintes passos:

www.fullstackmaster.com.br
120
1. Acesse o console da AWS e selecione o serviço EC2.

2. Crie uma nova instância, selecionando o sistema


operacional desejado e o tipo de instância.

3. Configure as regras de segurança para permitir o


acesso à porta da aplicação (geralmente a porta 80 ou
8080).

4. Conecte-se à instância por meio do protocolo SSH e


instale as dependências necessárias para a execução
da aplicação.

5. Transfira os arquivos da aplicação para a instância.

6. Execute a aplicação na instância utilizando o


comando correto para o seu projeto.

7. Acesse a aplicação por meio do endereço IP público


da instância na porta da aplicação configurada.

É importante lembrar que a hospedagem na AWS pode


gerar custos, portanto, é importante estar atento às
configurações e limites do serviço utilizado para evitar
surpresas na fatura.

Além disso, a AWS oferece diferentes opções de


hospedagem, como o Elastic Beanstalk e o Lambda,
que podem ser mais indicados dependendo do tipo de
aplicação e das necessidades específicas do projeto.

www.fullstackmaster.com.br
121
METODOLOGIAS AGEIS

Neste capítulo, iremos abordar as principais


metodologias ágeis utilizadas atualmente, como Scrum
e Kanban, e como elas podem ser aplicadas no
desenvolvimento de software. Veremos seus conceitos,
benefícios e como implementar essas metodologias na
prática.

O Scrum e o Kanban são metodologias ágeis que


ajudam equipes de desenvolvimento de software a
gerenciar projetos de forma mais eficiente e produtiva.

O Scrum é baseado em sprints, que são ciclos de


trabalho curtos e intensos, onde a equipe se
compromete a entregar um conjunto de
funcionalidades ao final de cada sprint.

Já o Kanban é baseado em um fluxo contínuo de


trabalho, onde as tarefas são organizadas em um
quadro Kanban e são movidas de uma coluna para
outra de acordo com o seu estado de conclusão. Ambas
as metodologias valorizam a comunicação, a
colaboração e a melhoria contínua do processo de
desenvolvimento.

www.fullstackmaster.com.br
122
SCRUM

Scrum é um framework ágil utilizado para


gerenciamento de projetos de software, que visa a
entrega de valor de forma rápida e constante. Ele é
baseado em três pilares principais: transparência,
inspeção e adaptação. O Scrum tem como objetivo
facilitar o trabalho em equipe, aumentar a eficiência
do projeto e promover a comunicação entre todos os
envolvidos.

Para aprender a trabalhar com Scrum, é necessário


conhecer os principais papéis envolvidos. O Scrum
Master é responsável por garantir que o time esteja
seguindo as práticas e processos do framework. O
Product Owner é responsável por definir as
funcionalidades a serem desenvolvidas e garantir que
a equipe esteja focada nos objetivos do projeto. O
Time de Desenvolvimento é responsável por executar
as atividades de desenvolvimento do projeto.

O Scrum é composto por eventos, que ajudam a manter


o processo organizado e a equipe focada nos objetivos.
O Sprint é o principal evento do Scrum, que define um
período de tempo para o desenvolvimento de uma
funcionalidade específica.

www.fullstackmaster.com.br
123
Durante o Sprint, são realizadas reuniões diárias para
acompanhar o progresso e identificar possíveis
impedimentos.

Outro evento importante do Scrum é a Sprint Review,


que ocorre no final do Sprint e tem como objetivo
apresentar o resultado do trabalho para o Product
Owner e os stakeholders. A Sprint Retrospective é
outro evento importante, que acontece no final de
cada Sprint e tem como objetivo avaliar o processo e
identificar melhorias para os próximos Sprints.

Para demonstrar como o Scrum funciona na prática,


vamos utilizar o exemplo da aplicação full-stack
desenvolvida anteriormente. Suponha que uma nova
funcionalidade deva ser adicionada à aplicação, que é
a possibilidade do usuário realizar uma compra
diretamente pelo site. Para isso, vamos seguir os
seguintes passos:

1. Definir o Product Backlog: o Product Owner deve


definir as funcionalidades necessárias para a nova
funcionalidade de compra e inseri-las no Product
Backlog, que é uma lista ordenada de itens a serem
desenvolvidos.

2. Planejamento do Sprint: a equipe deve definir o


objetivo do Sprint e selecionar os itens do Product
Backlog que serão desenvolvidos durante o Sprint. A
duração do Sprint deve ser definida e o plano deve ser
acordado por todos os envolvidos.

www.fullstackmaster.com.br
124
3. Daily Scrum: reuniões diárias são realizadas para
acompanhar o progresso e identificar possíveis
impedimentos. Durante o Daily Scrum, cada membro da
equipe deve responder a três perguntas básicas: o que
foi feito desde a última reunião, o que será feito até a
próxima reunião e quais impedimentos estão
atrapalhando o trabalho.

4. Sprint Review: ao final do Sprint, a equipe deve


apresentar o resultado do trabalho para o Product
Owner e os stakeholders. A funcionalidade de compra
deve ser demonstrada e feedbacks devem ser
coletados.

5. Sprint Retrospective: a equipe deve se reunir para


avaliar o processo e identificar melhorias para os
próximos Sprints. O que deu certo e o que precisa ser
melhorado devem ser discutidos e anotados para
serem levados em consideração no próximo
planejamento do Sprint.

Cada Sprint começa com um evento de planejamento


da Sprint, no qual a equipe de desenvolvimento define
quais itens do backlog do produto serão entregues
durante a próxima Sprint. A equipe deve então
trabalhar nesses itens durante a Sprint, realizando
reuniões diárias para monitorar o progresso e
colaborar em qualquer impedimento.

Ao final da Sprint, a equipe de desenvolvimento


realiza uma revisão da Sprint, na qual apresenta o
trabalho concluído ao proprietário do produto e aos
stakeholders e solicita feedback.
www.fullstackmaster.com.br
125
Em seguida, a equipe realiza uma retrospectiva da
Sprint para analisar o que funcionou bem, o que não
funcionou e como pode melhorar no futuro.
O Scrum também inclui papéis claros para garantir que
todos os membros da equipe estejam alinhados e
trabalhando juntos de maneira eficaz. Os principais
papéis são:

Proprietário do Produto: responsável por gerenciar


o backlog do produto e priorizar as necessidades
do cliente.
Scrum Master: responsável por garantir que a
equipe esteja seguindo o processo do Scrum
corretamente e removendo quaisquer
impedimentos que possam surgir.
Equipe de Desenvolvimento: responsável por
desenvolver o produto em si, colaborando em todas
as fases do processo.

Para aprender a trabalhar com o Scrum, é importante


estudar o processo em detalhes e entender como cada
papel funciona. Há muitos recursos disponíveis online,
incluindo guias oficiais do Scrum.org e Scrum Alliance,
além de cursos e certificações disponíveis.

A seguir, vamos mostrar um exemplo prático de como


usar o Scrum em um projeto de desenvolvimento de
software.

Exemplo prático:

www.fullstackmaster.com.br
126
Suponha que você seja o gerente de projeto
encarregado de liderar uma equipe de desenvolvedores
para criar um aplicativo de gerenciamento de tarefas.
Você já tem uma equipe formada, mas precisa definir
como eles vão trabalhar juntos para entregar o
aplicativo no prazo.

Você decide usar o Scrum, que é um framework ágil


popular para gerenciamento de projetos de software. O
Scrum consiste em sprints (iterações), reuniões diárias
e outros eventos para garantir que a equipe esteja
sempre alinhada e focada no objetivo.

Primeiro, você define as histórias de usuário que


precisam ser realizadas para concluir o aplicativo. Isso
inclui criar uma lista de tarefas, definir prioridades,
atribuir tarefas a membros da equipe e definir prazos.

Em seguida, você cria o Product Backlog, uma lista


priorizada de todas as histórias de usuário. Você
decide que a criação da lista de tarefas é a história
mais importante, então coloca essa história no topo da
lista.

Agora é hora de começar o sprint. Você e sua equipe se


reúnem para discutir a história da lista de tarefas e
quebrá-la em tarefas menores. Por exemplo, a equipe
pode decidir criar a interface do usuário para a lista de
tarefas, desenvolver um sistema de login e
autenticação e criar um banco de dados para
armazenar as tarefas.

www.fullstackmaster.com.br
127
Todos os dias, a equipe se reúne em uma reunião
diária rápida para discutir o progresso e quaisquer
obstáculos que estejam enfrentando. Isso ajuda a
garantir que a equipe esteja sempre alinhada e
trabalhando de forma eficiente.

No final do sprint, a equipe apresenta a lista de tarefas


concluída e pronta para revisão. Você e sua equipe
avaliam o trabalho realizado, fazem ajustes e
adicionam feedback ao Product Backlog. Em seguida,
você passa para o próximo sprint e começa a trabalhar
na próxima história do Product Backlog.

Com o Scrum, você e sua equipe conseguem trabalhar


de forma mais eficiente e se adaptar rapidamente às
mudanças. Isso ajuda a garantir que o aplicativo de
gerenciamento de tarefas seja entregue no prazo e
atenda às expectativas do cliente. E o mais importante,
sua equipe consegue se divertir durante o processo de
desenvolvimento do aplicativo!

www.fullstackmaster.com.br
128

6 CONCLUSÃO

Com o mundo em constante evolução


tecnológica, ser um desenvolvedor full-stack
é um caminho promissor para quem deseja
seguir carreira na área de tecnologia. Este e-
book ofereceu uma visão geral das
habilidades e tecnologias necessárias para se
tornar um desenvolvedor full-stack.

A demanda por desenvolvedores full-stack


continua a crescer à medida que mais
empresas buscam indivíduos capazes de
trabalhar em vários aspectos de um projeto.
Além disso, a tendência de desenvolvimento
de aplicativos baseados na web e a adoção
de metodologias ágeis tornam ainda mais
importante que os desenvolvedores sejam
proficientes em várias tecnologias.

Embora seja uma jornada desafiadora, o


futuro do desenvolvimento full-stack é
promissor para aqueles que estão dispostos a
investir tempo e esforço em desenvolver suas
habilidades.

www.fullstackmaster.com.br
129
Com o uso cada vez maior de tecnologias emergentes
como a inteligência artificial, blockchain e a Internet
das Coisas (IoT), as oportunidades de carreira no
desenvolvimento full-stack só tendem a crescer.

Se você está interessado em se tornar um


desenvolvedor full-stack, saiba que o caminho não
será fácil, mas será recompensador. Com uma ampla
gama de habilidades e tecnologias para dominar, é
importante manter a mente aberta e estar sempre
disposto a aprender.

Além disso, é fundamental manter-se atualizado com


as últimas tendências e desenvolvimentos na área de
tecnologia. Participar de fóruns online, grupos de
estudo e eventos de networking pode ajudá-lo a
ampliar seu conhecimento e a se conectar com outros
profissionais da área.

Lembre-se também de que a aprendizagem contínua é


uma parte fundamental da carreira de um
desenvolvedor full-stack. Esteja sempre disposto a
experimentar novas tecnologias e abordagens de
desenvolvimento, e esteja aberto a feedbacks e críticas
construtivas.

Com determinação, dedicação e um forte desejo de


aprender, você pode se tornar um desenvolvedor full-
stack bem-sucedido e preparado para enfrentar os
desafios futuros da tecnologia.

www.fullstackmaster.com.br
130
O futuro do desenvolvimento full-stack é brilhante e
oferece muitas oportunidades emocionantes para
aqueles que estão dispostos a se dedicar a aprender e
crescer nesta área em constante evolução.

Se você está procurando uma maneira de se tornar um


desenvolvedor Full-Stack completo, temos algo
perfeito para você!

A Danki Code oferece o Pacote Full-Stack mais


completo do mercado, que vai te ajudar a dominar
todas as habilidades necessárias para se tornar um
desenvolvedor Full-Stack de sucesso.

Com este pacote, você terá acesso a mais de 700 horas


de conteúdo de alta qualidade, incluindo cursos
completos de front-end e back-end, bem como de
desenvolvimento de aplicativos móveis. Você vai
aprender as mais recentes tecnologias, tais como
React, Node.js, Angular, Vue.js, Python, Ruby on Rails,
e muito mais.

O Pacote Full-Stack da Danki Code é projetado para


atender a todas as suas necessidades de
aprendizagem, com instrutores experientes e suporte
técnico de primeira linha. Você terá acesso a projetos
práticos, testes de conhecimento, certificados de
conclusão e um portfólio incrível para mostrar aos
seus futuros empregadores.

www.fullstackmaster.com.br
131
Não perca esta oportunidade de se tornar um
desenvolvedor Full-Stack de sucesso com a Danki
Code. Junte-se a milhares de outros alunos satisfeitos
e comece a sua jornada hoje mesmo.

Agradecemos por ter chegado até aqui em nosso e-


book e esperamos ter ajudado você em sua jornada
para se tornar um desenvolvedor Full-Stack de
sucesso. O futuro da tecnologia é brilhante e estamos
animados para fazer parte da sua jornada.

CLIQUE AQUI PARA GARANTIR SUA VAGA

SIGA-NOS NO INSTAGRAM
@programador.fullstackmaster

Você também pode gostar