一、CommonJSphp
咱们只是在js文件中写下console.log('This is a test.');这句代码,node.js执行该js文件时:java
( function(exports, require, module, __filename, __dirname) { console.log('This is a test.'); } );
- 每一个文件是一个模块,有本身的做用域node
- 在模块内部module变量表明模块自己mysql
- module.exports属性表明模块对外接口sql
二、require特性npm
- module被加载时执行,加载后缓存数组
- 一旦出现某个模块被循环加载,就只会输出已经执行的部分,还未执行的部分不输出。开发中要避免两个模块相互加载。缓存
三、node.js将全局属性和方法挂到global上less
- CommonJsui
- Buffer、process、console
- timer(setTimeout、setImmediate等)
四、process进程
- node启动相关一些参数:argv、argv0、execArgv、execPath
const { argv, argv0, execArgv, execPath } = process; argv.forEach(item => { console.log(item); });
结果:
argv0就是argv数组的第一个值。
const { argv, argv0, execArgv, execPath } = process; argv.forEach(item => { console.log(item); }); console.log(argv0); console.log(execArgv);
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' }
五、setImmediate
// 下个队列 setImmediate(() => { console.log('setImmediate'); }); setTimeout(() => { console.log('setTimeout'); }); // 当前队列的队尾 process.nextTick(() => { console.log('nextTick'); }); // 结果: nextTick setTimeout setImmediate