























































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Ebook que comprei bem completo
Tipologia: Manuais, Projetos, Pesquisas
1 / 63
Esta página não é visível na pré-visualização
Não perca as partes importantes!
INICIANTES
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!
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.
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.
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
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á
Devido a essas características, podemos traçar alguns cenários de uso comuns, onde podemos explorar o real potencial de Node.js:
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.
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.
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.
Truth can only be found in one place: the code.
- Robert C. Martin
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
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.
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/
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.
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!
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.