什么是global对象?
global对象,是node中的全局变量,类似浏览器中的window对象。global对象也有一个global属性引用自身。
module,exports,require,__dirname,__filename虽然可以全局访问,但他们并不属于global的属性,他们是每个模块引入时,包裹的匿名函数中的参数。
global对象的属性,是全局属性,在node中都可以直接访问。
常见的全局属性
- process:当前运行地进程
- Buffer:二进制对象
- setImmediate
- ……
process对象
process有很多比较有用的属性
- platform:进程运行的平台
- nextTick:在主栈执行完毕后执行
- cwd:
console.log(process.cwd());
返回Node.js进程当前的工作目录(当前文件的文件夹所在位置) - env:返回当前系统的环境变量,在写脚手架时,可以用它来区分开发环境与生产环境
- argv:通过argv属性来获取用户传递的参数,例:
webpack --config a --port 3000
- 默认argv是一个数组,1. node可执行文件路径 2. 执行的文件路径(当前文件)other:用户传递的参数……
- 一般不自己处理argv数组,会用别人写好的包:commander。commander是一个功能很强大的包。
Buffer对象
为什么要有Buffer?
早期js是使用在浏览器中的(不能操作文件 不能读写)node中需要有读写文件能力的。 这就需要拥有一个能处理二进制的东西。
- Buffer可以用来描述内存中的内容,默认是十六进制的,会将二进制数据转换为十六进制。一般用于处理http数据流。
- node默认使用utf8编码,会将每个中文汉字转换成3个十六进制的字节,用法:
Buffer.from('张三');
进制转换
十进制转二进制:短除法取余
二进制转十进制:每位乘以2的(n-1)次幂,累加
十进制小数转二进制:"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,