Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Ebook node js para iniciantes, Manuais, Projetos, Pesquisas de Programação para Java

Ebook que comprei bem completo

Tipologia: Manuais, Projetos, Pesquisas

2019

Compartilhado em 23/10/2019

guy-eduardo-laforgia
guy-eduardo-laforgia 🇧🇷

5

(1)

1 documento

1 / 63

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
PARA
INICIANTES
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f

Pré-visualização parcial do texto

Baixe Ebook node js para iniciantes e outras Manuais, Projetos, Pesquisas em PDF para Programação para Java, somente na Docsity!

PARA

INICIANTES

Sumário

    1. INTRODUÇÃO
    1. A PLATAFORMA NODE.JS
    • História do Node.js
    • Características do Node.js
    • Node.js não é uma linguagem de programação
    • Node.js não é um framework Javascript
    1. CONFIGURAÇÃO E PRIMEIROS PASSOS
    • Node.js
    • Visual Studio Code
    • MongoDB
    1. CRIANDO UMA APLICAÇÃO WEB
    • Routes e views
    • Event Loop
    • Task/Event/Message Queue
    1. PERSISTINDO DADOS
    • Quando devo usar MongoDB?
    • Configurando o banco
    • Node.js + MongoDB
    • MongoDB Driver
    • Listando os clientes
    • Cadastrando novos clientes
    • Excluindo um cliente
    1. SEGUINDO EM FRENTE

1 INTRODUÇÁO^4

Na época da escola, costumava montar grupos de estudos para ajudar os colegas que tinham mais dificuldade em algumas matérias. Como sempre fui nerd, ficar na escola no turno inverso, ensinando os colegas, era mais um hobby do que uma obrigação. Mas, jamais havia pensado em me tornar professor.

No entanto, em 2010 (quando estava me formando em Ciência da Computação), a empresa em que trabalhava na época, estava enfrentando enormes dificuldades para contratar profissionais para o seu time. Para ajudar a empresa, comecei a ministrar cursos de extensão em dezenas de universidades gaúchas sobre tecnologias que utilizávamos, como ASP.NET, C# e SQL Server. Formava turmas aos sábados, dezenas de alunos participavam e, em um mês, saíam uns poucos “formados” – sendo que, destes, contratávamos apenas os melhores de cada turma (geralmente apenas um).

Em 2013, virei professor regular de uma grande rede de ensino gaúcha, justamente na semana em que me formei na pós-graduação de Computação Móvel. Desde então nunca mais parei de ensinar, seja como professor regular do ensino superior, blogueiro de desenvolvimento ou até mesmo como evangelista técnico – meu papel atualmente na Umbler.

Ser um programador não é fácil. Trabalho nessa área há onze anos (sim, além de dar aula, trabalho também!), tive a oportunidade de trabalhar com várias tecnologias, em várias empresas, em dezenas de projetos de todos os tamanhos. Inclusive, tive minha própria startup. Já tive de aprender diversas tecnologias “do zero” e aplicá-las rapidamente em projetos de missão crítica para dezenas de milhares de clientes (às vezes, centenas de milhares). E, por mais que sempre me considerasse um autodidata, tudo ficava mais fácil quando tinha um bom professor ou, ao menos, um bom material de apoio.

O que é curioso é que quando ainda estamos “aprendendo a programar” (como se isso acabasse um dia!), olhamos para os professores como se eles tivessem nascido sabendo fazer tudo aquilo. Como se tivessem feito apenas escolhas certas de tecnologias e empresas durante toda sua carreira. Como se fossem algum tipo de herói.

Ledo engano!

1 INTRODUÇÁO^5

Vivemos as mesmas inseguranças que os calouros. Devo

aprender a linguagem X ou Y? É melhor o framework W

ou Z? Será que a tecnologia K vai aguentar a demanda do

meu sistema?

Quem não tem esse tipo de dúvida no dia a dia é porque parou no tempo, não evolui mais e só programa usando legado. Faça um favor a nós dois: ignore-os. Deixe-os acumuladndo teias de aranha.

Hoje, trago um apanhado do que acredito que todo iniciante em Node.js deve saber para entender de fato essa plataforma, saber quando e como usá-la e etc. Para que, após ler e fazer todos os exercícios deste e-book, um programador, mesmo que iniciante, seja capaz de responder perguntas como essa quando a conversa envolver Node.js.

