模块初始化
一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。

主模块
通过命令行参数传递给NodeJS以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工作。例如通过以下命令启动程序时,main.js就是主模块。

$ node main.js
完整示例
例如有以下目录。

  • /home/user/hello/

    • util/
      counter.js
      main.js
      其中counter.js内容如下:

var i = 0;

function count() {
return ++i;
}

exports.count = count;
该模块内部定义了一个私有变量i,并在exports对象导出了一个公有方法count。

主模块main.js内容如下:

var counter1 = require('./util/counter');
var counter2 = require('./util/counter');

console.log(counter1.count());
console.log(counter2.count());
console.log(counter2.count());
运行该程序的结果如下:

$ node main.js
1
2
3
可以看到,counter.js并没有因为被require了两次而初始化两次。

转载于:https://www.cnblogs.com/aclihui/p/Nodejs-modelchushihua.html

Nodejs模块初始化相关推荐

  1. nginx源码分析之模块初始化

    在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...

  2. 基于源码剖析nodejs模块系统

    nodejs模块系统 简介 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之, 一个 No ...

  3. nodeJS学习(9)--- nodeJS模块:exports vs module.exports

    模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...

  4. HC-SR04模块初始化

    在进行初始化的时候我们首先要了解超声波模块的工作原理 VCC 供 5V电源,GND 为地线,TRIG 触 发 控 制 信 号 输入,ECHO 回响信号输出等四个接口端 最后看时序图,也就是模块初始化的 ...

  5. BLAM源码解析(一)—— 模块初始化

    接下来写一个开源SLAM算法系列吧,本期介绍BLAM算法.BLAM算法是伯克利的一位大牛写的,首先名字就很有意思,BLAM表示 B(erkeley) L(localization) A(nd) M(a ...

  6. LORA模块初始化失败

    LORA模块初始化失败了,单片机和模块之间通信协议为SPI: 阅读文档发现,是因为SPI速率太高倒置初始化失败导致: 不同主频的单片机每个模式的引脚速率不同,那个模块要求SPI < 10MHZ, ...

  7. 浅谈4.X内核和5.X内核LSM模块初始化差异

    最近在帮同事解一个LSM子模块的问题的时候,发现4.X内核和5.X内核的初始化流程存在较大的差异.借此问题,我也研究了一下两个大版本内核的LSM模块,最终有所获.先是在网上查找资料,然而目前网上很少有 ...

  8. 通过 Browserify 在浏览器中使用 NodeJS 模块

    NodeJS 把 JavaScript 的使用从浏览器端扩展到了服务器端,使得前端开发人员可以用熟悉的语言编写服务器端代码.这一变化使得 NodeJS 很快就流行起来.在 NodeJS 社区中有非常多 ...

  9. 【蓝桥杯嵌入式】比赛笔记(2)根据固件库快速配置各模块初始化

    [蓝桥杯嵌入式]比赛笔记(2)根据固件库快速配置各模块初始化 因为蓝桥杯比赛时间很短,并且如果自己去记忆各模块初始化的话,也难免有问题,所以这里给出一个通过固件库的快速初始化模块的方法. 比赛提供固件 ...

最新文章

  1. 关于迭代器中IEnumerable与IEnumerator的区别
  2. 27、HTML框架(同一个浏览器窗口中显示不止一个页面)
  3. 使用RabbitMQ的SpringBoot消息传递
  4. 想当年,我也是斩获20+大厂offer的收割机!
  5. C#进行Visio开发的事件处理
  6. S5PV210体系结构与接口10:MMU编程
  7. java 类文件_Java类文件概述
  8. html常用标签总结
  9. Lecture Notes: Macros
  10. HDU1847 Good Luck in CET-4 Everybody!
  11. 住建部印发《全国建筑设计周期定额》——建设和设计单位“不得压缩”设计周期...
  12. 360奇酷手机线刷教程
  13. Android自定义View画钟表
  14. 一台电脑网线连接另一台电脑,通过另一台电脑wifi网络上网
  15. 计算机无法连接蓝牙键盘,蓝牙鼠标连接不上电脑怎么办?
  16. couldn't find mysql server_MySQL安装错误Couldn't find MySQL server
  17. 使用Fiddler5和雷电模拟器4.0.83的抓包配置
  18. 从画笔到像素:一文读懂AI绘画的前世与今生
  19. Windows系统 gpedit命令详解,Windows系统使用命令行查看组策略
  20. 人生旅程需要自己去把握

热门文章

  1. C语言标准库<math.h>
  2. matlab 拼接矩阵,Matlab 不同行数矩阵拼接
  3. java实现自动登录_java实现用户自动登录
  4. Java SringBoot demo
  5. docker 容器命令
  6. matplotlib.pyplot.subplot
  7. C语言关系运算符介绍和示例
  8. 什么是E-MapReduce
  9. Linux学习总结(43)——企业运维最常用的150个Linux命令
  10. Java基础学习总结(30)——Java 内存溢出问题总结