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.编写后台业务逻辑 ...
随机推荐
- spring boot 框架根據 sql 創建語句自動生成 MVC層類代碼
GITHUB: https://github.com/lin1270/spring_boot_sql2code 會自動生成model.mapper.service.controller. 代碼使用No ...
- Oracle 即时客户点下载以及简单连接数据库的方法
1. 下载方法 百度 oracle client 第一个即可 2. 下载地址为: https://www.oracle.com/database/technologies/instant-client ...
- 【转贴】Windows常用命令实例
Windows常用命令实例 https://www.cnblogs.com/linyfeng/p/6261629.html 熟练使用DOS常用命令有助于提高工作效率. 1.windows+R:打开运行 ...
- 【Python】【demo实验2】【打印乘法口诀表】
打印乘法口诀表 源代码: # encoding=utf-8 for i in range(1,10): print("\n") for j in range(1,10): if i ...
- 索引及explain 详解
索引的分类: 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有null) 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个 组合索引:多列值组成一个索引,专门用于组合 ...
- 结合docker做flask+kafka数据接口与压力测试
一.需求 需要做实时数据接入的接口.数据最终要写入库,要做到高并发,数据的完整,不丢失数据. 二.技术选型 1.因为只是做简单的接口,不需要复杂功能,所以决定用flask这个简单的python框架(因 ...
- Android SDK安装与环境配置
一.单独下载只有sdk的包,SDK不包括在Android Studio里,适用于不需要Android Studio的用户,其他可自行去官网下载. 1:Android SDK (https://www. ...
- python 写接口供外部调用
.py: import requests import urllib2 import commands import subprocess def check(): status, msg = com ...
- Codeforces 1221F. Choose a Square
传送门 对于某个点 $(x,y)$ ,不妨设 $x<y$ 因为如果 $x>y$ 直接按 $y=x$ 对称一下即可 当且仅当正方形左下角 $(a,a)$ 满足 $a<=x$,右上角 $ ...
- Git提交代码的小知识
1.需要切换到项目目录下并创建一个Repository用于提交代码到这个仓库里 cd /g/....//cd后面有空格,用于进入某个项目文件夹 git init//用于创建Repository 2.添 ...