node.js之CommonJS
1、CommonJS
我们只是在js文件中写下console.log('This is a test.');这句代码,node.js执行该js文件时:
(
function(exports, require, module, __filename, __dirname) {
console.log('This is a test.');
}
);
- 每个文件是一个模块,有自己的作用域
- 在模块内部module变量代表模块本身
- module.exports属性代表模块对外接口
2、require特性
- module被加载时执行,加载后缓存
- 一旦出现某个模块被循环加载,就只会输出已经执行的部分,还未执行的部分不输出。开发中要避免两个模块相互加载。
3、node.js将全局属性和方法挂到global上
- CommonJs
- Buffer、process、console
- timer(setTimeout、setImmediate等)
4、process进程
- node启动相关一些参数:argv、argv0、execArgv、execPath
argv, argv0: 命令行参数,argv0就是argv数组的第一个值
const { argv, argv0, execArgv, execPath } = process;
argv.forEach(item => {
console.log(item);
});

execArgv: 执行参数 ,比如--inspect
const { argv, argv0, execArgv, execPath } = process;
argv.forEach(item => {
console.log(item);
});
console.log(argv0);
console.log(execArgv);

环境变量 env
const { env } = process;
console.log(env);
结果:
{ '#envTSLOGSHELLEXT10724': '351103568',
'#envTSLOGsss10724': '80627808',
'#envTSLOGTSLOG10724': '80616288',
ALLUSERSPROFILE: 'C:\\ProgramData',
APPDATA: 'C:\\Users\\oy\\AppData\\Roaming',
CommonProgramFiles: 'C:\\Program Files\\Common Files',
'CommonProgramFiles(x86)': 'C:\\Program Files (x86)\\Common Files',
CommonProgramW6432: 'C:\\Program Files\\Common Files',
COMPUTERNAME: 'LAPTOP-SHVUJ9TS',
ComSpec: 'C:\\WINDOWS\\system32\\cmd.exe',
DriverData: 'C:\\Windows\\System32\\Drivers\\DriverData',
FPS_BROWSER_APP_PROFILE_STRING: 'Internet Explorer',
FPS_BROWSER_USER_PROFILE_STRING: 'Default',
HOMEDRIVE: 'C:',
HOMEPATH: '\\Users\\oy',
JAVA_HOME: 'D:\\JavaDevelop\\jdk1.8.0_111',
LOCALAPPDATA: 'C:\\Users\\oy\\AppData\\Local',
LOGONSERVER: '\\\\LAPTOP-SHVUJ9TS',
MYSQL_HOME: 'D:\\JavaDevelop\\mysql-5.1.69-winx64',
NUMBER_OF_PROCESSORS: '8',
OneDrive: 'C:\\Users\\oy\\OneDrive',
OneDriveConsumer: 'C:\\Users\\oy\\OneDrive',
OS: 'Windows_NT',
Path:
'C:\\Users\\oy\\AppData\\Roaming\\npm;D:\\DevTools\\php-5.6.40-Win32-VC11-x64;D:\\JavaDevelop\\mysql-5.1.69-winx64\\bin;D:\\JavaDevelop\\jdk1.8.0_111\\bin;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;D:\\DevTools\\nodejs\\;C:\\Users\\oy\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\oy\\AppData\\Roaming\\npm;',
PATHEXT: '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL',
PHP_HOME: 'D:\\DevTools\\php-5.6.40-Win32-VC11-x64',
PROCESSOR_ARCHITECTURE: 'AMD64',
PROCESSOR_IDENTIFIER: 'AMD64 Family 23 Model 17 Stepping 0, AuthenticAMD',
PROCESSOR_LEVEL: '23',
PROCESSOR_REVISION: '1100',
ProgramData: 'C:\\ProgramData',
ProgramFiles: 'C:\\Program Files',
'ProgramFiles(x86)': 'C:\\Program Files (x86)',
ProgramW6432: 'C:\\Program Files',
PSModulePath:
'C:\\Users\\oy\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules',
PUBLIC: 'C:\\Users\\Public',
SESSIONNAME: 'Console',
SystemDrive: 'C:',
SystemRoot: 'C:\\WINDOWS',
TEMP: 'C:\\Users\\oy\\AppData\\Local\\Temp',
TMP: 'C:\\Users\\oy\\AppData\\Local\\Temp',
USERDOMAIN: 'LAPTOP-SHVUJ9TS',
USERDOMAIN_ROAMINGPROFILE: 'LAPTOP-SHVUJ9TS',
USERNAME: 'oy',
USERPROFILE: 'C:\\Users\\oy',
windir: 'C:\\WINDOWS' }
5、setImmediate
// 下个队列
setImmediate(() => {
console.log('setImmediate');
}); setTimeout(() => {
console.log('setTimeout');
});
// 当前队列的队尾
process.nextTick(() => {
console.log('nextTick');
}); // 结果:
nextTick
setTimeout
setImmediate
node.js之CommonJS的更多相关文章
- Node.js,commonjs,require
环境: Node应用由模块组成,采用CommonJS模块规范. node的全局对象是global,没有window这个对象. process表示当前执行的进程,挂在global之下. CommonJS ...
- Node.js相关——CommonJS规范
1. CommonJS规范产生背景 在后端,JavaScript的规范远远落后并且有很多缺陷,这使得难以使用JavaScript开发大型应用.比如: 没有模块系统 标准库较少 没有标准接口 缺乏包管理 ...
- Node.js学习笔记
相关介绍 1.Node.js或者Node,是一个可以让javascript运行在服务器端的平台. 2.Node.js是一个为实时Web应用开发而诞生的语言,它从诞生之初就充分考虑了再实时响应.超大规模 ...
- node.js不得不说的12点内容
1.node.js,服务器端的javascript,它允许在后端(脱离浏览器环境)运行javascript代码. 2.事件驱动.异步式I/O的编程模式(单线程)是其核心. 3.node.js的java ...
- Node.js的核心与红利(zz)
唯有明晰历史,才能了然当下,预知未来.作者从历史角度解读Node.js,帮助读者透过猜忌和谣言,看清真实的Node.js,了解Node.js的核心与红利. 令人惴惴不安的Node.js 我们越来越频繁 ...
- node.js入门及express.js框架
node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...
- 使用Node.js作为后台进行爬虫
看了一遍又一遍Node.js但是没过多久就又忘了,总想找点东西来练练手,就发现B站首页搜索框旁边的GIF图特别有意思,想着是不是可以写一个小Node.js项目把这些图全部扒下来,于是带着复习.预习与探 ...
- Node.js学习笔记(二):模块
模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.一个 Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码.JSON 或者编译过的 C/C++ 扩展. ...
- node.js零基础详细教程(2):模块化、fs文件操作模块、http创建服务模块
第二章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...
随机推荐
- js同步任务和异步任务的执行顺序
先来道今日头条面试题开开胃 async function async1() { console.log('async1 start'); await async2(); console.log('as ...
- hadoop3.1.2启动和停止
1/ 启动 启动zookeeper: 三个节点上都zkServer.sh start 启动hdfs和yarn: 101上start-dfs.sh 102上start-yarn.sh 启动hive: ...
- CodeForce20C
这是一个裸的最短路的模板题,但是它需要输出路径. 用dijkstra的话首先敲一个最短路的板子,其次开一个数组p[]来记录路径,但是怎么存呢?我们需要记录每一个点的前驱,因为如果记录后边的话,一个点可 ...
- c++学习笔记之类和对象(一、类定义)
类和对象是 C++ 的重要特性,它们使得 C++ 成为面向对象的编程语言. 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化.每个对象都是类的一个 ...
- 前端-CSS-初探-注释-语法结构-引入方式-选择器-选择器优先级-01(待完善)
目录 CSS(Cascading Style Sheet) CSS注释 CSS语法结构 CSS的三种引入方式 选择器 伪类.伪元素选择器速查 CSS选择器优先级***** 选择器相同的情况下 选择器不 ...
- 北大 ACM highways问题研究(最小生成树)
#include<stdlib.h> #include<stdio.h> #include<queue> struct vertex//代表一个村庄 { int m ...
- 100、神器的 routing mesh (Swarm07)
参考https://www.cnblogs.com/CloudMan6/p/7930321.html 上一节我们提到了 swarm 的 routing mesh .当外部访问任意节点的8080端口 ...
- laravel 5.7 引入Illuminate\Http\Request 在类内调用 Request 提示不存在的问题
laravel报错: ReflectionException Class App\Http\Controllers\Request does not exist 解决办法: namespace App ...
- 18 Python之初识面向对象
1. 类与对象 class Car: #类名首字母大写,严格遵守驼峰命名规范 pass #造车 c = Car() #类名() #创建对象 ##出场之后进行改装 c.color = "红色& ...
- idea安装完成后要做的几件事(设置字体、编码、行号)
1.设置字体大小和样式 打开设置:File-->Settings 看到如下界面,输入font,点击Editor目录下的Font设置字体大小和样式: Font:字体样式 size:字体大小 Fal ...