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

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

  • 1.
    Rodrigo Branas –@rodrigobranas - http://www.agilecode.com.br Global Objects
  • 2.
    Não se esqueçaque 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 avariável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  max);   3. };
  • 6.
    Existe um escopoglobal, similar ao dos navegadores?
  • 7.
    Cuidado, evite poluiro escopo global
  • 8.
    Exibindo os GlobalObjects 1. console.log(global);
  • 10.
    Exibindo apenas aspropriedades dos Global Objects 1. console.log(Object.keys(global));
  • 12.
    Onde estão asoperações require e os objetos module e exports?
  • 13.
  • 15.
    Criando uma variávelglobal 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 avariável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  global.max);   3. };
  • 20.
    Tentando utilizar avariável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  GLOBAL.max);   3. };
  • 21.
    Tentando utilizar avariável serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  root.max);   3. };
  • 23.
    Qual é adiferença entre os objetos global, GLOBAL e root?
  • 24.
  • 26.
    Também é possívelcriar 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ávelglobal serialGenerator.js 1. module.exports.generate  =  function  ()  {   2.    return  Math.floor(Math.random()  *  max);   3. };
  • 29.
    Como fazer paracriar variáveis globais sem utilizar o escopo global?
  • 30.
    Utilize um módulo config.js 1.exports.max  =  10000;
  • 31.
    Utilizando uma variávelglobal 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   AgileCode: 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