在《深入浅出nodejs》有这样一段(有部分增减):

1、nodejs引入模块分四个步骤

  • 路径分析
  • 文件定位
  • 编译执行
  • 加入内存

2、核心模块部分在node源代码的编译过程中就编译成了二级制文件,在node启动时就直接加载如内存,所以这部分模块引入时,前三步省略,直接加入。

3、nodejs的模块加载和浏览器js加载一样都有缓存机制,不同的是,浏览器仅仅缓存文件,而nodejs缓存的是编译和执行后的对象(缓存内存)。

基于以上三点:我们可以编写一个模块,用来记录长期存在的变量。例如:我可以编写一个记录接口访问数的模块:
 var count = {}; // 因模块是封闭的,这里实际上借用了js闭包的概念
exports.count = function(name){
if(count[name]){
count[name]++;
}else{
count[name] = 1;
}
console.log(name + '被访问了' + count[name] + '次。');
};
 
我们在路由里这样引用:
 var count = require('count');

 export.index = function(req, res){
count('index');
};

以上便完成了对接口调用数的统计,但这只是个demo,因为数据存储在内存,服务器重启后便会清空。真正的计数器一定是要结合持久化存储器的。

最新文章

  1. 重撸JS_1
  2. 通过数组和枚举简化GPIO操作编码
  3. APP长时间后台运行
  4. 使用hibernate可以优化的地方
  5. 客户端JS性能的一些优化的小技巧
  6. CSS3 Gradient线性渐变
  7. [Android]关于Activity的InstanceState
  8. 定时组件quartz系列<一>模拟定时组件小程序
  9. framework7学习笔记
  10. HW2.6
  11. php中的short_open_tag的作用
  12. Lipschitz连续【zz】
  13. VS error 全集(error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'char *' to 'LPCTSTR'的解决方法)
  14. postman安装使用教程---图文讲解
  15. arcgis api 4.x for js 结合 react 入门开发系列"esri-loader"篇(附源码下载)
  16. [转] Redux入门教程(快速上手)
  17. Restful API接口调用的方法总结
  18. sourceTree git的一些命令
  19. 什么是K线?K线的详解!
  20. 连接Mysql错误 error 1042 can't get hostname for your address

热门文章

  1. asp.net GDI+ 使用PathGradienBrush类实现彩色渐变
  2. java去中文
  3. ListView和ScrollView冲突
  4. NVelocity 表格行奇偶样式变换
  5. Java中XML格式的字符串4读取方式的简单比较
  6. 咏南IOCP REST中间件
  7. CPU的内部架构和工作原理
  8. php 生日提醒程序
  9. css省略号
  10. 21: Arithmetic Sequence--HZAU(dp)