33. Se o nome do módulo iniciar com '/', '../'
ou './', o algoritmo de busca irá localizar o
módulo por meio do caminho absoluto no
sistema de arquivos.
36. Localizando um módulo por meio do
caminho absoluto
1. require('/Users/rodrigobranas/Development/workspace/youtube/
NodeJS_2_Sistema_de_Modulos/serialGenerator.js');
37. Localizando um módulo por meio do
caminho relativo
1. require('../serialGenerator.js');
38. Terminar o nome com '.js' é opcional, o
algoritmo de busca irá tentar colocar o
'.js' no final caso não encontre o módulo.
41. Localizando um módulo por meio do
caminho absoluto
1. require('/Users/rodrigobranas/Development/workspace/youtube/
NodeJS_2_Sistema_de_Modulos/serialGenerator');
42. Localizando um módulo por meio do
caminho relativo
1. require('../serialGenerator');
43. Se o módulo não começar com '/', '../' ou './' o
algoritmo de busca da função require vai procurar
dentro da pasta node_modules.
44.
45. Localizando um módulo em
node_modules/serialGenerator.js
1. require('serialGenerator');
46. Localizando um módulo em
node_modules/serialGenerator/index.js
1. require('serialGenerator');
47.
48.
49. Ao utilizar o NPM, os módulos instalados
são armazenados na pasta node_modules
53. O módulo serialGenerator ficou
armazenado em cache
1. var
serialGeneratorA
=
require('./serialGenerator.js');
2. var
serialGeneratorB
=
require('./serialGenerator.js');
3. console.log(serialGeneratorA
===
serialGeneratorB);
//
true
56. Criando um módulo gerador de serial
serialGenerator.js
1. var
max
=
10000;
2.
3. var
generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
58. Exportando por meio de um objeto
serialGenerator.js
1. var
max
=
10000;
2.
3. module.exports.generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
59. Exportando por meio de um objeto
serialGenerator.js
1. var
max
=
10000;
2.
3. exports.generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
60. Exportando por meio de um objeto
serialGenerator.js
1. var
max
=
10000;
2.
3. this.generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
61. Exportando por meio de um objeto
serialGenerator.js
1. var
max
=
10000;
2.
3. var
generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
6.
7. module.exports
=
{
8.
generate:
generate
9. };
62. Não funciona!
1. var
max
=
10000;
2.
3. var
generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
6.
7. exports
=
{
8.
generate:
generate
9. };
63. Não funciona!
1. var
max
=
10000;
2.
3. var
generate
=
function
()
{
4.
return
Math.floor(Math.random()
*
max);
5. };
6.
7. this
=
{
8.
generate:
generate
9. };
65. Exportando por meio de um objeto
serialGenerator.js
1. var
createSerialGenerator
=
function
()
{
2.
var
max
=
10000;
3.
4.
var
generate
=
function
()
{
5.
return
Math.floor(Math.random()
*
max);
6.
};
7.
8.
return
{
9.
generate:
generate
10.
};
11. }
12.
13. module.exports
=
createSerialGenerator();
66. Exportando por meio de um objeto
serialGenerator.js
1. var
SerialGenerator
=
function
()
{
2.
var
max
=
10000;
3.
4.
this.generate
=
function
()
{
5.
return
Math.floor(Math.random()
*
max);
6.
};
7. };
8.
9. module.exports
=
new
SerialGenerator();
67. Por conta do mecanismo de cache, o
objeto retornado é o mesmo
1. var
serialGeneratorA
=
require('./serialGenerator');
2. var
serialGeneratorB
=
require('./serialGenerator');
3. console.log(serialGeneratorA
===
serialGeneratorB);
//
true
69. Exportando por meio de uma função
serialGenerator.js
1. var
createSerialGenerator
=
function
()
{
2.
var
max
=
10000;
3.
4.
var
generate
=
function
()
{
5.
return
Math.floor(Math.random()
*
max);
6.
};
7.
8.
return
{
9.
generate:
generate
10.
};
11. }
12.
13. module.exports
=
createSerialGenerator;
70. Ao invocar a função, temos objetos
diferentes como resultado
1. var
createSerialGenerator
=
require('./serialGenerator');
2. var
serialGeneratorA
=
createSerialGenerator();
3. var
serialGeneratorB
=
createSerialGenerator();
4. console.log(serialGeneratorA
===
serialGeneratorB);
//
false
71. Exportando por meio de um objeto
serialGenerator.js
1. var
SerialGenerator
=
function
()
{
2.
var
max
=
10000;
3.
4.
this.generate
=
function
()
{
5.
return
Math.floor(Math.random()
*
max);
6.
};
7. };
8.
9. module.exports
=
SerialGenerator;
72. Ao invocar a função, temos objetos
diferentes como resultado
1. var
SerialGenerator
=
require('./serialGenerator');
2. var
serialGeneratorA
=
new
SerialGenerator();
3. var
serialGeneratorB
=
new
SerialGenerator();
4. console.log(serialGeneratorA
===
serialGeneratorB);
//
false