node由三部分組成:ecmascript + 核心模組 + 第三方模組
核心模組
第三方模組
使用require匯入這個第三方模組!
通過官方文件,試著去使用這個第三方模組!
注意:無論是核心模組、還是第三方模組,都是通過 require來引用這個模組的!
乙個簡單的第三方模組使用的案例
1//這個檔案演示一下如果使用第三方模組moment實現日期資料的格式化處理2//
3 const moment = require('moment')45
//2.定義乙個日期,現在日期值是未格式化的日期資料
6 let timenow = new
date()78
//3.呼叫moment實現對日期資料的格式化處理
9 console.log(moment(timenow).format('yyyy-mm-dd hh:mm:ss'))
匯出使用者模組中的成員
- 它是乙個物件,我們可以在這個物件上掛載你想暴露的成員
- 使用.語法在exports上掛載成員
- 使用自定義模組舉例:
//我們所建立的js檔案就可以認為是乙個自定義模組
var obj =
function
sayhi()
//在模組中有乙個預設的物件exports,這個物件在在這個模組被引入的時候會自動的返回
//我們匯出成員的方式就是在這個物件上掛載你想暴露的成員
exports.sayhi =sayhi
exports.aa = obj
使用自定義模組:
//如何使用使用者自定義模組:
//所有模組想使用都要先引入
//如果引入乙個模組,那麼這個模組缺省會返回乙個物件
var umodule = require('模組檔案的路徑')
umodule.sayhi()
- 它是乙個物件,我們可以在這個物件上掛載你想暴露的成員
- 使用.語法在module.exports上掛載成員
- 也可以將module.exports重置為乙個新的物件,物件中就包含你想暴露的成員 ,只要引入這個模組成員就會自動暴露
//引入乙個模組,還會自動的暴露這個模組的module.exports物件
module.exports =
}
1.定義使用者模組
//我們所建立的js檔案就可以認為是乙個自定義模組
var obj =
function
sayhi()
//在模組中有乙個預設的物件module.exports,這個物件在這個模組被引入的時候會自動的返回
//我們暴露成員的方式就是在這個物件上掛載你想暴露的成員
= sayhi
= obj
//也可以直接使用你想暴露的成員覆蓋module.exports
module.exports = sayhi
通過 module.exports 可以使用 . 語法的形式追加屬性,也可以使用 = 直接賦值的形式匯出成員;
exports 只能通過 . 的形式追加屬性;不能使用 = 直接賦值的形式!
注意: 在乙個 module 中,最終向外暴露的成員,以 module.exports 指向的物件為準!
在乙個模組中,不要混合使用module.exports
和exports
如果使用點語法,沒有區別
如果使用重置物件,只能使用module.exprts
使用原則
優先從快取中載入:如果快取中有這個模組就直接從快取中載入(不會再去編譯指定的模組),如果快取中沒有,就載入模組,同時儲存到快取
載入核心模組:優先從快取中載入;如果快取中沒有的話,再去執行載入核心模組!
使用者自定義模組:優先從快取中載入;如果快取中沒有的話,再去執行載入使用者模組!
使用者模組的查詢規則:如果不寫字尾名,則先嚴格按照給定的檔名去查詢模組並載入執行;按順序查詢檔案,找到則不再繼續查詢
index -> index.js -> index.json -> index.node
4. 第三方模組查詢規則:
首先,檢視專案根目錄中有沒有node_modules
資料夾
查詢node_modules
資料夾中,有沒有和第三方模組名稱一致的資料夾
在模組對應的資料夾中,查詢有沒有package.json
這個檔案
在package.json
檔案中,查詢有沒有main
屬性
如果有main
屬性,並且main
屬性指向的路徑存在,那麼就嘗試載入這個路徑指定的檔案!
如果package.json
檔案中,沒有main
屬性,或者main
屬性指向的路徑不存在,或者沒有package.json
檔案, 那麼,node嘗試載入 模組根目錄中index
->index.json
->index.node
如果在node_modules
資料夾中,找不到對應的模組資料夾,或者在專案根目錄中根本沒有node_modules
資料夾,則向上一層資料夾中去查詢,查詢規則同上!
如果上一層目錄中也沒有查詢到,則再向上翻一層去查詢,直到找到當前專案所在的碟符根目錄為止!
如果找到當前碟符根目錄還找不到,則報錯:cannot find module
node中的模組
node中乙個檔案就是乙個模組,使用exports和require來進行配置和呼叫。例如定義乙個hello模組 function hello name exports.hello hello main.js如下 var h require hello h.hello world 最後執行node m...
node中的path模組
path為nodejs的核心模組之一,主要用來處理檔案的路徑。當使用時需要引入path模組 var path require path 這裡總結一下path的屬性和方法 path.normalize src 規範化路徑,多個斜槓會被替換成乙個 路徑末尾的斜槓會被保留 windows 系統上,會使用反...
Node中的核心模組
1.node為js提供了很多伺服器級別的api,這些api絕大多數都被包裝到了乙個具名核心模組中了。例如 fs就是檔案操作的的核心模組,http服務構建的http模組,path路徑操作模組,os作業系統資訊模組 獲取系統資訊 如果想要使用模組,就要先載入他,用require 方法 2.在node中有...