SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
NodeJSNodeJS
Prof. Alex Dias Camargo
alexcamargo@ifsul.edu.br
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
SUL-RIO-GRANDENSE
CÂMPUS BAGÉ
PROGRAMAÇÃO PARA WEB II
2
I. Plano de aula
Na aula anterior foi visto:
 Padrão de arquitetura de software MVC
 Definições e aplicação de JSF
PWII - NodeJS
3
I. Plano de aula
Nesta aula será apresentado:
 Conceitos, arquitetura e utilização
 Fundamentos e sintaxe de programação
PWII - NodeJS
4
1. Introdução
Node.js é uma plataforma para desenvolvimento de aplicações
baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.
 Ambiente de execução JavaScript orientado a eventos.
PWII - NodeJS
5
1. Introdução
PWII - NodeJS
Figura. Arquitetura Node
6
1. Introdução
Node.js é uma plataforma para desenvolvimento de aplicações
baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.
 Ambiente de execução JavaScript orientado a eventos.
 Node.js não é um framework, tampouco uma linguagem de
programação; ele é um runtime. Plataforma de I/O.
PWII - NodeJS
7
1. Introdução
PWII - NodeJS
Figura. Exemplos de fontes de I/O com Node
8
1. Introdução
Node.js é uma plataforma para desenvolvimento de aplicações
baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.
 Ambiente de execução JavaScript orientado a eventos.
 Node.js não é um framework, tampouco uma linguagem de
programação; ele é um runtime. Plataforma de I/O.
 JavaScript full stack: aplicável tanto em client-side quanto
em server-side.
PWII - NodeJS
9
1. Introdução
PWII - NodeJS
Figura. JavaScript full stack com Node
10
1. Introdução
PWII - NodeJS
Figura. MEAN stack: coleção de tecnologias
11
1. Introdução
Node.js é uma plataforma para desenvolvimento de aplicações
baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.
 Ambiente de execução JavaScript orientado a eventos.
 Node.js não é um framework, tampouco uma linguagem de
programação; ele é um runtime. Plataforma de I/O.
 JavaScript full stack: aplicável tanto em client-side quanto
em server-side.
 As interações serão executadas através de requisições
assíncronas.
PWII - NodeJS
12
1. Introdução
PWII - NodeJS
Figura. Conexões assíncronas
13
1. Introdução
Node.js é uma plataforma para desenvolvimento de aplicações
baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.
 Ambiente de execução JavaScript orientado a eventos.
 Node.js não é um framework, tampouco uma linguagem de
programação; ele é um runtime. Plataforma de I/O.
 JavaScript full stack: aplicável tanto em client-side quanto
em server-side.
 As interações serão executadas através de requisições
assíncronas.
 A aplicação é executada em uma máquina virtual específica,
chamada V8. A mesma desenvolvida para o Chrome.
PWII - NodeJS
14
1. Introdução
PWII - NodeJS
Figura. Engine V8
15
1. Introdução
PWII - NodeJS
Nota. Que problema o Node pode resolver?
16
2. Instalação
O método apresentado funciona para máquinas Linux desktop e
servidores privados virtuais (VPS).
 Instalação: sudo apt-get install nodejs; sudo apt-get install
nvm. Verifica a versão: node -v
 nvm: nvm install -g <nome-do-pacote>
Para saber a localização global: npm root -g
 Runtime online: https://repl.it/languages/nodejs
PWII - NodeJS
17
2. Instalação
PWII - NodeJS
Figura. Repl.it: Executando o Node online
18
3. Exemplos práticos
 servidor.js: para inicializar um servidor "node server.js"
