什么是node.js
JS是個腳本語言,需要解析器才能運行,瀏覽器之所以能夠執(zhí)行JS,是以為瀏覽器充當了一個解析器的角色。而對于相對獨立的JS來說,node.js就是一個解析器。
任何操作系統(tǒng)下安裝nodejs本質上做的事情是將nodejs執(zhí)行程序復制到一個目錄,以便于終端下可以執(zhí)行node命令。
運行在瀏覽器中的JS是操作DOM,而運行在NodeJS中的js是操作磁盤文件或者搭建http服務器的。
有啥用處
NodeJS作者創(chuàng)建這個腳本的目的是為了實現(xiàn)高新能的WEB服務器。
什么是模塊
編寫稍微大一點的程序時一般都會將代碼模塊化。在NodeJS中一般將代碼拆分到不同的JS文件中,每個文件就是一個模塊,而文件路徑就是模塊名。
require
require函數(shù)用于在當前模塊中加載和使用別的模塊,傳入一個模塊名,返回一個模塊到處的對象。模塊名可以使用相對路徑(以./開頭),或者是絕對路徑。另外,模塊名中的==.js==擴展名可以省略。例如
var foo = require('./foo');
exports
exports 是當前模塊的導出對象,用于到處模塊公有方法和屬性。別的模塊通過==require==函數(shù)使用當前模塊時得到的就是當前模塊的==exports==對象
module
通過module對象可以訪問當前模塊的一些相關信息,但是改對象最大的用途是替換當前模塊的導出對象。例如模塊導出對象默認是一個普通的對象,如果想改成一個函數(shù)的話,那么可以使用以下方式:
module.exports = function () {
console.log('Hello World!');
};
模塊初始化
一個模塊中的js代碼僅僅是在模塊第一次被使用時執(zhí)行一次,并在執(zhí)行過程中初始化模塊的導出對象,之后,緩存期導出對象并被重復利用。
主模塊
通過命令行啟動nodejs的模塊被稱為主模塊,相當于程序入口。例如:
node index.js
index.js就是主模塊,主模塊主要負責調(diào)度組成整個程序的其它模塊完成工作。
包
我們已經(jīng)知道了JS模塊的基本單位是單個JS文件,但是復雜些的模塊往往是由許多個子模塊組成的。為了便于管理和使用,我們把由多個子模塊組成的大模塊稱為包,并把所有子模塊放在同一個目錄里。