Ambiente Node.js

Escrito em 07 de setembro de 2019 por Lucas Vieira
lucasvieira@protonmail.com

Introdução

O que é Node.js?

  • Plataforma baseada em JavaScript, functionando sobre a engine V8 do Google Chrome
  • Utilizado em aplicações com I/O intensivo (streaming de vídeo, websites de página única, aplicativos web)
  • Código-aberto, livre, grande comunidade, muitos recursos disponíveis
  • Baseado em eventos e programação assíncrona
  • Modelo de nonblocking I/O
  • Cross-platform

Node.js não é aconselhável para aplicações com uso intensivo de CPU.

Configuração do ambiente

Editores de texto

Qualquer editor de texto serve. Não precisamos de uma IDE.

Pesquise por um editor de texto que adeque-se aos seus usos; você não precisará de uma ferramenta sofisticada no início.

Algumas sugestões:

  • Emacs
  • Vim
  • Visual Studio Code
  • Sublime Text 3

Instalação

  • Windows
    Baixe o instalador em https://nodejs.org/.
  • Linux
    Baixe o tarball no mesmo site, ou instale o pacote do Node.js a partir dos repositórios da sua distribuição Linux (recomendado).
  • Mac OS
    Baixe o instalador (extensão .pkg) no site do Node.js.

Não precisamos instalar a versão LTS.

Após a instalação, vocẽ deverá conseguir testar o Node.js. Crie um arquivo main.js e escreva nele:

console.log("Hello, world!");

Execute no console usando:

$ node main.js

Primeiros programas

Fizzbuzz

Escreva um programa que itera de 1 a 30 e:

  • Imprima "fizz" quando o número é múltiplo de 3;
  • Imprima "buzz" quando o número é múltiplo de 5;
  • Imprima "fizzbuzz" quando o número é múltiplo de 3 e 5;
  • Caso contrário, imprima o número.

Resposta

for(let i = 1; i < 30; i++) {
    if(!(i % 15)) {
        console.log("fizzbuzz");
    } else if(!(i % 3)) {
        console.log("fizz");
    } else if(!(i % 5)) {
        console.log("buzz");
    } else {
        console.log(i);
    }
}

Servidor web simples

Utilizaremos o módulo built-in do Node.js para escrever um servidor simples que responde a solicitações HTTP na porta 8081.

const http = require("http");

http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.end("Hello World\n");
}).listen(8081);

console.log("Server running at http://127.0.0.1:8081/");

REPL

Abrindo o REPL

Para abrir o REPL (Read-Eval-Print-Loop), basta abrir o Node.js no console, sem nenhum argumento:

$ node
> 

Expressões simples

1 + 1

Variáveis

var x = 1 + 1;
let y = 2 + 2;

Funções

// Sintaxe clássica
function foo(a, b) {
    return a + b;
}

// Sintaxe ES6, com escopo
const bar = (a, b) => {
    return a + b;
};

// Sintaxe ES6, monolinha
const baz = (a, b) => a + b;

Expressões multilinha

Caso você entre com uma expressão que demande várias linhas no REPL, Node.js permite que você continue em uma expressão multilinha.

Variável underscore

Armazena temporariamente o resultado da última operação. Só funciona no REPL.

> const baz = (a, b) => a + b;
undefined
> baz(2, 3);
5
> _ + 2;
7

Comandos do REPL

  • Ctrl+C: Aborta o comando atual
  • Ctrl+C duas vezes: Fecha o REPL
  • Ctrl+D: Fecha o REPL
  • Cima/Baixo: Histórico
  • Tab: Opções disponíveis
  • .help: Ajuda
  • .break: Encerra multilinha
  • .clear: Encerra multilinha
  • .save nome-do-arquivo
  • .load nome-do-arquivo

Node Package Manager (npm)

O que é o npm

npm é o gerenciador de pacotes e projetos para Node.js. Site oficial: https://www.npmjs.com/

Criando um projeto

Criando o diretório

Crie uma pasta e inicialize um projeto Node.js, usando o npm.

Crie também um arquivo index.js ou similar.

$ mkdir meu_projeto && cd meu_projeto
$ npm init
$ touch index.js

Usando um pacote

Para este exemplo, utilizaremos o Express, um framework web minimalista para criar servidores web.

Link do pacote no NPM: https://www.npmjs.com/package/express

$ cd /my/project/dir
$ npm install --save express
const express = require("express");
const server  = express();

server.get("/", function(request, response) {
    response.send("Hello, world!");
});

server.listen(8081);

Gerenciando módulos

Instalação

Ao criar um projeto, é importante adicionar a pasta node_modules ao arquivo .gitignore. Assim, a pasta não será mandada para o servidor Git.

Se você tiver clonado um projeto, instale as dependências com npm install.

Desinstalação

$ npm uninstall package

Listagem

$ npm ls

Atualização

$ npm update package

Pesquisa

$ npm search package

Instalação global e instalação local

Instalação global

Você também pode instalar globalmente uma dependência:

$ npm install -g lite-server

Instalar globalmente pode requerer permissões de administrador.

Prefixo de instalação

Uma forma de instalar pacotes do Node.js sem permissões é fornecer uma outra variável PATH. Por exemplo, no Linux, basta editar o arquivo ~/.npmrc (ou C:\Users\{username}\.npmrc no Windows) e adicionar algo como:

prefix = "~/.local/"

Assegure-se de que o diretório bin/ no caminho informado esteja na variável de sistema $PATH.

Arquivo package.json

O arquivo package.json contém os detalhes do seu projeto, e normalmente é gerenciado pelo próprio npm.

{
  "name": "meu_projeto",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

Exercícios

Veja o básico de JavaScript na Codecademy. Você deverá fazer as seguintes lições: Introduction, Conditionals, Functions, Scope, Arrays, Loops, Iterators, Objects.

Link: https://www.codecademy.com/learn/introduction-to-javascript

De volta à página anterior