今天我們要來了解如何在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值相等,讓其他人也能快速理解輸出的函式功能而不會被搞混~!