SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Introdução ao Node.js
Apresentação e Exercícios Práticos
Prof. Edgar Eler
Sobre o Node.js
Plataforma construída sobre o motor JavaScript V8
do Google Chrome para construir aplicações de rede
rápidas e escaláveis. Site oficial: nodejs.org
Utiliza o modelo de Programação Orientada a
Eventos, como no JavaScript client-side.
Adota um padrão não obstrutivo de escrever código,
ou seja, você consegue estruturar seu código de
maneira que operações não dependam de nada que
está sendo executado para serem executadas de
forma independente.
Callbacks em Node.js
São funções que serão executadas de modo
assíncrono, ou posteriormente.
A chave para a compreensão de callbacks é perceber
que eles são utilizados sempre que você não sabe
quando alguma operação assíncrona estará completa,
mas você sabe quando se completará - a última linha
da função assíncrona!
Exercícios Práticos
Configurando o Ambiente
● Instale o Node.js: nodejs.org
● Acesse o site NodeSchool: nodeschool.io
● Clique em Tutorials: nodeschool.
io/#workshoppers
● Abra o Terminal (Console, Prompt, Shell, etc...)
● Instale os tutoriais do NodeSchool:
$ npm install -g learnyounode
Iniciando a Prática
● Navegue até a pasta onde deseja criar os códigos
dos exercícios
$ cd /home/edgar/UCL/Node.js/tutoriais
● Abra os exercícios do NodeSchool:
$ learnyounode
● Selecione o exercício desejado, por exemplo:
» HELLO WORLD
● Analise os requisitos de cada exercício. A seguir
serão exibidas as instruções para os 4 primeiros.
Instruções
● Abra um editor de texto, como o Atom (atom.io), e
navegue até a pastados exercícios.
● Crie o arquivo para o exercício 1, com a extensão .
js, por exemplo, ex1.js, e inicie a escrita dos código
JavaScript para a realização do o exercício.
● Para testar a execução de ex1.js, rode:
$ learnyounode run ex1.js
● Ao concluir o exercício, valide seu código:
$ learnyounode verify ex1.js
Instruções
● Caso o exercício esteja correto, o learnyounode
conterá uma mensagem informando o acerto e a
solução oficial do exercício:
✓ Submission results match expected
# PASS Your solution to HELLO WORLD passed!
● Caso o exercício esteja incorreto, a resposta
conterá os detalhes do erro, o local onde foi
encontrado e o texto:
✗ Submission results did not match expected!
# FAIL Your solution to HELLO WORLD didn't
pass. Try again!
Exercício 2
● Escreva um programa que aceite um ou mais
números como argumentos de linhas de comando
e imprima a soma destes números no console
○ Argumentos de linha de comando são
acessíveis pelo objeto global process.
○ O objeto process tem uma propriedade
chamada argv que é um vetor que contém a
linha de comando completa: process.argv
○ Executando node programa.js 1 2 3, retornará
o vetor:
[ 'node', '/pasta/do/programa.js', '1', '2', '3' ]
Exercício 3
● Escreva um programa que use apenas uma
operação síncrona que leia um arquivo e imprima
no console o número de novas linhas que ele
contém.
● Será necessário utilizar o módulo fs, da biblioteca
central do Node. Para carregar este tipo de
módulo, use a seguinte sintaxe:
var fs = require('fs');
● O caminho completo do arquivo será fornecido
como o primeiro argumento de linha de comando
(process.argv[2]).
Exercício 4
● Escreva um programa que use apenas uma
operação asíncrona que leia um arquivo e imprima
no console o número de novas linhas que ele
contém. O caminho completo do arquivo será
fornecido como o primeiro argumento de linha de
comando.
● A solução para este problema é quase a mesma
para o problema anterior, porém você terá de
fazer agora do jeito Node.js: asíncrono.
Exercício 4
● Ao invés de fs.readFileSync() você vai usar fs.
readFile() e ao invés de retornar um valor deste
método você precisa coletar o valor a partir de
uma função callback que você irá passar como
segundo parâmetro.
● Funções callback no Node.js normalmente
possuem a assinatura abaixo:
function callback(err, dados) { /* ... */ }
● Com isso você pode checar se ocorreu um erro por
verificar se o primeiro parâmetro é válido. Caso
não exista erro, você poderá ter seu objeto Buffer
como segundo parâmetro.
Contato: eler@edgar.systems

Mais conteúdo relacionado

Mais procurados

Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJSComo tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJSVinicius Kiatkoski Neves
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMakePaulo Remoli
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIMario Guedes
 
Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Serverpichiliani
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadMario Guedes
 
Definição de processos
Definição de processosDefinição de processos
Definição de processosRodrigo Almeida
 
Oficina shell
Oficina shellOficina shell
Oficina shellapsegundo
 
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBCZabbix BR
 
Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLpichiliani
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 

Mais procurados (20)

Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJSComo tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
 
Aula de Node
Aula de NodeAula de Node
Aula de Node
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMake
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Server
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
Node.js
Node.jsNode.js
Node.js
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Zope
ZopeZope
Zope
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
 
Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQL
 