Quando batem palmas em minhas palestras e cursos, costumo dizer que não há necessidade, uma vez que naquela sala somos todos “devs”. E esse e-book é isso: um material de “dev para dev”, sem cerimônias.

Espero que goste.

Talk is cheap. Show me the code.

Um abraço e sucesso.

Luiz Duarte

Dev Evangelist

Umbler

2 A PLATAFORMA NODE.JS^7

Node.js é um ambiente de execução de código JavaScript no lado do servidor, open-source e multiplataforma. Historicamente, JavaScript foi criado para ser uma linguagem de scripting no lado do cliente, embutida em páginas HTML que rodavam em navegadores web. No entanto, Node.js permite que possamos usar JavaScript como uma linguagem de scripting server-side também, permitindo criar conteúdo web dinâmico antes da página aparecer no navegador do usuário. Assim, Node.js se tornou um dos elementos fundamentais do paradigma “full- stack” JavaScript, permitindo que todas as camadas de um projeto possam ser desenvolvidas usando apenas essa linguagem.

Node.js possui uma arquitetura orientada a eventos capaz de operações de I/O assíncronas. Esta escolha de design tem como objetivo otimizar a vazão e escala de requisições em aplicações web com muitas operações de entrada e saída (request e response, por exemplo), bem como aplicações web real-time (como mensageria e jogos). Basicamente, ele aliou o poder da comunicação em rede do Unix com a simplicidade da popular linguagem JavaScript, permitindo que, rapidamente, milhões de desenvolvedores ao redor do mundo tivessem proficiência em usar Node.js para construir rápidos e escaláveis webservers sem se preocupar com threading.

História do Node.js Node.js foi originalmente escrito por Ryan Dahl, em 2009, e não foi exatamente a primeira tentativa de rodar JavaScript no lado do servidor - uma vez que 13 anos antes já havia sido criado o Netscape LiveWire Pro Web. Ele inicialmente funcionava apenas em Linux e Mac OS X, mas cresceu rapidamente com o apoio da empresa Joyent, onde Dahl trabalhava. Ele conta em diversas entrevistas que foi inspirado a criar o Node.js após ver uma barra de progresso de upload no Flickr. Ele entendeu que o navegador tinha de ficar perguntando para o servidor quanto do arquivo faltava a ser transmitido, pois ele não tinha essa informação, e que isso era um desperdício de tempo e recursos. Ele queria criar um jeito mais fácil de fazer isso.

2 A PLATAFORMA NODE.JS^8

Suas pesquisas nessa área levaram-no a criticar as possibilidades limitadas do servidor web Apache de lidar (em 2009) com conexões concorrentes e a forma como se criava código web server-side na época que bloqueava os recursos do servidor web a todo momento - o que fazia com que eles tivessem de criar diversas stacks de tarefas em caso de concorrência para não ficarem travados, gerando um grande overhead.

Dahl demonstrou seu projeto no primeiro JSConf europeu, em 8 de novembro de 2009, e consistia na engine JavaScript V8 do Google, um event loop e uma API de I/O de baixo nível (escrita em C++ e que mais tarde se tornaria a libuv), recebendo muitos elogios do público na ocasião. Em janeiro de 2010, foi adicionado ao projeto o npm, um gerenciador de pacotes que tornou mais fácil para os programadores publicarem e compartilharem códigos e bibliotecas Node.js simplificando a instalação, atualização e desinstalação de módulos, aumentando rapidamente a sua popularidade.

Em 2011, a Microsoft ajudou o projeto criando a versão Windows de Node. js, lançando-a em julho deste ano. Daí em diante, nunca mais parou de crescer, atualmente sendo mantido pela Node.js Foundation, uma organização independente e sem fins lucrativos que mantém a tecnologia com o apoio da comunidade mundial de desenvolvedores.

Características do Node.js

Node.js é uma tecnologia assíncrona que trabalha em

uma única thread de execução

Por assíncrona entenda que cada requisição ao Node.js não bloqueia o processo do mesmo, atendendo a um volume absurdamente grande de requisições ao mesmo tempo, mesmo sendo single thread.

Imagine que exista apenas um fluxo de execução. Quando chega uma requisição, ela entra nesse fluxo. A máquina virtual JavaScript verifica o que tem de ser feito, delega a atividade (consultar dados no banco, por exemplo) e volta a atender novas requisições enquanto este processamento paralelo está

2 A PLATAFORMA NODE.JS^10

