Last active
May 22, 2017 14:13
[Node][Unit26] Module Pattern
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable */ | |
/** | |
* PATTERN 1 | |
**/ | |
module.exports = function() { | |
console.log('Hello world'); | |
}; | |
var greet = require('./greet1'); | |
greet(); | |
/** | |
* PATTERN 2 | |
**/ | |
module.exports.greet = function() { | |
console.log('Hello world!'); | |
}; | |
var greet2 = require('./greet2').greet; | |
greet2(); | |
/** | |
* PATTERN 3: require 會把載入的檔案建立快取,所以當再次 require 時,其實是引用到同一個物件。 | |
**/ | |
function Greetr() { | |
this.greeting = 'Hello world!!'; | |
this.greet = function() { | |
console.log(this.greeting); | |
} | |
} | |
module.exports = new Greetr(); | |
var greet3 = require('./greet3'); | |
greet3.greet(); | |
greet3.greeting = 'Changed hello world!'; | |
var greet3b = require('./greet3'); // 會引用到同一個物件 | |
greet3b.greet(); | |
/** | |
* PATTERN 4 | |
**/ | |
function Greetr() { | |
this.greeting = 'Hello world!!!'; | |
this.greet = function() { | |
console.log(this.greeting); | |
} | |
} | |
module.exports = Greetr; | |
var Greet4 = require('./greet4'); | |
var grtr = new Greet4(); // 在 app 中才建立實例 | |
grtr.greet(); | |
/** | |
* PATTERN 5: revealing module pattern | |
* 模組外可以使用 greet 這個函式,同時可以引用到 greeting 這個變數,但是在模組外並沒有辦法直接取得 greeting。 | |
**/ | |
var greeting = 'Hello world!!!!'; | |
function greet() { | |
console.log(greeting); | |
} | |
module.exports = { | |
greet: greet | |
} | |
var greet5 = require('./greet5').greet; | |
greet5(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment