nodejs -- 主模块 ,初始化.
一:知识点:
1-1: 模块初始化:

1-2 主模块:



二: 测试
2-1: 代码:
1) 主模块 1: main.js
var counter1 = require("./counter.js");
var counter2 = require("./counter.js");
console.log(counter1.count());
console.log(counter2.count());
console.log(counter1.count());
console.log(counter2.count());
2) 主模块2: main2.js
var counter3 = require("./counter.js");
// console.log(counter1); //ReferenceError: counter1 is not defined
console.log(counter3.count());
3)处理程序: counter.js
var i = 0;
function count(){
return ++i;
}
exports.count = count;
2-2: 测试
运行:

----------------------------
分析:
1.运行 主模块 main.js , 依次输出 1, 2 ,3, 4 ; 可见 模块counter.js 到导出 对象 只被 初始化一次.
2.运行 main2.js , 输出 1 ,不是 5 . 这是因为 通过命令行 重新运行 main2.js . 当做重新启动主模块
// console.log(counter1); //ReferenceError: counter1 is not defined
如果取消注释, 这里会报错.
因为 counter1 是在 main.js 中定义的.
3.如果 多次运行 main.js

虽然 没有运行 main2.js , 只是 重复运行 main.js . 但是 输出 不是按照我们的期望 1 2 3 4 , 5 6 7 8 , 9 10 11 12 ,
而是重复的 1 2 3 4 .
这是因为 每次通过 命令行 运行 main.js , 都应该 视作 一个 新的 开始.
三: 参考链接
nodejs -- 主模块 ,初始化.的更多相关文章
- Nodejs模块初始化
模块初始化 一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象.之后,缓存起来的导出对象被重复利用. 主模块 通过命令行参数传递给NodeJS以启动程序的模块被称为 ...
- nodejs的模块系统(实例分析exprots和module.exprots)
前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...
- nodejs js模块加载
本文地址:http://www.cnblogs.com/jasonxuli/p/4381747.html nodejs的非核心模块(core module)加载主要使用的就是module.js. 项目 ...
- nodejs cluster模块初探
大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行 ...
- Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化
---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1. 初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...
- 6. [mmc subsystem] mmc core(第六章)——mmc core主模块
一.说明 1.mmc core概述 mmc core主模块是mmc core的实现核心.也是本章的重点内容. 对应代码位置drivers/mmc/core/core.c. 其主要负责如下功能: mmc ...
- nginx源码分析之模块初始化
在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...
- nodejs事件模块
nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life ...
- 配置 Windows 下的 nodejs C++ 模块编译环境
根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nod ...
随机推荐
- DB2 错误代码
sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 +098 0 ...
- Determine YARN and MapReduce Memory Configuration Settings
Determine YARN and MapReduce Memory Configuration Settings https://docs.hortonworks.com/HDPDocuments ...
- RPM Yum 相关命令及参数
RPM 命令 我们可以直接使用rpm命令,对软件包进行一些操作. 安装 rpm –ivh <package_name> rpm –Uvh <package_name> # 没有 ...
- Bytom 技术 FAQ
比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 1.如何 ...
- 【转】关于高可用负载均衡的探索-基于Rancher和Traefic
原文链接:http://www.dwz.cn/7F4r2T 原创 2018-03-23 张新峰 RancherLabs 本文于3月22日晚由张新峰,杭州爱医康架构师技术分享整理而成.本次分享介绍了如何 ...
- vscode 常用插件
1. Local History 可以查看本地的修改记录,比较不同 2.TODO插件 可以将有待修改或者完善的地方标记出来,在任务列表中查看, 避免后面忘记, 提高效率. 包含TODO, FIXME. ...
- elbow 求拐点
distancePointLine <- function(x, y, slope, intercept) { ## x, y is the point to test. ## slope, ...
- Hive常用操作命令
创建数据库>create database db_name;>create database if not exists db_name;//创建一个不存在的数据库final查看数据库&g ...
- 【JMeter】教程及技巧汇总(转载)
转载地址:http://www.hissummer.com/jmeter-summary.html 参考/学习资料:http://www.yiibai.com/jmeter/jmeter_build_ ...
- npm2 与 npm3的包版本管理
npm2采用严格的包依赖模式 npm install name@1.2.* ---- 1.2.0 <= version <= 1.2.9 npm install name@1.* ---- ...