Devido a essas características, podemos traçar alguns cenários de uso comuns, onde podemos explorar o real potencial de Node.js:

Node.js serve para fazer APIs

Esse talvez seja o principal uso da tecnologia, uma vez que, por default, ela apenas sabe processar requisições. Não apenas por essa limitação, mas também porque seu modelo não bloqueante de tratar as requisições o torna excelente para essa tarefa, consumindo pouquíssimo hardware.

Node.js serve para fazer backend de jogos, IoT e apps de mensagens

Sim eu sei, isso é praticamente a mesma coisa do item anterior, mas realmente é uma boa ideia usar o Node.js para APIs nestas circunstâncias (backend-as- a-service) devido ao alto volume de requisições que esse tipo de aplicações efetuam.

Node.js serve para fazer aplicações de tempo real

Usando algumas extensões de web socket com Socket.io, Comet.io, etc é possível criar aplicações de tempo real facilmente sem onerar demais o seu servidor como acontecia antigamente com Java RMI, Microsoft WCF, etc.

CONFIGURAÇÃO

E PRIMEIROS

PASSOS

Truth can only be found in one place: the code.

- Robert C. Martin

3 CONFIGURAÇÃO E PRIMEIROS PASSOS^13

O Node.js é composto basicamente por:

Um runtime JavaScript (Google V8, o mesmo do Chrome); Uma biblioteca para I/O de baixo nível (libuv); Bibliotecas de desenvolvimento básico (os core modules); Um gerenciador de pacotes via linha de comando (NPM); Um gerenciador de versões via linha de comando (NVM); Utilitário REPL via linha de comando;

Deve ser observado que o Node.js não é um ambiente visual ou uma ferramenta integrada de desenvolvimento, embora mesmo assim seja possível o desenvolvimento de aplicações complexas apenas com o uso do mesmo, sem nenhuma ferramenta externa.

Após a instalação do Node, para verificar se ele está funcionando, abra seu terminal de linha de comando (DOS, Terminal, Shell, bash, etc) e digite o comando abaixo:

O resultado deve ser a versão do Node.js atualmente instalada na sua máquina, no meu caso, “v8.0.0”. Isso mostra que o Node está instalado na sua máquina e funcionando corretamente.

Inclusive, este comando ‘node’ no terminal pode ser usado para invocar o utilitário REPL do Node.js (Read-Eval-Print-Loop) permitindo programação e execução via terminal, linha-a-linha. Apenas para brincar (e futuramente caso queira provar conceitos), digite o comando abaixo no seu terminal:

node -v

node

3 CONFIGURAÇÃO E PRIMEIROS PASSOS^14

Note que o terminal ficará esperando pelo próximo comando, entrando em um modo interativo de execução de código JavaScript em cada linha, a cada Enter que você pressionar.

Apenas para fins ilustrativos, pois veremos “código de verdade” em mais detalhes neste e-book, inclua os seguintes códigos no terminal, pressionando Enter após digitar cada um:

O que aparecerá após o primeiro comando? E após o segundo?

E se você escrever e executar (com Enter) o comando abaixo?

var x= console.log(x)

console.log(x+1)

Essa ferramenta REPL pode não parecer muito útil agora, mas conforme você for criando programas mais e mais complexos, fazer provas de conceito rapidamente, via terminal de linha de comando, vai economizar muito tempo e muitas dores de cabeça.

Avançando nossos testes iniciais (apenas para nos certificarmos de que tudo está funcionando como deveria), vamos criar nosso primeiro programa JavaScript para rodar no Node.js com apenas um arquivo.

3 CONFIGURAÇÃO E PRIMEIROS PASSOS^16

Ah, o resultado da execução anterior? Apenas um ‘Olá mundo!’ (sem aspas) escrito no seu console, certo?!

Note que tudo que você precisa de ferramentas para começar a programar Node é exatamente isso: o runtime instalado e funcionando, um terminal de linha de comando e um editor de texto simples. Obviamente podemos adicionar mais ferramentas ao nosso arsenal, e é disso que trata a próxima sessão.

Visual Studio Code

Ao longo deste e-book iremos desenvolver uma série de exemplos de softwares escritos em JavaScript usando o editor de código Visual Studio Code, da Microsoft.

