Node.js模組 === 認識模組 --- Node.js 中,兩個 js 檔案分屬不同模組,所以想要在其中一支檔案抓取另外一支檔案資料是不行的。 ![](https://i.imgur.com/irk0kRm.png) 這時候可以用 `require` ,把另外一支檔案載入,但是這時候載入可能還是一個空值。也要在另外一個物件先 `module.exports` 需要的資料才行,就會像下圖一樣,`console` 出 **Taiwan is not China**: ![](https://i.imgur.com/t4eOoN2.png) 很多工程師經常以這樣的方式整理不同的模組。 --- 另外的exports方式:除了用`module.exports`以外使用也單獨`exports`,這樣算是滿方便的,但是可能比較亂,所以建議還是用module.exports就好 ![](https://i.imgur.com/enGfi8e.png) *注意:而且兩者不能同時並存!! Node.js 核心模組 createSever --- Node.js 本身就有一些內建的模組,像是下面範例的http,可以用http開一個簡單的本地伺服器。 ``` var http = require('http'); http.createServer(function(request, response){ response.writeHead(200,{'Content-Type':'text/plain'}); response.write('Taiwan'); response.end(); }).listen(8080); ``` `http.ceateSever` 裏面會是一個函式,函式需要帶兩個參數: * request 是當使用者讀取到你的網站時,sever會接收到相關資料 * response 是當server接收到資料時,回傳的東西 來測試`console.log(request);`,只要重新整理一次,就會出現使用者的一些目前資訊。 ![](https://i.imgur.com/6DbgE1x.png) :8080是一個通訊port,還有各種不同的數字,只是8080比較不常用。 __dirname __filename --- 在執行js程式的時候,自動產生了兩個變數`__filename`和`__dirname`,然後再分別把檔案和專案的路徑"字串"分配給他們,以便設計路徑時需要這些變數做開發。 ![](https://i.imgur.com/wtUyc3s.png) path 路徑模組 --- Node.js 中有一個path模組,可以抓取檔案路徑的相關資料 抓目錄路徑: `path.dirname('/xx/yy/zz.js')` 回傳 /xx/yy 路徑合併:`path.join(__dirname,'/xx')` 回傳 前後路徑合併 抓檔名: `path.basename('/xx/yy/zz.js')` 回傳 zz.js 抓副檔名: `path.extname('/xx/yy/zz.js')` 回傳 js 分析路徑: `path.parse('/xx/yy/zz.js')` 回傳 上述綜合物件 ![](https://i.imgur.com/99bE4Ee.png) 分析路徑會回傳這個物件,即可很方便抓取需要的資料~