SlideShare uma empresa Scribd logo
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
Global Objects
Não se esqueça que tudo que é
definido dentro do módulo é privado
Criando uma variável
index.js
1. var	
  max	
  =	
  10000;	
  
2. var	
  serialGenerator	
  =	
  require('./serialGenerator');	
  
3. console.log(serialGenerator.generate());
Tentando utilizar a variável
serialGenerator.js
1. module.exports.generate	
  =	
  function	
  ()	
  {	
  
2. 	
  	
  return	
  Math.floor(Math.random()	
  *	
  max);	
  
3. };
Node.js - #3 - Global Objects - Rodrigo Branas
Existe um escopo global, similar
ao dos navegadores?
Cuidado, evite poluir o escopo global
Exibindo os Global Objects
1. console.log(global);
Node.js - #3 - Global Objects - Rodrigo Branas
Exibindo apenas as propriedades
dos Global Objects
1. console.log(Object.keys(global));
Node.js - #3 - Global Objects - Rodrigo Branas
Onde estão as operações require e
os objetos module e exports?
https://github.com/nodejs/node-v0.x-archive/blob/master/src/node.js
Node.js - #3 - Global Objects - Rodrigo Branas
Criando uma variável global
utilizando global, GLOBAL e root
1. global.max	
  =	
  10000;	
  
2. GLOBAL.max	
  =	
  10000;	
  
3. root.max	
  =	
  10000;
Criando uma variável
index.js
1. global.max	
  =	
  10000;	
  
2. var	
  serialGenerator	
  =	
  require('./serialGenerator');	
  
3. console.log(serialGenerator.generate());
Criando uma variável
index.js
1. GLOBAL.max	
  =	
  10000;	
  
2. var	
  serialGenerator	
  =	
  require('./serialGenerator');	
  
3. console.log(serialGenerator.generate());
Criando uma variável
index.js
1. root.max	
  =	
  10000;	
  
2. var	
  serialGenerator	
  =	
  require('./serialGenerator');	
  
3. console.log(serialGenerator.generate());
Tentando utilizar a variável
serialGenerator.js
1. module.exports.generate	
  =	
  function	
  ()	
  {	
  
2. 	
  	
  return	
  Math.floor(Math.random()	
  *	
  global.max);	
  
3. };
Tentando utilizar a variável
serialGenerator.js
1. module.exports.generate	
  =	
  function	
  ()	
  {	
  
2. 	
  	
  return	
  Math.floor(Math.random()	
  *	
  GLOBAL.max);	
  
3. };
Tentando utilizar a variável
serialGenerator.js
1. module.exports.generate	
  =	
  function	
  ()	
  {	
  
2. 	
  	
  return	
  Math.floor(Math.random()	
  *	
  root.max);	
  
3. };
Node.js - #3 - Global Objects - Rodrigo Branas
Qual é a diferença entre os objetos
global, GLOBAL e root?
https://github.com/nodejs/node-v0.x-archive/blob/master/src/node.js
Node.js - #3 - Global Objects - Rodrigo Branas
Também é possível criar uma variável
global, não utilizando var
1. max	
  =	
  10000;	
  
2. var	
  serialGenerator	
  =	
  require('./serialGenerator');	
  
3. console.log(serialGenerator.generate());
Utilizando uma variável global
serialGenerator.js
1. module.exports.generate	
  =	
  function	
  ()	
  {	
  
2. 	
  	
  return	
  Math.floor(Math.random()	
  *	
  max);	
  
3. };
Node.js - #3 - Global Objects - Rodrigo Branas
Como fazer para criar variáveis
globais sem utilizar o escopo global?
Utilize um módulo
config.js
1. exports.max	
  =	
  10000;
Utilizando uma variável global
serialGenerator.js
1. var	
  config	
  =	
  require('./config');	
  
2. 	
  	
  	
  
3. module.exports.generate	
  =	
  function	
  ()	
  {	
  
4. 	
  	
  return	
  Math.floor(Math.random()	
  *	
  config.max);	
  
5. };
Rodrigo Branas	
  
Agile Code: http://www.agilecode.com.br
Twitter: @rodrigobranas
SlideShare: http://www.slideshare.com/rodrigobranas
YouTube: http://www.youtube.com/rodrigobranas
LinkedIn: http://br.linkedin.com/in/rodrigobranas
+Plus: https://plus.google.com/+RodrigoBranas
GitHub: http://www.github.com/rodrigobranas

Mais conteúdo relacionado

