模組的出現只是為了更好的維護**避免全域性汙染提高**可讀性
通過如下兩種方式可以載入乙個模組,通常返回乙個物件或者方法
require(modulepath)
module.require(modulepath)
而乙個模組的內部作用域內存在exports物件,通過該物件可以匯出物件、方法或變數。
exports
module.exports
本質上內部有一行隱藏**exports === module.exports
所以不要輕易給exports
重新賦值
模組載入順序如下
$node_path
./node_modules
$home/.node_modules
$home/.node_libraries
$prefix/lib/node
其實可以通過require.resolve.paths(modulename)
來獲取描述模組載入順序的陣列
模組除了匯入和匯出之外,還可以通過require.resolve(modulename)
方法來獲取模組的完整路徑
在每個模組中都存在module
物件用來表示模組的資訊,但是僅限於當前模組作用域內:
id: 模組唯一識別符號,通常就是模組的完整路徑,入口檔案除外,入口檔案的id為'.'
filename: 模組完整路徑
parent: 載入了該模組的父類模組
exports: 模組匯出內容
loaded: 是否被其他模組載入過
children: 模組內載入的其他模組
paths: 模組的載入順序
乙個模組一旦被載入就會被快取起來,也就是多次載入只會返回同乙個物件,同時乙個模組內載入的所有模組都儲存在require.cache
這個物件中。這個物件以模組完整路徑為key
,以模組內容為value
如果希望刪除快取,使用delete
即可
delete require.cache(require.resolve(modulename))
預設情況下,乙個檔案就是乙個模組,所以require(filepath)
即可載入乙個模組。但是有時候也可以通過乙個目錄來載入乙個模組,此時可以在該目錄下的package.json
檔案中定義main欄位指定模組的入口檔案。如果不指定則預設載入目錄下的index.js
檔案。
api清單
1. module
module.id
module.filename
module.children
module.parent
module.exports
module.loaded
module.paths
module.require(modulename: string)
2. require
require(modulename: string)
require.resolve(modulename: string)
require.resolve.paths(modulename: string)
3. exports
exports == module.exports
nodejs node指令執行js,相對路徑的問題
在dos命令列中執行node命令時,直接使用絕對路徑執行js檔案,而在進行路由時,採用的是相對路徑,於是出現no such file or directory.而 中路由時,採用的相對路徑讀取html檔案,於是才有了不能找到檔案的error.出現該問題時,一開始沒有通過throw error檢視異常...
核心模組筆記
1 解壓核心原始碼到目錄檔案 tar xjvf linux 2.6.22.6.tar.bz2 c home guoqian test4 1 1 cd home guoqian test4 1 1 linux 2.6.22.6 make distclean 2 配置檔案 cp boot config ...
python os模組筆記
os 模組 os.sep 可以取代作業系統特定的路徑分隔符。windows下為 os.name 字串指示你正在使用的平台。比如對於windows,它是 nt 而對於linux unix使用者,它是 posix os.getcwd 函式得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.g...