SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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. };
Existe um escopo global, similar
ao dos navegadores?
Cuidado, evite poluir o escopo global
Exibindo os Global Objects
1. console.log(global);
Exibindo apenas as propriedades
dos Global Objects
1. console.log(Object.keys(global));
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
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. };
Qual é a diferença entre os objetos
global, GLOBAL e root?
https://github.com/nodejs/node-v0.x-archive/blob/master/src/node.js
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. };
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 servidortdc-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 servidorEvandro 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 poolFabrí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áticasKirmayr tomaz
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NETMVP Microsoft
 
Dicas e Truques TypeScript
Dicas e Truques TypeScriptDicas e Truques TypeScript
Dicas e Truques TypeScriptLoiane Groner
 
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 produtividadeIgor Nicoli
 
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 RochaiMasters
 
JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdadeLuis Vendrame
 
Coroutines tech summit
Coroutines  tech summitCoroutines  tech summit
Coroutines tech summitPaulo 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 RailsLuiz 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 BranasRodrigo 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 BranasRodrigo 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 BranasRodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJSRodrigo Branas
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJSRodrigo Branas
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJSRodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo 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 remotoRodrigo Branas
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJSRodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSRodrigo 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 AngularJSRodrigo Branas
 
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 directivasJanderson 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
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo 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 2Jeison Barros
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)Luís Cobucci
 
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_pt2Lucas Aquiles
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntDenis 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 5Erisvaldo Junior
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Pilares do desenvolvimento Mobile no Nubank
 Pilares do desenvolvimento Mobile no Nubank Pilares do desenvolvimento Mobile no Nubank
Pilares do desenvolvimento Mobile no NubankDevCamp Campinas
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique 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çãoRafael Garcia
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartMarcos 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 FragmentsSuelen 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

#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisasRodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e MergingRodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões RegularesRodrigo Branas
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJSRodrigo Branas
 
Criando Filtros com AngularJS
Criando Filtros com AngularJSCriando Filtros com AngularJS
Criando Filtros com AngularJSRodrigo 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 AngularJSRodrigo Branas
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo 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 KarmaRodrigo Branas
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo 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. };
  • 5.
  • 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);
  • 9.
  • 10. Exibindo apenas as propriedades dos Global Objects 1. console.log(Object.keys(global));
  • 11.
  • 12. Onde estão as operações require e os objetos module e exports?
  • 14.
  • 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. };
  • 22.
  • 23. Qual é a diferença entre os objetos global, GLOBAL e root?
  • 25.
  • 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. };
  • 28.
  • 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