NodeJS Node模組筆記

2022-02-20 23:35:36 字數 1795 閱讀 3919

模組的出現只是為了更好的維護**避免全域性汙染提高**可讀性

通過如下兩種方式可以載入乙個模組,通常返回乙個物件或者方法

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...