利用nodejs模組快取機制建立「全域性變數」

2022-04-05 11:32:34 字數 719 閱讀 3367

在《深入淺出nodejs》有這樣一段(有部分增減):

1、nodejs引入模組分四個步驟

2、核心模組部分在node源**的編譯過程中就編譯成了二級制檔案,在node啟動時就直接載入如記憶體,所以這部分模組引入時,前三步省略,直接加入。

3、nodejs的模組載入和瀏覽器js載入一樣都有快取機制,不同的是,瀏覽器僅僅快取檔案,而nodejs快取的是編譯和執行後的物件(快取記憶體)。

基於以上三點:我們可以編寫乙個模組,用來記錄長期存在的變數。例如:我可以編寫乙個記錄介面訪問數的模組:

1

var count ={}; // 因模組是封閉的,這裡實際上借用了js閉包的概念

2 exports.count = function

(name)else

8 console.log(name + '被訪問了' + count[name] + '次。');

9 };

我們在路由裡這樣引用:

1

var count = require('count');

23 export.index = function

(req, res);

以上便完成了對介面呼叫數的統計,但這只是個demo,因為資料儲存在記憶體,伺服器重啟後便會清空。真正的計數器一定是要結合持久化儲存器的。

nodejs 模組查詢一起快取機制

nodejs在載入外部自定義模組時對模組有查詢順序,找到後還會進行快取。查詢順序 1.相對路徑,比如提供.或者.這種以 和 開始的路徑,簡單的,就是相對當前位置的路徑。2.絕對路徑,這時候將按以下順序查詢 假設執行路徑為c intel research subfolder 那麼查詢順序為 c int...

nodeJS基礎 模組載入機制

關鍵字 全域性物件global 模組module 對外exports 檔案路徑 filename 檔案目錄路徑 dirname 每個檔案就是乙個模組,每個模組都是乙個module物件,它具有exports屬性,可以對外暴露介面,使引入該模組的模組可以使用此模組的資料 js var plane req...

利用構建快取機制縮短Docker映象構建時間

在使用docker部署php或者node.js應用時,常用的方法是將 和環境映象打包成乙個映象然後執行,一些雲廠商提供了非常便捷的操作,只需要把我們的 提交到vcs上,然後它們就會幫我們拉取 並根據 包內的dockerfile構建我們的映象然後部署到集群裡。php和node.js都有非常不錯的生態,...