今天要談三個NodeJS的概念,進入新手村的第一個任務:Module、Exports與Require。因為在使用JavaScript開發網頁時沒有Module概念,加入Module的概念讓NodeJS內建許多常用、通用的功能可以被開發人員引入程式碼,省去許多程式碼的撰寫時間,開發人員也可自創Module以提升開發效率。
第一個NodeJS的重要概念是Module。在Module出現之前,JavaScript雖然可以在前端以<script>
標籤引入其他程式碼,但Module讓JavaScript在後端也具有引入其他程式碼的機制,例如:C#的類別(class
)、python的import
機制。Module用於存放可以重複使用的程式碼,將程式碼分門別類、以獨立的JavaScript檔儲存,可以避免不經意的程式碼衝突,在Module中存在一個代表Module本身的module
物件,藉由其中的exports
屬性,配合require
語法,將程式碼以更靈活的架構建置。
exports
作為一個物件,是源於module
的屬性module.exports
,module.exports
以pass by reference的方式將屬性傳遞給exports
物件,再將Module中的方法掛載到exports
上輸出,exports
也是Module中唯一可以輸出的窗口。
require()
是NodeJS中用來引用Module的函式,透過引入外部Module便可應用其指派於exports
的方法。
exports
上,Module的部分就準備完成。// count.js
exports.count = function(dMonth, dDay){
let date = new Date();
let dDate = new Date(2021,dMonth-1,dDay);
let diff = Math.floor(Math.abs(date-dDate)/(1000 * 3600 * 24))+1;
console.log(`iT鐵人賽第 ${diff} 天!`);
}
require()
將count Module引入為Count
物件,require()
的參數是Module的檔案名稱,在沒有輸入副檔名的情況下,預設副檔名為.js
,若引入的Module為NodeJS內建,不需含有前綴路徑./
。let Count = require("./count");
Count.count(9,16);
Module的機制讓JavaScript更容易應用在後端開發上,透過Module設計程式碼架構,可以提高程式的利用率~
以上是今天的小練習,明天繼續努力!
深入淺出Node.js/朴靈 編著
Learn and Understand NodeJS [課程]