Mais procurados

Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
tdc-globalcode
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Evandro Eisinger
 
Threads tasks e o tal do thread pool
Threads tasks e o tal do thread poolThreads tasks e o tal do thread pool
Threads tasks e o tal do thread pool
Fabrício Rissetto
 
Funcionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasFuncionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticas
Kirmayr tomaz
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
Victor Hazin da Rocha
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NET
MVP Microsoft
 
Dicas e Truques TypeScript
Dicas e Truques TypeScriptDicas e Truques TypeScript
Dicas e Truques TypeScript
Loiane Groner
 
PHP e Mysql - DELETE
PHP e Mysql - DELETEPHP e Mysql - DELETE
PHP e Mysql - DELETE
Marco Pinheiro
 
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
Caio Ribeiro Pereira
 
PHP fora da Web
PHP fora da WebPHP fora da Web
PHP fora da Web
Vinícius Campitelli
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
Luis Gustavo Almeida
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Igor Nicoli
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
Marinho Brandão
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
iMasters
 
JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdade
Luis Vendrame
 
Introdução a worker
Introdução a workerIntrodução a worker
Introdução a worker
Sérgio Rafael Siqueira
 
Let's log!
Let's log!Let's log!
Let's log!
Elton Minetto
 
Coroutines tech summit
Coroutines  tech summitCoroutines  tech summit
Coroutines tech summit
Paulo Sato
 
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on RailsMinicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Luiz Carvalho
 

Mais procurados (20)

Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
 
Threads tasks e o tal do thread pool
Threads tasks e o tal do thread poolThreads tasks e o tal do thread pool
Threads tasks e o tal do thread pool
 
Funcionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasFuncionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticas
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NET
 
Dicas e Truques TypeScript
Dicas e Truques TypeScriptDicas e Truques TypeScript
Dicas e Truques TypeScript
 
PHP e Mysql - DELETE
PHP e Mysql - DELETEPHP e Mysql - DELETE
PHP e Mysql - DELETE
 
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
 
PHP fora da Web
PHP fora da WebPHP fora da Web
PHP fora da Web
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
 
JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdade
 
Introdução a worker
Introdução a workerIntrodução a worker
Introdução a worker
 
Let's log!
Let's log!Let's log!
Let's log!
 
Coroutines tech summit
Coroutines  tech summitCoroutines  tech summit
Coroutines tech summit
 
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on RailsMinicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
 

Destaque

Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
Rodrigo Branas
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
Rodrigo Branas
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
Rodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
Rodrigo Branas
 
Grunt
GruntGrunt
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Rodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
Rodrigo Branas
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJS
Rodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
Rodrigo Branas
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
Rodrigo Branas
 
Introdução ao AngularJS!
Introdução ao AngularJS!Introdução ao AngularJS!
Introdução ao AngularJS!
Diullian Casagrande
 
AngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivasAngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivas
Janderson Fernandes Cardoso
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Rodrigo Branas
 
Scrum
ScrumScrum
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
Rodrigo Branas
 

Destaque (18)

Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
Grunt
GruntGrunt
Grunt
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJS
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
 
Introdução ao AngularJS!
Introdução ao AngularJS!Introdução ao AngularJS!
Introdução ao AngularJS!
 
AngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivasAngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivas
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Scrum
ScrumScrum
Scrum
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 

Semelhante a Node.js - #3 - Global Objects - Rodrigo Branas

Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2
Jeison Barros
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
Elton Minetto
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
Luís Cobucci
 
React js
React js React js
React js
Alexandre Rosa
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2
Lucas Aquiles
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
elliando dias
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
Denis L Presciliano
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
Victor Hugo Germano
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
Suelen Silva
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
Denis L Presciliano
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
Erisvaldo Junior
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
Julio Viegas
 
Pilares do desenvolvimento Mobile no Nubank
 Pilares do desenvolvimento Mobile no Nubank Pilares do desenvolvimento Mobile no Nubank
Pilares do desenvolvimento Mobile no Nubank
DevCamp Campinas
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
Henrique Gogó
 
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
Suissa
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick Start
Marcos Bezerra
 
DevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com FragmentsDevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com Fragments
Suelen Carvalho
 

Semelhante a Node.js - #3 - Global Objects - Rodrigo Branas (20)

Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
React js
React js React js
React js
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Pilares do desenvolvimento Mobile no Nubank
 Pilares do desenvolvimento Mobile no Nubank Pilares do desenvolvimento Mobile no Nubank
Pilares do desenvolvimento Mobile no Nubank
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em ação
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick Start
 
DevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com FragmentsDevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com Fragments
 

Mais de Rodrigo Branas

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
Rodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
Rodrigo Branas
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
Rodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
Rodrigo Branas
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
Rodrigo Branas
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
Rodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
Rodrigo Branas
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
Rodrigo Branas
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
Rodrigo Branas
 
Criando Filtros com AngularJS
Criando Filtros com AngularJSCriando Filtros com AngularJS
Criando Filtros com AngularJS
Rodrigo Branas
 
Criando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSCriando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJS
Rodrigo Branas
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
Rodrigo Branas
 
Selenium - WebDriver
Selenium - WebDriverSelenium - WebDriver
Selenium - WebDriver
Rodrigo Branas
 
Test-Driven Development com JavaScript, Jasmine Karma
Test-Driven Development com JavaScript, Jasmine  KarmaTest-Driven Development com JavaScript, Jasmine  Karma
Test-Driven Development com JavaScript, Jasmine Karma
Rodrigo Branas
 
Bower
BowerBower
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
Rodrigo Branas
 

Mais de Rodrigo Branas (17)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
 
Criando Filtros com AngularJS
Criando Filtros com AngularJSCriando Filtros com AngularJS
Criando Filtros com AngularJS
 
Criando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSCriando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJS
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Selenium - WebDriver
Selenium - WebDriverSelenium - WebDriver
Selenium - WebDriver
 
Test-Driven Development com JavaScript, Jasmine Karma
Test-Driven Development com JavaScript, Jasmine  KarmaTest-Driven Development com JavaScript, Jasmine  Karma
Test-Driven Development com JavaScript, Jasmine Karma
 
Bower
BowerBower
Bower
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 

Node.js - #3 - Global Objects - Rodrigo Branas

  • 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Global Objects
  • 2. Não se esqueça que tudo que é definido dentro do módulo é privado
  • 3. Criando uma variável index.js 1. var  max  =  10000;   2. var  serialGenerator  =  require('./serialGenerator');   3. console.log(serialGenerator.generate());
  • 4. Tentando utilizar a variável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  max);   3. };
  • 6. Existe um escopo global, similar ao dos navegadores?
  • 7. Cuidado, evite poluir o escopo global
  • 8. Exibindo os Global Objects 1. console.log(global);
  • 10. Exibindo apenas as propriedades dos Global Objects 1. console.log(Object.keys(global));
  • 12. Onde estão as operações require e os objetos module e exports?
  • 15. Criando uma variável global utilizando global, GLOBAL e root 1. global.max  =  10000;   2. GLOBAL.max  =  10000;   3. root.max  =  10000;
  • 16. Criando uma variável index.js 1. global.max  =  10000;   2. var  serialGenerator  =  require('./serialGenerator');   3. console.log(serialGenerator.generate());
  • 17. Criando uma variável index.js 1. GLOBAL.max  =  10000;   2. var  serialGenerator  =  require('./serialGenerator');   3. console.log(serialGenerator.generate());
  • 18. Criando uma variável index.js 1. root.max  =  10000;   2. var  serialGenerator  =  require('./serialGenerator');   3. console.log(serialGenerator.generate());
  • 19. Tentando utilizar a variável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  global.max);   3. };
  • 20. Tentando utilizar a variável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  GLOBAL.max);   3. };
  • 21. Tentando utilizar a variável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  root.max);   3. };
  • 23. Qual é a diferença entre os objetos global, GLOBAL e root?
  • 26. Também é possível criar uma variável global, não utilizando var 1. max  =  10000;   2. var  serialGenerator  =  require('./serialGenerator');   3. console.log(serialGenerator.generate());
  • 27. Utilizando uma variável global serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  max);   3. };
  • 29. Como fazer para criar variáveis globais sem utilizar o escopo global?
  • 30. Utilize um módulo config.js 1. exports.max  =  10000;
  • 31. Utilizando uma variável global serialGenerator.js 1. var  config  =  require('./config');   2.       3. module.exports.generate  =  function  ()  {   4.    return  Math.floor(Math.random()  *  config.max);   5. };
  • 32. Rodrigo Branas   Agile Code: http://www.agilecode.com.br Twitter: @rodrigobranas SlideShare: http://www.slideshare.com/rodrigobranas YouTube: http://www.youtube.com/rodrigobranas LinkedIn: http://br.linkedin.com/in/rodrigobranas +Plus: https://plus.google.com/+RodrigoBranas GitHub: http://www.github.com/rodrigobranas