Esta não é a única opção disponível, mas é uma opção bem interessante, e é a que uso, uma vez que reduz consideravelmente a curva de aprendizado, os erros cometidos durante o aprendizado e possui ferramentas de depuração muito boas, além de suporte a Git e linha de comando integrada. Apesar de ser desenvolvido pela Microsoft, é um projeto gratuito, de código-aberto, multi- plataforma e com extensões para diversas linguagens e plataformas, como Node.js. E diferente da sua contraparte mais “parruda”, o Visual Studio original, ele é bem leve e pequeno.

Outras excelentes ferramentas incluem o Visual Studio Community, Athom e o Sublime - sendo que o primeiro já utilizava quando era programador .NET e usei durante o início dos meus aprendizados com Node. No entanto, não faz sentido usar uma ferramenta tão pesada para uma plataforma tão leve, mesmo ela sendo gratuita na versão Community. O segundo (Athom), nunca usei, mas tive boas recomendações, já o terceiro (Sublime) usei e sinceramente não gosto, especialmente na versão free que fica o tempo todo pedindo para fazer upgrade pra versão paga (minha opinião).

Para baixar e instalar o Visual Studio Code, acesse o seguinte link, no site oficial da ferramenta:

https://code.visualstudio.com/

3 CONFIGURAÇÃO E PRIMEIROS PASSOS^17

Você notará um botão grande e verde para baixar a ferramenta para o seu sistema operacional. Apenas baixe e instale, não há qualquer preocupação adicional.

Após a instalação, mande executar a ferramenta Visual Studio Code e você verá a tela de boas vindas, que deve se parecer com essa abaixo, dependendo da versão mais atual da ferramenta. Chamamos esta tela de Boas Vindas (Welcome Screen).

No menu do topo você deve encontrar a opção File > New File, que abre um arquivo em branco para edição. Apenas adicione o seguinte código nele:

console.log('Hello World')

JavaScript é uma linguagem bem direta e sem muitos rodeios, permitindo que, com poucas linhas de código, façamos coisas incríveis. Ok, um olá mundo não é algo incrível, mas este mesmo exemplo em linguagens de programação como C e Java ocuparia muito mais linhas.

3 CONFIGURAÇÃO E PRIMEIROS PASSOS^19

Se houver erros de execução, estes são avisados com uma mensagem vermelha indicando qual erro, em qual arquivo e em qual linha. Se mais de um arquivo for listado, procure o que estiver mais ao topo e que tenha sido programado por você. Os erros estarão em inglês, idioma obrigatório para programadores, e geralmente possuem solução se você souber procurar no Google em sites como StackOverflow entre outros.

No exemplo acima, digitei erroneamente a função ‘log’ com dois ‘g’s (TypeError = erro de digitação). Conceitos mais aprofundados sobre JavaScript serão vistos posteriormente.

Caso note que sempre que manda executar o projeto (F5) ele pergunta qual é o ambiente: é porque você ainda não configurou um projeto corretamente no Visual Studio Code. Para fazer isso é bem simples, vá no menu File > Open e selecione a pasta do seu projeto, HelloWorld neste caso. O VS Code vai entender que esta pasta é o seu projeto completo.

Agora, para criarmos um arquivo de configuração do VS Code para este projeto, basta ir no menu Debug > Add Configuration, selecionar a opção Node.js e salvar o arquivo, sem necessidade de configurações adicionais. Isso irá criar um arquivo launch.json, de uso exclusivo do VS Code, evitando que ele sempre pergunte qual o environment que você quer usar.

E com isso finalizamos a construção do nosso Olá Mundo em Node.js usando Visual Studio Code, o primeiro programa que qualquer programador deve criar quando está aprendendo uma nova linguagem de programação!

3 CONFIGURAÇÃO E PRIMEIROS PASSOS^20

MongoDB

MongoDB é um banco da categoria dos não-relacionais ou NoSQL, por não usar o modelo tradicional de tabelas com colunas que se relacionam entre si. No MongoDB, trabalhamos com documentos BSON (JSON binário) em um modelo de objetos quase idêntico ao do JavaScript.

Falaremos melhor de MongoDB quando chegar a hora, pois ele será o banco de dados que utilizaremos em nossas lições que exijam persistência de informações. Por ora, apenas baixe e extraia o conteúdo do pacote compactado de MongoDB para o seu sistema operacional, sendo a pasta de arquivos de programas ou similar a mais recomendada. Você encontra a distribuição gratuita de MongoDB para o seu sistema operacional no site oficial:

http://mongodb.org

Apenas extraia os arquivos, não há necessidade de qualquer configuração e entraremos nos detalhes quando chegar a hora certa.