Node.js 的 30 天學習日記--第二天

Node.js 學習第二天

開始第二天的學習,給自己訂下目標後就會感覺有東西在監督你,如果自己放鬆的話就認為別人對於自己什麼都做不好的想法讓我有東西去寫下去,怕自己一事無成的過日子,剛第二天在心中也有出現有好像什麼事情沒有去學一樣,這感覺跟在學校有點不太一樣阿。

如果在看的過程中有任何錯誤歡迎寫 E-MAIL: pp840405@gmail.com 提醒我錯誤。


Node.js 模組原理(上)


GLOBAL 全域物件

今天要學的地方是 Node.js 的模組原理,在網頁下面有一個 window 的全域物件,所有 JavaScript 變數都在這全域變數下面, Node.js 也有自己的全域物件就是 Global ,那這兩個全域有什麼分別嗎?那就是如命名一個全域變數的話,沒有特別去設定在 Global 下的話沒辦法去汙染到 Node.js 的全域,只會在變數本身的 JavaScript 檔案下面,在 Node.js 看來 JavaScript 本身就是一個模組,但 JavaScript 可以去繼承 Global 資料。

如果要寫在 Global 下的資料就要這樣宣告。

1
global.a = 1 ;

示意圖


require 、 module exports 模組設計

如果有兩支 js 檔案, a.js 檔案有 var a = 1b 檔案有 var b = 2 ,如果我在 a.js 檔案裡面寫 console.log(a); console.log(b); 並在終端機裡面輸入 node a.js 執行這個 js 檔案,他會顯示 1 並表示你的 console.log(b); 是錯誤的。

那我們該如何把 b.js 檔案裡面資料丟到 a.js 檔案裡面並做執行呢,我們就需要用到載入模組、傳送模組的概念,載入你需的模組與傳送你需要的模組。
該如何載入模組呢,首先我們需要宣告一個變數並下這段程式碼 var content = require('./b'); ./ 是同層的資料 ../ 是上一層的資料,當你在去執行 a.js 他會回傳給你 a 值與 { } 空物件,為什麼會是空物件呢,就要說到我們的模組概念, Node.js 是由多個模組所組成並去執行,所以我們這段語法就是去載入模組,那我們載入模組的資料該如何變成模組呢,那我們就需要在 b.js 裡面這樣打 module.exports = b; 這樣我們就把宣告的變數傳到 module 這個空物件模組裡面並給有下 require 的檔案去載入, module.exports 本身也可以去寫入物件、陣列資料或函式,也可以單獨寫 exports.b = '2' 那去執行時後它就會回傳給你 { b:'2'}exports 就是給空物件裡面加入任何值所需要的語法。

如果你在 js 檔案裡面同時使用這兩種方式寫的話,那檔案本身只會讀取你寫 module.exports 語法的資料,所以個人建議使用第一種方式去寫你要傳送的物件模組。


結語

今天開始講解並記錄 Node.js 的模組原理,比起第一天需要去把所學到並理解的東西用更簡單的方法給其他人了解要來得難很多,但這對於我學習上有更深入的了解,加深所學印象,有任何問題歡迎寫 MAIL: pp840405@gmail.com 一起共同討論。