node常用的内置模块(一)1.nodejsglobal的全局对象global对象可以看做是全局变量的宿主(部分属性设置为不可枚举),可以直接访问commonglobal无语法变量:__filename:返回正在执行的脚本文件的绝对路径__dirname:返回正在执行脚本文件的目录Timer类功能:执行顺序与事件循环过程的关系:提供与当前流程require:实现modules模块的加载,exports:处理模块export同理,在执行.js文件时,将js代码放在一个立即执行函数中,传入这些变量,所以可以使用这些变量直接地。//console.log(global);console.log('fileName@',__filename);console.log('dirName@',__dirname);console.log('process.cwd@',process.cwd());console.log('process.env@',process.env);//默认情况下这是一个空对象,global不是一个对象console.log('this@',this);(function(){console.log('fun@',this===global);//true})();2.进程模块获取进程信息://1.resource:console.log(process.memoryUsage());//memory/*{rss:20045824,//常驻内存heapTotal:4476928,//堆内存heapUsed:2686544,//使用的堆内存external:889742,//外部内存arrayBuffers使用的C++公共库:9898//数组缓冲区大小}*/console.log(process.cpuUsage());//CPU系统和用户操作cpu时间片使用情况{user:31000,system:31000}//2运行环境:console.log(process.cwd());//运行目录控制台.log(进程.版本);//节点版本console.log(process.versions);//节点环境(v8版本、uv版本、zlib版本、openssl版本、ares版本、modules版本)console.log(process.env.NODE_ENV);//判断是生产环境还是开发环境(未定义,使用打包工具时会自动配置)console.log(process.env.PATH);//环境变量console.log(process.env.USERPROFILE);//(部分平台使用HOME获取)在获取用户目录和编写脚手架工具时,可以在使用cri命令时使用console.log(process.arch);//cpu架构console.log(process.platform);//系统平台//3.运行状态:console.log(process.argv);//启动参数console.log(process.argv0);//快速获取第一个参数execArgvconsole.log(process.pid);//进程IDppidconsole.log(process.uptime());//运行时执行流程操作://4.事件订阅,事件监听process.on('beforeExit',(code)=>{//可以写异步代码console.log(`beforeExit:${code}`);//正常退出code=0})process.on('exit',(code)=>{console.log(`exit:${code}`);//不能写异步代码setTimeout(()=>{console.log('exittimeout');},0);})console.log('codeexecutionfinished');process.exit()//手动退出beforeExit事件无法触发//5.标准输出错误console.log=function(data){//process.stdout返回一个流对象process.stdout.write('--'+data+'\n');}安慰。log(1);constfs=require('fs');//创建流对象管道标准输出流fs.createReadStream('05-test.txt').pipe(process.stdout);//输入流//process.stdin.pipe(process.stdout);process.stdin.setEncoding('utf8');process.stdin.on('readable',()=>{letchunk=process.stdin.read();if(chunk!==null){process.stdout.write('data'+chunk);}})3.路径模块常用API:basename()获取路径中的基本路径名dirname()获取路径中的目录名extname()获取路径中的扩展名isAbsoulute()判断路径是否为绝对路径join()拼接多个路径段resolve()返回绝对路径parse()解析路径format()序列化路径normalize()规范化路径代码展示:constpath=require('path');//1.获取路径中的基本名称/***01返回接受路径的最后一部分*02第二个参数表示扩展名,如果不指定,默认返回完整的文件名*03当第二个参数作为后缀时,如果在当前路径中不匹配,则忽略*04处理目录路径时,如果末尾有路径分隔符,也会忽略*/console.log(__filename);//D:\Users\小江\Desktop\nodejs_test\06-path.jsconsole.log(path.basename(__filename));//06-path.jsconsole.log(path.basename(__filename,'.js'));//06-pathconsole.log(path.basename(__filename,'.css'));//06-path.jsconsole.log(path.basename('/a/b/c'));//cconsole.log(path.basename('/a/b/c/'));//c//2.获取路径中的目录名/***01返回路径中最后一部分的上一层目录的路径*/console.log(path.dirname(__filename));//D:\Users\小江\Desktop\nodejs_test//3.获取路径中的扩展名console.log(path.extname(__filename));//.js//4.Parsepath/***01返回一个包含路径基本信息的对象,相对路径的根为''*/constobj=path.parse(__filename);console.log(obj);/***{*root:'D:\\',*dir:'D:\\Users\\小江\\Desktop\\nodejs_test',*base:'06-path.js',*ext:'.js',*name:'06-path'*}*///5.序列化路径解析路径的逆向操作console.log(path.format(obj));//6.判断当前path是否是绝对路径console.log(path.isAbsolute(__filename));//trueconsole.log(path.isAbsolute('/a/b/c'));//true//7.路径拼接/***01自动判断路径分隔符*02可以判断相对路径(返回上一级,当前目录)*/console.log(path.join('/a/b/c','d','e.html'));///a/b/c/d/e.htmlconsole.log(path.join('/a/b/c','../','e.html'));///a/b/e.htmlconsole.log(path.join(''))//8.归一化路径/***归一化路径,去掉路径中多余的路径分隔符,修改为平台下的路径分隔符*/console.log(path.normalize('/a\\b/c///d/e.html'));///a/b/d/e.htmlconsole.log(path.normalize(''))//.//9.返回绝对路径console.log(path.resolve('./'));console.log(path.resolve('data.ts'));4.bufferbuffer简介:01不需要require的全局变量02Nodejs平台下的二进制数据操作03不占用v8堆内存空间的内存大小04内存的使用由node控制,由v8的GC回收.05一般和Stream一起使用,创建Buffer作为数据缓冲区//1.allocconstbu1=Buffer.alloc(10)//allocate//2.allocUnsafeconstbu2=Buffer.allocUnsafe(10)//allocateUnsafeUnsafe随机分配的内存,未清除内存,初始值为console.log(bu1)//
