iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

一個月的後端學習之旅系列 第 24

【DAY24】Module Wrapper

  • 分享至 

  • xImage
  •  

Module Wrapper

在 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

這樣做的好處:

  1. 讓使用這個 module 的文件中,所使用的 global variable不會被 module 內部的變數影響
  2. 讓 module 內部所定義的 global variable 變成 function scope
// app1.js
require("./app2"); // module wrapper => function scope

let name = 30;  // global variable

console.log(name);
// -> 10
// -> 30
  1. 讓 module 內部的 JS 文件可以使用某些實用的變數,例如 moduleexports 可以用來輸出本身 module,而 require 可以用來獲得其他 module

require -> 可以連結到其他 module,執行該 module 中的程式碼,因此可以在 app1.js 執行 app2.js 的程式碼

// app1.js
require("./app2") // -> 10

// app2.js
let name = 10;

console.log(name);
  1. __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(一)。


上一篇
【DAY23】 靜態與動態網頁、網頁開發工具
下一篇
【DAY25】modules(一)
系列文
一個月的後端學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言