node中的global对象

什么是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乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。(但是这样转换经常会取不尽,于是就会取近似值,这就是为什么js中0.1+0.2 !== 0.3
二进制小数转十进制:每位乘以2的(-(n-1))次幂,累加

base64编码

什么叫base64 ? 转化后的每一个字节都是小于64的
如何转换?举个例子:

console.log(Buffer.from('张')); // e5 bc a0
// 可以用toString方法进行进制转换
console.log(0xe5.toString(2));
console.log(0xbc.toString(2));
console.log(0xa0.toString(2)); 
// 十六进制转为二进制转换后的结果:11100101 10111100 10100000  3 * 8的格式  转化出的每个字节 不得大于64 0~63,转换为二进制最大为6个1,原本八位转换为六位,少了两位,在前面补0
// 3 * 8格式 改成 4 * 6的格式
// 11100101 10111100 10100000 -> 111001011011110010100000 -> 111001 011011 110010 100000 -> 00111001 00011011 00110010 00100000 
// 这样转换后,虽然符合base64规范,但是数据却会大 1/3 因为原来三个字节变成了现在四个字节
// 再将其转换为十进制
console.log(parseInt('00111001',2));
console.log(parseInt('00011011',2));
console.log(parseInt('00110010',2));
console.log(parseInt('00100000',2));
// 得到57 27 50 32 四个值
// 接下来进行编码 64的编码规范 由 A-Z a-z 0-9 +/ 组成的一个表
// 用得到的十进制数字,去表中对应位置取值,将值连在一起,就是最终编码结果
let str1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
str1+= str1.toLowerCase();  //  26 * 2 + 12
str1+='0123456789+/'
console.log(str1[57] + str1[27] + str1[50] + str1[32]); // 5byg
// 这样就编码完成了,就可以进行数据传输了

用在线工具试一下
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值