Apt_vagrant_chef_olavo_queiroz
Apt_vagrant_chef_olavo_queirozApt_vagrant_chef_olavo_queiroz
Apt_vagrant_chef_olavo_queiroz
 
MRTG - SNMP na Prática
MRTG - SNMP na PráticaMRTG - SNMP na Prática
MRTG - SNMP na Prática
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Aula CRONTAB
Aula CRONTABAula CRONTAB
Aula CRONTAB
 

Semelhante a Introdução ao Node.js

Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação ISidney Roberto
 
Preparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angularPreparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angularNize Costa
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVAMarcio Palheta
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faqPedro De Almeida
 

Semelhante a Introdução ao Node.js (20)

Linguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem JavaLinguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem Java
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Preparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angularPreparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angular
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
Utilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.JsUtilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.Js
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVA
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 

Introdução ao Node.js

  • 1. Introdução ao Node.js Apresentação e Exercícios Práticos Prof. Edgar Eler
  • 2. Sobre o Node.js Plataforma construída sobre o motor JavaScript V8 do Google Chrome para construir aplicações de rede rápidas e escaláveis. Site oficial: nodejs.org Utiliza o modelo de Programação Orientada a Eventos, como no JavaScript client-side. Adota um padrão não obstrutivo de escrever código, ou seja, você consegue estruturar seu código de maneira que operações não dependam de nada que está sendo executado para serem executadas de forma independente.
  • 3. Callbacks em Node.js São funções que serão executadas de modo assíncrono, ou posteriormente. A chave para a compreensão de callbacks é perceber que eles são utilizados sempre que você não sabe quando alguma operação assíncrona estará completa, mas você sabe quando se completará - a última linha da função assíncrona!
  • 5. Configurando o Ambiente ● Instale o Node.js: nodejs.org ● Acesse o site NodeSchool: nodeschool.io ● Clique em Tutorials: nodeschool. io/#workshoppers ● Abra o Terminal (Console, Prompt, Shell, etc...) ● Instale os tutoriais do NodeSchool: $ npm install -g learnyounode
  • 6. Iniciando a Prática ● Navegue até a pasta onde deseja criar os códigos dos exercícios $ cd /home/edgar/UCL/Node.js/tutoriais ● Abra os exercícios do NodeSchool: $ learnyounode ● Selecione o exercício desejado, por exemplo: » HELLO WORLD ● Analise os requisitos de cada exercício. A seguir serão exibidas as instruções para os 4 primeiros.
  • 7. Instruções ● Abra um editor de texto, como o Atom (atom.io), e navegue até a pastados exercícios. ● Crie o arquivo para o exercício 1, com a extensão . js, por exemplo, ex1.js, e inicie a escrita dos código JavaScript para a realização do o exercício. ● Para testar a execução de ex1.js, rode: $ learnyounode run ex1.js ● Ao concluir o exercício, valide seu código: $ learnyounode verify ex1.js
  • 8. Instruções ● Caso o exercício esteja correto, o learnyounode conterá uma mensagem informando o acerto e a solução oficial do exercício: ✓ Submission results match expected # PASS Your solution to HELLO WORLD passed! ● Caso o exercício esteja incorreto, a resposta conterá os detalhes do erro, o local onde foi encontrado e o texto: ✗ Submission results did not match expected! # FAIL Your solution to HELLO WORLD didn't pass. Try again!
  • 9. Exercício 2 ● Escreva um programa que aceite um ou mais números como argumentos de linhas de comando e imprima a soma destes números no console ○ Argumentos de linha de comando são acessíveis pelo objeto global process. ○ O objeto process tem uma propriedade chamada argv que é um vetor que contém a linha de comando completa: process.argv ○ Executando node programa.js 1 2 3, retornará o vetor: [ 'node', '/pasta/do/programa.js', '1', '2', '3' ]
  • 10. Exercício 3 ● Escreva um programa que use apenas uma operação síncrona que leia um arquivo e imprima no console o número de novas linhas que ele contém. ● Será necessário utilizar o módulo fs, da biblioteca central do Node. Para carregar este tipo de módulo, use a seguinte sintaxe: var fs = require('fs'); ● O caminho completo do arquivo será fornecido como o primeiro argumento de linha de comando (process.argv[2]).
  • 11. Exercício 4 ● Escreva um programa que use apenas uma operação asíncrona que leia um arquivo e imprima no console o número de novas linhas que ele contém. O caminho completo do arquivo será fornecido como o primeiro argumento de linha de comando. ● A solução para este problema é quase a mesma para o problema anterior, porém você terá de fazer agora do jeito Node.js: asíncrono.
  • 12. Exercício 4 ● Ao invés de fs.readFileSync() você vai usar fs. readFile() e ao invés de retornar um valor deste método você precisa coletar o valor a partir de uma função callback que você irá passar como segundo parâmetro. ● Funções callback no Node.js normalmente possuem a assinatura abaixo: function callback(err, dados) { /* ... */ } ● Com isso você pode checar se ocorreu um erro por verificar se o primeiro parâmetro é válido. Caso não exista erro, você poderá ter seu objeto Buffer como segundo parâmetro.