Node.js初學筆記2-利用require & exports套用外部模組

今天我們要來了解如何在node.js中套用外部的模組(Modules),類似其他語言中的import概念,其實node在調用外部模組部分存在著很有趣的原理,不過這邊先不贅述!
使用的語法與概念相當簡單,首先先建立兩個js檔案方便我做說明,這兩個檔案都放在同一個資料夾底下。

func.js(自行創建的module)

function greeting()  {
  console.log('Hello!')
}

module.exports = greeting

app.js(主程式)

const greeting = require('/func.js')
greeting() // Hello!  

其實光是看上方的例子你就大概了解發生什麼事情了,裡面你見到了兩個陌生的關鍵字
require & module.exports。簡單來說, module.exports 就是將這支js檔案的某個變數、函數或是物件輸出,而require就是引進外部函數的變數、函數或是物件,並將它存為一個變數,特別注意的是,require語法在使用時需要輸入引進的檔案路徑與檔案名稱,其中副檔名若沒有輸入的話則會預設為js檔案。

上方的例子你只看到一個函式被輸出,不過在實務上一個module自然包裹著更多的功能,那要如何用module.exports達成? 其實也相當容易,你將輸出的函式們包裹為一個物件即可,如下

func.js(自行創建的module)

function greeting()  {
  console.log('Hello!')
}

function greets() {
  console.log('Hola!')
}

module.exports = {
  greeting:greeting,
  greets:greets
} 

app.js(主程式)

const greet_in_other_languages = require('/func.js')
greet_in_other_languages.greeting() // Hello!
greet_in_other_languages.greets() //Hola!   

如何,相當容易吧! 一個小地方要稍微注意一下,當我們將函式們包裹為一個物件輸出時,會習慣讓key-value值相等,讓其他人也能快速理解輸出的函式功能而不會被搞混~!

發表留言