var http = require('http');
var server = http.createServer();
server.on('request', function(req,res) {

res.writeHead(200, {
 'Content-Type': 'text/html; charset=utf-
8' });
res.end('Executando o node...');
});
server.listen(3000);
console.log('Servidor iniciado em http://127.0.0.1:3000.
Pressione Ctrl+C para encerrar.');
PWII - NodeJS
19
3. Exemplos práticos
 alomundo.js: exibe a mensagem Alô, mundo! (cont.)
// ouve o request e faz as operações
server.listen(3000);
// exibe uma mensagem no terminal
console.log('Servidor iniciado em http://127.0.0.1:3000.
Pressione Ctrl+C para encerrar.');
PWII - NodeJS
20
3. Exemplos práticos
 frases.js: escreve duas frases no terminal, porém uma delas
precisa ser carregada da memória antes de ser impressa.
var frase;
// lê uma determinada frase de uma fonte de dados
carregaFrase = function (callback) {

setTimeout(function() {

// simula a leitura da frase no banco de dados
frase = "Minha frase obstrutiva";
callback();
}, 3000)
}
PWII - NodeJS
21
3. Exemplos práticos
 frases.js: escreve duas frases no terminal, porém uma delas
precisa ser carregada da memória antes de ser impressa.
(cont.)
// imprime o valor de uma determinada variável no console
imprimeFrase = function () {

console.log(frase);
}
carregaFrase(imprimeFrase);
console.log("Olá");
PWII - NodeJS
22
3. Exemplos práticos
 interacao.js: interação com o usuário.
const readline = require('readline').createInterface({

input: process.stdin,
output: process.stdout
})
readline.question(`Qual é o seu nome? `, name => {

console.log(`Oi, ${
name}!`)
readline.close()
})
PWII - NodeJS
23
3. Exemplos práticos
 rotas.js: rotas de navegação web.
// requisita o módulo http
var http = require('http');
// cria um servidor no computador
var server = http.createServer(function(request, response){

// cria o cabeçalho HTML
response.writeHead(200, {
"Content-Type": "text/html"});
PWII - NodeJS
24
3. Exemplos práticos
 rotas.js: rotas de navegação web. (cont.)
// método que retorna uma string sobre o que foi digitado na
url do navegador
//http://localhost:3000
if(request.url == "/"){

response.write("<html><body><h1>Página inicial</h1>");
response.write("<a href='/bemvindo'>Acessar página de
boas-vindas</a>");
response.write("</body></html>");
// http://localhost:3000/bemvindo
}else if(request.url == "/bemvindo"){

response.write("<html><body><h1>Bem-vindo ao Node.js!
</h1>");
PWII - NodeJS
25
3. Exemplos práticos
 rotas.js: rotas de navegação web. (cont.)
response.write("<a href='/'>Acessar a página inicial</a>");
response.write("</body></html>");
}else{

// se não encontrar a url solicitada
response.write("<html><body><h1>Página não
encontrada!</h1>");
response.write("<a href='/'>Acessar a página inicial</a>");
response.write("</body></html>");
}
response.end();
});
PWII - NodeJS
26
3. Exemplos práticos
 rotas.js: rotas de navegação web. (cont.)
// ouve o request e faz as operações
server.listen(3000, function(){

// exibe uma mensagem no terminal
console.log('Executando o servidor HTTP...');
});
PWII - NodeJS
27
4. Fundamentos Node.js
Nesta seção serão abordados os principais conceitos da sintaxe
Node.js, incluindo:
 Como incluir bibliotecas externas via requisição de módulos.
 A função dos callbacks.
 O padrão Event.
 Transmissão de dados "um pedaço de cada vez"
PWII - NodeJS
28
4. Fundamentos Node.js
Modules. O nodejs implementa a interface CommonJS para seus
módulos. É possível carregar outras dependências usando a
palavra-chave require.
var http = require('http');
var dns = require('dns');
var myFile = require('./myFile'); // carrega myFile.js
PWII - NodeJS
29
4. Fundamentos Node.js
Callbacks. Uma função assíncrona invoca um callback (retorno de
chamada), ou seja, uma função geralmente passada como o último
argumento para continuar o programa assim que terminado.
var dns = require('dns');
dns.resolve4('www.google.com', function (err, addresses) {

if (err) throw err;
console.log('addresses: ' + JSON.stringify(addresses));
});
 É passado um retorno de chamada (a função anônima inline)
como o segundo argumento para a função assíncrona
dns.resolve4. Uma vez que a função assíncrona tenha a
resposta, ela invocará o retorno de chamada, continuando,
assim, a execução do programa.
PWII - NodeJS
30
4. Fundamentos Node.js
Events. O padrão de retorno de chamada geralmente funciona
bem para muitos casos. Porém, existem situações que exigem a
notificação de eventos que não ocorrem ao mesmo tempo.
var irc = require('irc');
var client = new irc.Client('irc.freenode.net', 'myIrcBot', {

channels: ['#sample-channel'] });
client.on('error', function(message) {

console.error('error: ', message); });
client.on('connect', function() {

console.log('connected to the irc server'); });
client.on('message', function (from, to, message) {

console.log(from + ' => ' + to + ': ' + message); });
client.on('pm', function (from, message) {

console.log(from + ' => ME: ' + message); });
PWII - NodeJS
31
4. Fundamentos Node.js
Streams. Representam uma interface abstrata para manipular de
forma assíncrona um fluxo contínuo de dados. Assim como os pipes
Unix, implementam um operador de composição chamado pipe().
var crypto = require('crypto');
var fs = require('fs');
var zlib = require('zlib');
var password = new Buffer(process.env.PASS || 'password');
var encryptStream = crypto.createCipher('aes-256-cbc',
password);
PWII - NodeJS
32
4. Fundamentos Node.js
Streams. Representam uma interface abstrata para manipular de
forma assíncrona um fluxo contínuo de dados. Assim como os pipes
Unix, implementam um operador de composição chamado pipe().
var gzip = zlib.createGzip();
var readStream = fs.createReadStream(**filename); // current
file
var writeStream = fs.createWriteStream(**dirname + '/out.gz');
readStream // lê o arquivo corrente
.pipe(encryptStream) // cifra
.pipe(gzip) // comprime
.pipe(writeStream) // escreve o arquivo de saída
.on('finish', function () {
 // confirmação de sucesso
console.log('done');
});
PWII - NodeJS
33
5. Exercícios
1. Responda o quis sobre Node.js disponível em:
https://www.tutorialsteacher.com/online-test/nodejs-test
2. Determine e informe a faixa etária de uma pessoa, a partir do
seu ano de nascimento e do ano atual. Saída no terminal e no
navegador.
Faixas:
0 a 11 anos: criança
12 a 17 anos: adolescente
18 a 64 anos: adulto
65 em diante: idoso
3. Escrever um programa que leia, valores inteiros, até ser lido o
valor -99. Quando isso acontecer, o programa deverá escrever a
soma e a média dos valores lidos. Saída no terminal e no
navegador.
PWII - NodeJS
34
Referências
GEARY, D. M. Core JavaServer Faces. 3ª Edição São Paulo: Alta
Books, 2012.
LUCKOW, D. H.; MELO, A. A. Programação Java para Web:
aprenda a desenvolver uma aplicação financeira pessoal
com as ferramentas mais modernas da plataforma Java. 2ª
Edição. São Paulo: Novatec, 2015.
SIERRA, K. Use a cabeça! JSP & Servlets. 2ª Edição, São Paulo:
Alta Books, 2008.
PWII - NodeJS

Mais conteúdo relacionado

Mais procurados

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
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Emerson Macedo
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...Tchelinux
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIsElton Minetto
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Docker de containers a orquestração
Docker de containers a orquestraçãoDocker de containers a orquestração
Docker de containers a orquestraçãoItalo José
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Ferramentas para desenvolvimento no blockchain Ethereum
Ferramentas para desenvolvimento no blockchain EthereumFerramentas para desenvolvimento no blockchain Ethereum
Ferramentas para desenvolvimento no blockchain EthereumOriginalMy.com
 
Gerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMPGerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMPMauro Tapajós
 
Workshop de desenvolvimento para blockchain Ethereum
Workshop de desenvolvimento para blockchain EthereumWorkshop de desenvolvimento para blockchain Ethereum
Workshop de desenvolvimento para blockchain EthereumOriginalMy.com
 

Mais procurados (18)

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
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Node.js no Pagar.me
Node.js no Pagar.meNode.js no Pagar.me
Node.js no Pagar.me
 
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
Escalando MongoDB com Docker - Cristiano dos Santos Diedrich - Tchelinux Bent...
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIs
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Docker de containers a orquestração
Docker de containers a orquestraçãoDocker de containers a orquestração
Docker de containers a orquestração
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Ferramentas para desenvolvimento no blockchain Ethereum
Ferramentas para desenvolvimento no blockchain EthereumFerramentas para desenvolvimento no blockchain Ethereum
Ferramentas para desenvolvimento no blockchain Ethereum
 
Gerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMPGerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMP
 
Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
Workshop de desenvolvimento para blockchain Ethereum
Workshop de desenvolvimento para blockchain EthereumWorkshop de desenvolvimento para blockchain Ethereum
Workshop de desenvolvimento para blockchain Ethereum
 
JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 

Semelhante a Programação para Web II: NodeJS

Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Pablo Souza
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Programação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java WebProgramação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java WebAlex Camargo
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Felipe Silveira
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSJackson F. de A. Mafra
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Fabrício Lopes Sanchez
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDBLuiz Duarte
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xRodrigo Kono
 

Semelhante a Programação para Web II: NodeJS (20)

Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
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
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
Programação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java WebProgramação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java Web
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Node.js
Node.jsNode.js
Node.js
 
Asp.Net Core - Meetup BH
Asp.Net Core - Meetup BHAsp.Net Core - Meetup BH
Asp.Net Core - Meetup BH
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
Asp.net core
Asp.net coreAsp.net core
Asp.net core
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDB
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
 

Mais de Alex Camargo

Escola Bíblica - Eclesiologia
Escola Bíblica - EclesiologiaEscola Bíblica - Eclesiologia
Escola Bíblica - EclesiologiaAlex Camargo
 
Escola Bíblica - Demonologia
Escola Bíblica - DemonologiaEscola Bíblica - Demonologia
Escola Bíblica - DemonologiaAlex Camargo
 
Python para finanças: explorando dados financeiros
Python para finanças: explorando dados financeirosPython para finanças: explorando dados financeiros
Python para finanças: explorando dados financeirosAlex Camargo
 
A practical guide: How to use Bitcoins?
A practical guide: How to use Bitcoins?A practical guide: How to use Bitcoins?
A practical guide: How to use Bitcoins?Alex Camargo
 
IA e Bioinformática: modelos computacionais de proteínas
IA e Bioinformática: modelos computacionais de proteínasIA e Bioinformática: modelos computacionais de proteínas
IA e Bioinformática: modelos computacionais de proteínasAlex Camargo
 
Introdução às criptomoedas: investimento, mercado e segurança
Introdução às criptomoedas: investimento, mercado e segurançaIntrodução às criptomoedas: investimento, mercado e segurança
Introdução às criptomoedas: investimento, mercado e segurançaAlex Camargo
 
Introdução às criptomoedas: criando a sua própria moeda como o Bitcoin!
Introdução às criptomoedas:  criando a sua própria moeda como o Bitcoin!Introdução às criptomoedas:  criando a sua própria moeda como o Bitcoin!
Introdução às criptomoedas: criando a sua própria moeda como o Bitcoin!Alex Camargo
 
Cristão versus Redes Sociais - Alex (Arca da Aliança)
Cristão versus Redes Sociais - Alex (Arca da Aliança)Cristão versus Redes Sociais - Alex (Arca da Aliança)
Cristão versus Redes Sociais - Alex (Arca da Aliança)Alex Camargo
 
Empatia e compaixão: O Bom Samaritano
Empatia e compaixão: O Bom SamaritanoEmpatia e compaixão: O Bom Samaritano
Empatia e compaixão: O Bom SamaritanoAlex Camargo
 
Alta performance em IA: uma abordagem pratica
Alta performance em IA: uma abordagem praticaAlta performance em IA: uma abordagem pratica
Alta performance em IA: uma abordagem praticaAlex Camargo
 
Bioinformática do DNA ao medicamento: ferramentas e usabilidade
Bioinformática do DNA ao medicamento: ferramentas e usabilidadeBioinformática do DNA ao medicamento: ferramentas e usabilidade
Bioinformática do DNA ao medicamento: ferramentas e usabilidadeAlex Camargo
 
Inteligência Artificial aplicada: reconhecendo caracteres escritos à mão
Inteligência Artificial aplicada: reconhecendo caracteres escritos à mãoInteligência Artificial aplicada: reconhecendo caracteres escritos à mão
Inteligência Artificial aplicada: reconhecendo caracteres escritos à mãoAlex Camargo
 
IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)
IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)
IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)Alex Camargo
 
Algoritmos de inteligência artificial para classificação de notícias falsas. ...
Algoritmos de inteligência artificial para classificação de notícias falsas. ...Algoritmos de inteligência artificial para classificação de notícias falsas. ...
Algoritmos de inteligência artificial para classificação de notícias falsas. ...Alex Camargo
 
Fake News - Conceitos, métodos e aplicações de identificação e mitigação
Fake News - Conceitos, métodos e aplicações de identificação e mitigaçãoFake News - Conceitos, métodos e aplicações de identificação e mitigação
Fake News - Conceitos, métodos e aplicações de identificação e mitigaçãoAlex Camargo
 
PredictCovid: IA. SIEPE UNIPAMPA 2020
PredictCovid: IA. SIEPE UNIPAMPA 2020PredictCovid: IA. SIEPE UNIPAMPA 2020
PredictCovid: IA. SIEPE UNIPAMPA 2020Alex Camargo
 
Ia versus covid 19 - alex
Ia versus covid 19 - alexIa versus covid 19 - alex
Ia versus covid 19 - alexAlex Camargo
 
2a Mini-conf PredictCovid. Field: Artificial Intelligence
2a Mini-conf PredictCovid. Field: Artificial Intelligence2a Mini-conf PredictCovid. Field: Artificial Intelligence
2a Mini-conf PredictCovid. Field: Artificial IntelligenceAlex Camargo
 
Aula 5 - Considerações finais
Aula 5 - Considerações finaisAula 5 - Considerações finais
Aula 5 - Considerações finaisAlex Camargo
 
Aula 04 - Injeção de código (Cross-Site Scripting)
Aula 04 - Injeção de código (Cross-Site Scripting)Aula 04 - Injeção de código (Cross-Site Scripting)
Aula 04 - Injeção de código (Cross-Site Scripting)Alex Camargo
 

Mais de Alex Camargo (20)

Escola Bíblica - Eclesiologia
Escola Bíblica - EclesiologiaEscola Bíblica - Eclesiologia
Escola Bíblica - Eclesiologia
 
Escola Bíblica - Demonologia
Escola Bíblica - DemonologiaEscola Bíblica - Demonologia
Escola Bíblica - Demonologia
 
Python para finanças: explorando dados financeiros
Python para finanças: explorando dados financeirosPython para finanças: explorando dados financeiros
Python para finanças: explorando dados financeiros
 
A practical guide: How to use Bitcoins?
A practical guide: How to use Bitcoins?A practical guide: How to use Bitcoins?
A practical guide: How to use Bitcoins?
 
IA e Bioinformática: modelos computacionais de proteínas
IA e Bioinformática: modelos computacionais de proteínasIA e Bioinformática: modelos computacionais de proteínas
IA e Bioinformática: modelos computacionais de proteínas
 
Introdução às criptomoedas: investimento, mercado e segurança
Introdução às criptomoedas: investimento, mercado e segurançaIntrodução às criptomoedas: investimento, mercado e segurança
Introdução às criptomoedas: investimento, mercado e segurança
 
Introdução às criptomoedas: criando a sua própria moeda como o Bitcoin!
Introdução às criptomoedas:  criando a sua própria moeda como o Bitcoin!Introdução às criptomoedas:  criando a sua própria moeda como o Bitcoin!
Introdução às criptomoedas: criando a sua própria moeda como o Bitcoin!
 
Cristão versus Redes Sociais - Alex (Arca da Aliança)
Cristão versus Redes Sociais - Alex (Arca da Aliança)Cristão versus Redes Sociais - Alex (Arca da Aliança)
Cristão versus Redes Sociais - Alex (Arca da Aliança)
 
Empatia e compaixão: O Bom Samaritano
Empatia e compaixão: O Bom SamaritanoEmpatia e compaixão: O Bom Samaritano
Empatia e compaixão: O Bom Samaritano
 
Alta performance em IA: uma abordagem pratica
Alta performance em IA: uma abordagem praticaAlta performance em IA: uma abordagem pratica
Alta performance em IA: uma abordagem pratica
 
Bioinformática do DNA ao medicamento: ferramentas e usabilidade
Bioinformática do DNA ao medicamento: ferramentas e usabilidadeBioinformática do DNA ao medicamento: ferramentas e usabilidade
Bioinformática do DNA ao medicamento: ferramentas e usabilidade
 
Inteligência Artificial aplicada: reconhecendo caracteres escritos à mão
Inteligência Artificial aplicada: reconhecendo caracteres escritos à mãoInteligência Artificial aplicada: reconhecendo caracteres escritos à mão
Inteligência Artificial aplicada: reconhecendo caracteres escritos à mão
 
IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)
IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)
IA versus COVID-19 Deep Learning, Códigos e Execução em nuvem (Tchelinux 2020)
 
Algoritmos de inteligência artificial para classificação de notícias falsas. ...
Algoritmos de inteligência artificial para classificação de notícias falsas. ...Algoritmos de inteligência artificial para classificação de notícias falsas. ...
Algoritmos de inteligência artificial para classificação de notícias falsas. ...
 
Fake News - Conceitos, métodos e aplicações de identificação e mitigação
Fake News - Conceitos, métodos e aplicações de identificação e mitigaçãoFake News - Conceitos, métodos e aplicações de identificação e mitigação
Fake News - Conceitos, métodos e aplicações de identificação e mitigação
 
PredictCovid: IA. SIEPE UNIPAMPA 2020
PredictCovid: IA. SIEPE UNIPAMPA 2020PredictCovid: IA. SIEPE UNIPAMPA 2020
PredictCovid: IA. SIEPE UNIPAMPA 2020
 
Ia versus covid 19 - alex
Ia versus covid 19 - alexIa versus covid 19 - alex
Ia versus covid 19 - alex
 
2a Mini-conf PredictCovid. Field: Artificial Intelligence
2a Mini-conf PredictCovid. Field: Artificial Intelligence2a Mini-conf PredictCovid. Field: Artificial Intelligence
2a Mini-conf PredictCovid. Field: Artificial Intelligence
 
Aula 5 - Considerações finais
Aula 5 - Considerações finaisAula 5 - Considerações finais
Aula 5 - Considerações finais
 
Aula 04 - Injeção de código (Cross-Site Scripting)
Aula 04 - Injeção de código (Cross-Site Scripting)Aula 04 - Injeção de código (Cross-Site Scripting)
Aula 04 - Injeção de código (Cross-Site Scripting)
 

Programação para Web II: NodeJS

  • 1. NodeJSNodeJS Prof. Alex Dias Camargo alexcamargo@ifsul.edu.br INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA SUL-RIO-GRANDENSE CÂMPUS BAGÉ PROGRAMAÇÃO PARA WEB II
  • 2. 2 I. Plano de aula Na aula anterior foi visto:  Padrão de arquitetura de software MVC  Definições e aplicação de JSF PWII - NodeJS
  • 3. 3 I. Plano de aula Nesta aula será apresentado:  Conceitos, arquitetura e utilização  Fundamentos e sintaxe de programação PWII - NodeJS
  • 4. 4 1. Introdução Node.js é uma plataforma para desenvolvimento de aplicações baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.  Ambiente de execução JavaScript orientado a eventos. PWII - NodeJS
  • 5. 5 1. Introdução PWII - NodeJS Figura. Arquitetura Node
  • 6. 6 1. Introdução Node.js é uma plataforma para desenvolvimento de aplicações baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.  Ambiente de execução JavaScript orientado a eventos.  Node.js não é um framework, tampouco uma linguagem de programação; ele é um runtime. Plataforma de I/O. PWII - NodeJS
  • 7. 7 1. Introdução PWII - NodeJS Figura. Exemplos de fontes de I/O com Node
  • 8. 8 1. Introdução Node.js é uma plataforma para desenvolvimento de aplicações baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.  Ambiente de execução JavaScript orientado a eventos.  Node.js não é um framework, tampouco uma linguagem de programação; ele é um runtime. Plataforma de I/O.  JavaScript full stack: aplicável tanto em client-side quanto em server-side. PWII - NodeJS
  • 9. 9 1. Introdução PWII - NodeJS Figura. JavaScript full stack com Node
  • 10. 10 1. Introdução PWII - NodeJS Figura. MEAN stack: coleção de tecnologias
  • 11. 11 1. Introdução Node.js é uma plataforma para desenvolvimento de aplicações baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.  Ambiente de execução JavaScript orientado a eventos.  Node.js não é um framework, tampouco uma linguagem de programação; ele é um runtime. Plataforma de I/O.  JavaScript full stack: aplicável tanto em client-side quanto em server-side.  As interações serão executadas através de requisições assíncronas. PWII - NodeJS
  • 12. 12 1. Introdução PWII - NodeJS Figura. Conexões assíncronas
  • 13. 13 1. Introdução Node.js é uma plataforma para desenvolvimento de aplicações baseadas em rede utilizando JavaScript e o V8 JavaScript Engine.  Ambiente de execução JavaScript orientado a eventos.  Node.js não é um framework, tampouco uma linguagem de programação; ele é um runtime. Plataforma de I/O.  JavaScript full stack: aplicável tanto em client-side quanto em server-side.  As interações serão executadas através de requisições assíncronas.  A aplicação é executada em uma máquina virtual específica, chamada V8. A mesma desenvolvida para o Chrome. PWII - NodeJS
  • 14. 14 1. Introdução PWII - NodeJS Figura. Engine V8
  • 15. 15 1. Introdução PWII - NodeJS Nota. Que problema o Node pode resolver?
  • 16. 16 2. Instalação O método apresentado funciona para máquinas Linux desktop e servidores privados virtuais (VPS).  Instalação: sudo apt-get install nodejs; sudo apt-get install nvm. Verifica a versão: node -v  nvm: nvm install -g <nome-do-pacote> Para saber a localização global: npm root -g  Runtime online: https://repl.it/languages/nodejs PWII - NodeJS
  • 17. 17 2. Instalação PWII - NodeJS Figura. Repl.it: Executando o Node online
  • 18. 18 3. Exemplos práticos  servidor.js: para inicializar um servidor "node server.js" var http = require('http'); var server = http.createServer(); server.on('request', function(req,res) {
 res.writeHead(200, {
 'Content-Type': 'text/html; charset=utf- 8' }); res.end('Executando o node...'); }); server.listen(3000); console.log('Servidor iniciado em http://127.0.0.1:3000. Pressione Ctrl+C para encerrar.'); PWII - NodeJS
  • 19. 19 3. Exemplos práticos  alomundo.js: exibe a mensagem Alô, mundo! (cont.) // ouve o request e faz as operações server.listen(3000); // exibe uma mensagem no terminal console.log('Servidor iniciado em http://127.0.0.1:3000. Pressione Ctrl+C para encerrar.'); PWII - NodeJS
  • 20. 20 3. Exemplos práticos  frases.js: escreve duas frases no terminal, porém uma delas precisa ser carregada da memória antes de ser impressa. var frase; // lê uma determinada frase de uma fonte de dados carregaFrase = function (callback) {
 setTimeout(function() {
 // simula a leitura da frase no banco de dados frase = "Minha frase obstrutiva"; callback(); }, 3000) } PWII - NodeJS
  • 21. 21 3. Exemplos práticos  frases.js: escreve duas frases no terminal, porém uma delas precisa ser carregada da memória antes de ser impressa. (cont.) // imprime o valor de uma determinada variável no console imprimeFrase = function () {
 console.log(frase); } carregaFrase(imprimeFrase); console.log("Olá"); PWII - NodeJS
  • 22. 22 3. Exemplos práticos  interacao.js: interação com o usuário. const readline = require('readline').createInterface({
 input: process.stdin, output: process.stdout }) readline.question(`Qual é o seu nome? `, name => {
 console.log(`Oi, ${
name}!`) readline.close() }) PWII - NodeJS
  • 23. 23 3. Exemplos práticos  rotas.js: rotas de navegação web. // requisita o módulo http var http = require('http'); // cria um servidor no computador var server = http.createServer(function(request, response){
 // cria o cabeçalho HTML response.writeHead(200, {
"Content-Type": "text/html"}); PWII - NodeJS
  • 24. 24 3. Exemplos práticos  rotas.js: rotas de navegação web. (cont.) // método que retorna uma string sobre o que foi digitado na url do navegador //http://localhost:3000 if(request.url == "/"){
 response.write("<html><body><h1>Página inicial</h1>"); response.write("<a href='/bemvindo'>Acessar página de boas-vindas</a>"); response.write("</body></html>"); // http://localhost:3000/bemvindo }else if(request.url == "/bemvindo"){
 response.write("<html><body><h1>Bem-vindo ao Node.js! </h1>"); PWII - NodeJS
  • 25. 25 3. Exemplos práticos  rotas.js: rotas de navegação web. (cont.) response.write("<a href='/'>Acessar a página inicial</a>"); response.write("</body></html>"); }else{
 // se não encontrar a url solicitada response.write("<html><body><h1>Página não encontrada!</h1>"); response.write("<a href='/'>Acessar a página inicial</a>"); response.write("</body></html>"); } response.end(); }); PWII - NodeJS
  • 26. 26 3. Exemplos práticos  rotas.js: rotas de navegação web. (cont.) // ouve o request e faz as operações server.listen(3000, function(){
 // exibe uma mensagem no terminal console.log('Executando o servidor HTTP...'); }); PWII - NodeJS
  • 27. 27 4. Fundamentos Node.js Nesta seção serão abordados os principais conceitos da sintaxe Node.js, incluindo:  Como incluir bibliotecas externas via requisição de módulos.  A função dos callbacks.  O padrão Event.  Transmissão de dados "um pedaço de cada vez" PWII - NodeJS
  • 28. 28 4. Fundamentos Node.js Modules. O nodejs implementa a interface CommonJS para seus módulos. É possível carregar outras dependências usando a palavra-chave require. var http = require('http'); var dns = require('dns'); var myFile = require('./myFile'); // carrega myFile.js PWII - NodeJS
  • 29. 29 4. Fundamentos Node.js Callbacks. Uma função assíncrona invoca um callback (retorno de chamada), ou seja, uma função geralmente passada como o último argumento para continuar o programa assim que terminado. var dns = require('dns'); dns.resolve4('www.google.com', function (err, addresses) {
 if (err) throw err; console.log('addresses: ' + JSON.stringify(addresses)); });  É passado um retorno de chamada (a função anônima inline) como o segundo argumento para a função assíncrona dns.resolve4. Uma vez que a função assíncrona tenha a resposta, ela invocará o retorno de chamada, continuando, assim, a execução do programa. PWII - NodeJS
  • 30. 30 4. Fundamentos Node.js Events. O padrão de retorno de chamada geralmente funciona bem para muitos casos. Porém, existem situações que exigem a notificação de eventos que não ocorrem ao mesmo tempo. var irc = require('irc'); var client = new irc.Client('irc.freenode.net', 'myIrcBot', {
 channels: ['#sample-channel'] }); client.on('error', function(message) {
 console.error('error: ', message); }); client.on('connect', function() {
 console.log('connected to the irc server'); }); client.on('message', function (from, to, message) {
 console.log(from + ' => ' + to + ': ' + message); }); client.on('pm', function (from, message) {
 console.log(from + ' => ME: ' + message); }); PWII - NodeJS
  • 31. 31 4. Fundamentos Node.js Streams. Representam uma interface abstrata para manipular de forma assíncrona um fluxo contínuo de dados. Assim como os pipes Unix, implementam um operador de composição chamado pipe(). var crypto = require('crypto'); var fs = require('fs'); var zlib = require('zlib'); var password = new Buffer(process.env.PASS || 'password'); var encryptStream = crypto.createCipher('aes-256-cbc', password); PWII - NodeJS
  • 32. 32 4. Fundamentos Node.js Streams. Representam uma interface abstrata para manipular de forma assíncrona um fluxo contínuo de dados. Assim como os pipes Unix, implementam um operador de composição chamado pipe(). var gzip = zlib.createGzip(); var readStream = fs.createReadStream(**filename); // current file var writeStream = fs.createWriteStream(**dirname + '/out.gz'); readStream // lê o arquivo corrente .pipe(encryptStream) // cifra .pipe(gzip) // comprime .pipe(writeStream) // escreve o arquivo de saída .on('finish', function () {
 // confirmação de sucesso console.log('done'); }); PWII - NodeJS
  • 33. 33 5. Exercícios 1. Responda o quis sobre Node.js disponível em: https://www.tutorialsteacher.com/online-test/nodejs-test 2. Determine e informe a faixa etária de uma pessoa, a partir do seu ano de nascimento e do ano atual. Saída no terminal e no navegador. Faixas: 0 a 11 anos: criança 12 a 17 anos: adolescente 18 a 64 anos: adulto 65 em diante: idoso 3. Escrever um programa que leia, valores inteiros, até ser lido o valor -99. Quando isso acontecer, o programa deverá escrever a soma e a média dos valores lidos. Saída no terminal e no navegador. PWII - NodeJS
  • 34. 34 Referências GEARY, D. M. Core JavaServer Faces. 3ª Edição São Paulo: Alta Books, 2012. LUCKOW, D. H.; MELO, A. A. Programação Java para Web: aprenda a desenvolver uma aplicação financeira pessoal com as ferramentas mais modernas da plataforma Java. 2ª Edição. São Paulo: Novatec, 2015. SIERRA, K. Use a cabeça! JSP & Servlets. 2ª Edição, São Paulo: Alta Books, 2008. PWII - NodeJS