什么是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
// 这样就编码完成了,就可以进行数据传输了

用在线工具试一下

node中的global对象相关推荐

  1. Node 中的 Buffer 对象

    Node 中的 Buffer 对象 Node 中的 Buffer 对象 1. Buffer 的构建与转换 2. Buffer 的拼接 Node 中的 Buffer 对象 Buffer是 Node 特有 ...

  2. JavaScript 中的BOM对象

    认识BOM操作 BOM :浏览器对象模型(Browser Object Model) 简称BOM,由浏览器提供的用于处理文档(document)之外的所有内容的其他对象 比如navigator.loc ...

  3. 春风十里不如Node中的一股清流

    一股清流 清明时节雨纷纷,果然每逢清明是会下雨的.在这个雨夹雪,不方便外出的日子,宅在家里一起来相互学习分享吧!不然还能怎样呢!哈哈 友情提示:本文可能会涉及到一些Api的内容,会很乏味,很枯燥,很没 ...

  4. 简单认识和使用node 中的流(stream)

    为什么要用流 - 如果整体读写, 文件比较大 ,一次性读取就会占用大量内存,效率低下,而且内存是非常珍贵的,所有就有了流的诞生. - 流是将数据分隔段 ,一段一段的读取,效率很高 复制代码 流是什么 ...

  5. 打开浏览器的包 node_如何发布可在浏览器和Node中使用的软件包

    打开浏览器的包 node When you create a package for others to use, you have to consider where your user will ...

  6. [js对象]JS入门之Global对象

     Global就是一个全部的意思,没有什么语法,就是把所有全局方法集中在这个对象中.我们直接用他们就可以了,比如parseInt等等方法都是全局方法.Global 对象从不直接使用,并且不能用 new ...

  7. python 中使用 global 引发了莫名其妙的问题

    定义全局变量的方法: console=None def log_info(logstr): global console if console is None: console = logging.S ...

  8. RegExp:正则表达式对象 || Global对象

    RegExp:正则表达式对象 1. 正则表达式:定义字符串的组成规则.                 1. 单个字符:[ ]                     如: [a] [ab] [a-z ...

  9. ASP.NET中使用Global.asax文件

    转:http://www.cnblogs.com/ly5201314/archive/2008/09/23/1296868.html ASP.NET中使用Global.asax文件 Global.as ...

最新文章

  1. 玩玩TCPCOPY+ intercept+mysql-replay-module(未成功)
  2. SVM学习(三):线性分类器的求解
  3. ubuntu14.04、CentOS安装oracle 11g数据库【转载】
  4. 匹配替换指定文本为html标签
  5. UIDatePicker 日期/时间选取器(滚轮)—IOS开发
  6. 机器学习中的凸优化理论
  7. 用户画像2种数据存储的方式
  8. 【模拟】【codeforces】599B Spongebob and Joke
  9. 原码、反码、补码,计算机中所有的数都是以补码的形式存储的
  10. FreeEIM 小插件 dwzjzx v2.1001 2013 下载
  11. mpvue 微信小程序api_基于mpvue构建微信和支付宝小程序(1)
  12. 21 句话入门机器学习
  13. oracle mysql odbc驱动程序_用于 Oracle 的 ODBC 驱动程序
  14. php laravel手册,laravel5.6手册下载|Laravel5.6中文手册pdf最新版下载(附使用方法)_星星软件园...
  15. 小学英语与计算机技术整合,浅谈多媒体技术与小学英语教学的整合
  16. Nginx和HA负载
  17. NYoj 366 D的小L 【DFS】
  18. MATLAB提取图片点击处的坐标代码(仅供参考)
  19. b树的表示形式_B.Com的完整形式是什么?
  20. 无人车、无人机、超级高铁、智慧城市......这是一份来自未来的出行报告

热门文章

  1. 在Windows上打造出自己的Linux开发环境
  2. 回文联对联大全_回文联
  3. linux下运行的游戏(持续更新中)
  4. 海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子凭据分为五份,多了一个, 这只猴子把多的一个扔入海中, 拿走了一份。 第二只猴子把剩下的 桃子又平均分成五份, 又多了一个,它同样把多的一个扔入
  5. HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明
  6. 这应该是最通俗易懂的PyEcharts的操作指南!
  7. 计算机应聘大学生自我介绍,大学生计算机毕业面试自我介绍
  8. NetLogo学习笔记5 —— 物种与传染病模型
  9. c语言读取 mat文件的函数,vc对.mat文件的读取
  10. fedora php mysql_Fedora 8下用Yum安装Apache+PHP+MySQL环境