在 Node.js 當中,module 是指一組的程式碼,組織成簡單或複雜功能,可被用來與外部其他程式碼連結。可以是單個文件,或是多個文件與資料夾的集合
Module Wrapper 就是 Node.js 在背後運作的事 (我們看不到)
執行 module 的程式碼之前,Node.js 將使用如下所示的函數包裝器來包裝它
(function(exports, require, module, _filename, _dirname){
// module code actually lives in here -> module wrapper
});
(function(exports, require, module, _filename, _dirname){
console.log("這是app1.js文件");
})(); // 後面()用來執行程式碼
// 這樣的寫法就是IIFE
這樣做的好處:
// app1.js
require("./app2"); // module wrapper => function scope
let name = 30; // global variable
console.log(name);
// -> 10
// -> 30
module
、exports
可以用來輸出本身 module,而 require
可以用來獲得其他 modulerequire
-> 可以連結到其他 module,執行該 module 中的程式碼,因此可以在 app1.js 執行 app2.js 的程式碼
// app1.js
require("./app2") // -> 10
// app2.js
let name = 10;
console.log(name);
__filename
, __dirname
等等變數在開發上變得方便,因為兩者包含 module 的絕對路徑名稱與資料夾路徑
console.log(__dirname); // directory name
// -> C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice
console.log(__filename);
// -> C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice\app1.js
下一篇文章學習modules(一)。