首页 > 代码库 > 利用nodejs模块缓存机制创建“全局变量”
利用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,因为数据存储在内存,服务器重启后便会清空。真正的计数器一定是要结合持久化存储器的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。