在實際工做中,編寫稍大一點的程序時通常都會將代碼模塊化。在NodeJS中,通常將代碼合理拆分到不一樣的JS文件中,每個文件就是一個模塊,而文件路徑就是模塊名。html
在編寫每一個模塊時,都有require
、exports
、module
三個預先定義好的變量可供使用。node
內置模塊
Node.js有一組內置模塊,無需進一步安裝便可使用。例如assert、buffer、child_process、cluster等。 固然除了內置模塊,咱們也能夠經過 NPM 命令安裝第三方模塊。瀏覽器
模塊的使用
在使用一個模塊以前,咱們須要使用require()指令來載入模塊,以下所示:服務器
var http = require('模塊名');
示例:
例如使用應用程序訪問HTTP模塊,並建立服務器:模塊化
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); res.end('俠課島'); }).listen(8888);
啓動文件後,在瀏覽器中訪問http://127.0.0.1:8888/ ,頁面會顯示"俠課島"三個字(這裏我就不截圖了,你們能夠本身試一下)。函數
如何建立模塊
除了可使用Node.js中的內置模塊,或者使用第三方模塊。咱們還能夠建立本身的模塊,而後將之包含在應用程序中。這其實很簡單,由於咱們知道文件和模塊是一一對應的,一個 Node.js 文件就是一個模塊。ui
示例:
建立一個返回日期和時間對象的模塊,保存爲mymodule.js中。其中 mymodule
是我給文件自定義的名字,這也是模塊的模塊名。以下所示:編碼
exports.myDateTime = function () { return Date(); };
上述代碼中,Date()
就是用於獲取當前日期和時間的函數,exports
關鍵字的做用是使模塊文件外部的屬性和方法可用。這個也好理解,好比說如今有兩個js文件 one.js 和 two.js,若是咱們想要 two.js 中訪問 one.js 中的方法是不能夠的,那麼咱們要怎麼作呢? 就可使用 exports
把模塊接口公開,讓咱們能夠在另外一個文件中訪問這個模塊。3d
要在另外一個Node.js文件中使用上面建立的 mymodule
模塊,首先要作的就是引入這個mymodule
模塊,而後再使用,以下所示:code
var http = require('http'); var dt = require('./mymodule'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); res.write("當前日期和時間爲: " + dt.myDateTime()); res.end(); }).listen(8888);
將代碼保存到test_module.js文件中,而後運行文件,運行文件的命令以下所示:
node test_module.js
在瀏覽器中訪問http://127.0.0.1:8888/ ,頁面會顯示以下內容:
當前日期和時間爲: Thu Apr 02 2020 16:50:19 GMT+0800 (中國標準時間)
如圖所示:
注意一下上述代碼中使用了./
來定位模塊,表示該模塊與Node.js文件位於同一文件夾中。必定要注意引入模塊時,模塊的路徑,不然查找不到模塊,則會報錯。
亂碼問題
若是咱們在代碼中使用中文,出現了亂碼問題,須要添加下面這句:
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
charset=utf-8
用於設置編碼,表示當前文檔的字符集是採用utf-8的字符。utf-8是針對Unicode的一種可變長度字符編碼,能夠用來表示Unicode標準中的任何字符。