安裝與管理第三方的模組(Modules),接下來就介紹一下當你透過 NPM 下載下來一個模組之後
要如何使用它以及如和自己建立一個模組
首先我們來探討一下如何使用一個模組,在你透過 npm install 之後會將該模組下載到
root 底下的 node_modules 資料夾內,而當你在程式內要使用該模組時,我們可以用 require 函式來達成
require 函式接受一個字串的參數,該字串參數指明了你想要載入(loading)的模組
而該模組可以是一個 Core module (例如:http)或是透過 NPM 安裝的第三方模組甚至是你自己的模組!!
1. 我舉一個 Core module 的例子
在 command line 輸入 node 進入 NodeJS 的命令列模式
並輸入以下指令
var http = require("http");
console.log(http);
應該會看到類似下圖的結果
因為我最後用 console 把 http 物件打印出來,所以可以觀察到整個 http 模組的變數甚至式函式
這就是一個最簡單的載入 Core Module 的過程
2. 如果你要載入的模組是透過 NPM 安裝的話,就可能必須要注意一下路徑問題
require 函式接受的字串參數,也可以是一個相對路徑或是絕對路徑
例如(以 windows 為例):
var express = require("/some/path/express");
var express = require("C:/some/path/express");
var express = require("C:\\some\\path\\express");
以第一個範例為例,NodeJS 會先搜尋 /some/path/node_modules 底下是否有 express 模組
如果沒有則會退回到上一層,/some/node_modules 去找 express,
如果還是找不到最後才會退到跟目錄去搜尋,最後如果還是沒搜尋到
就會拋出 Cannot find module 的錯誤訊息了!!
3. 接下來介紹一下如果開發者想要自己建立一個模組的話,該怎麼做呢
首先當然就是用 Javascript 建立一個屬於自己的模組囉
如下圖的程式範例:
我建立了一個 HelloWord 的模組,並對外公開 say 與 echo 這兩個函式
最後利用 module.exports = HelloWorld 來告訴 NodeJS,我要註冊這個 HelloWorld 模組
完成之後將這個 js 命名為 hello.js,並在當前目錄下
在 command line 輸入 node 進入 NodeJS 的命令列模式
並輸入如下的 command 以觀察結果
如上圖,透過 require 函式載入 hello.js 模組,你也可以不用加上.js 副檔名,NodeJS 會自動幫你加上
例如 var helloModule = require("./hello");
最後再說明一個 NodeJS Module System 的一個特性就是 Caching Modules
也就是說當第一次呼叫 require("./hello") 之後,只要再有任何一次需要載入該模組
其實都是回傳相同一個模組或是物件!!
沒有留言:
張貼留言