利用nodejs模塊緩存機制創建“全局變量”


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

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

  • 路徑分析
  • 文件定位
  • 編譯執行
  • 加入內存

2、核心模塊部分在node源代碼的編譯過程中就編譯成了二級制文件,在node啟動時就直接加載如內存,所以這部分模塊引入時,前三步省略,直接加入。

3、nodejs的模塊加載和瀏覽器js加載一樣都有緩存機制,不同的是,瀏覽器僅僅緩存文件,而nodejs緩存的是編譯和執行后的對象(緩存內存)。

基於以上三點:我們可以編寫一個模塊,用來記錄長期存在的變量。例如:我可以編寫一個記錄接口訪問數的模塊:
1 var count = {}; // 因模塊是封閉的,這里實際上借用了js閉包的概念
2 exports.count = function(name){
3      if(count[name]){
4           count[name]++;
5      }else{
6           count[name] = 1;
7      }
8      console.log(name + '被訪問了' + count[name] + '次。');
9 };

 

 
我們在路由里這樣引用:
1 var count = require('count');
2  
3 export.index = function(req, res){
4      count('index');
5 };

 

以上便完成了對接口調用數的統計,但這只是個demo,因為數據存儲在內存,服務器重啟后便會清空。真正的計數器一定是要結合持久化存儲器的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM