模块初始化
一个模块中的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了两次而初始化两次。

最新文章

  1. 解决Scala Play框架在Git Bash运行的异常:Could not find configuration file ../framework/sbt/sbt.boot.properties
  2. Spring MVC前台使用html页面作为视图,配置静态资源后Controller控制器不起作用的解决办法
  3. 【leetcode❤python】66. Plus One
  4. 触摸精灵lua脚本实现微信群加好友功能
  5. kinect在ros上的初步测试---17
  6. 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录
  7. ASP.NET 学习博客
  8. JqueryMobile新手问题大全
  9. vue 实现 tomato timer(蕃茄钟)
  10. Java开源生鲜电商平台-财务系统模块的设计与架构(源码可下载)
  11. SVN:This client is too old to work with working copy…解决的方法
  12. Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4
  13. JAVA002标识符的命名规则、关键字
  14. 如何检查oracle的归档日志及空间占用率,清除归档日志
  15. netty源码理解(二) serverstrap.bind()
  16. fabric工具
  17. weex中UISegmentControl实现及遇到的问题
  18. POj 1753--Flip Game(位运算+BFS)
  19. js学习笔记17----元素的各种位置,尺寸
  20. ClamAV学习【9】——cvd文件解析及cli_untgz函数浏览

热门文章

  1. vue-cli项目接口地址可配置化(多环境部署)一处修改多处适用
  2. oracle 12c使用dblink克隆pdb
  3. 为什么使用中间件下载时总是收到警告消息Object is in status Wait
  4. 小故事学设计模式之Decorate: (二)老婆的新衣服
  5. Eclipse Java常用快捷键(Eclipse Shortcut Keys for Java Top10)(转)
  6. JVM原理:4 运行期优化
  7. bootstrapTable refresh 方法使用简单举例
  8. Android(java)学习笔记31:泛型高级之通配符
  9. Codeforces Round #513
  10. ACM-ICPC (10/19)