Node.js初學筆記3 進階module.exports觀念-revealing module pattern

上一篇文章我們介紹到modules.exports的用法,我們知道可以利用它輸出函式、物件或是變數(順帶一提,module.exports預設的輸出就是一個空物件,這個概念上一篇忘了提到),不過很多時候,我們的函式都會內嵌一些變數,而我們不想要讓使用者能讀取那些變數,我們只想要讓他們利用這個函式功能而已。

舉個例子來說,今天販賣機的廠商只希望使用者能好好的投錢->操作面板得到飲料,使用者並沒有必要知道背後運作的邏輯(聽起來跟API挺像的),隱藏這些不必要的細節,只展示出想給使用者看的部分,就是所謂的revealing module pattern,也就是keep things private!

那要如何利用module.exports來做到這樣的事情? 一樣,我們看個例子最快!

func.js(自創的module)

const greeting = 'hello world!'
function greets() {
  console.log(greeting)
}
module.exports = {
  greet:greet;
}

app.js(主程式)

const greets = require('./func.js')
greets.greet() //  hello world!
console.log(greets.greeting) // undefined

由上方的例子可見,這樣的方式就可以保護輸出函式內的變數,沒有其他方法讀取(access)greeting 這個變數,相當簡單卻很實用的概念~!

發表留言