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
// 这样就编码完成了,就可以进行数据传输了
用在线工具试一下
node中的global对象相关推荐
- Node 中的 Buffer 对象
Node 中的 Buffer 对象 Node 中的 Buffer 对象 1. Buffer 的构建与转换 2. Buffer 的拼接 Node 中的 Buffer 对象 Buffer是 Node 特有 ...
- JavaScript 中的BOM对象
认识BOM操作 BOM :浏览器对象模型(Browser Object Model) 简称BOM,由浏览器提供的用于处理文档(document)之外的所有内容的其他对象 比如navigator.loc ...
- 春风十里不如Node中的一股清流
一股清流 清明时节雨纷纷,果然每逢清明是会下雨的.在这个雨夹雪,不方便外出的日子,宅在家里一起来相互学习分享吧!不然还能怎样呢!哈哈 友情提示:本文可能会涉及到一些Api的内容,会很乏味,很枯燥,很没 ...
- 简单认识和使用node 中的流(stream)
为什么要用流 - 如果整体读写, 文件比较大 ,一次性读取就会占用大量内存,效率低下,而且内存是非常珍贵的,所有就有了流的诞生. - 流是将数据分隔段 ,一段一段的读取,效率很高 复制代码 流是什么 ...
- 打开浏览器的包 node_如何发布可在浏览器和Node中使用的软件包
打开浏览器的包 node When you create a package for others to use, you have to consider where your user will ...
- [js对象]JS入门之Global对象
Global就是一个全部的意思,没有什么语法,就是把所有全局方法集中在这个对象中.我们直接用他们就可以了,比如parseInt等等方法都是全局方法.Global 对象从不直接使用,并且不能用 new ...
- python 中使用 global 引发了莫名其妙的问题
定义全局变量的方法: console=None def log_info(logstr): global console if console is None: console = logging.S ...
- RegExp:正则表达式对象 || Global对象
RegExp:正则表达式对象 1. 正则表达式:定义字符串的组成规则. 1. 单个字符:[ ] 如: [a] [ab] [a-z ...
- ASP.NET中使用Global.asax文件
转:http://www.cnblogs.com/ly5201314/archive/2008/09/23/1296868.html ASP.NET中使用Global.asax文件 Global.as ...
最新文章
- 玩玩TCPCOPY+ intercept+mysql-replay-module(未成功)
- SVM学习(三):线性分类器的求解
- ubuntu14.04、CentOS安装oracle 11g数据库【转载】
- 匹配替换指定文本为html标签
- UIDatePicker 日期/时间选取器(滚轮)—IOS开发
- 机器学习中的凸优化理论
- 用户画像2种数据存储的方式
- 【模拟】【codeforces】599B Spongebob and Joke
- 原码、反码、补码,计算机中所有的数都是以补码的形式存储的
- FreeEIM 小插件 dwzjzx v2.1001 2013 下载
- mpvue 微信小程序api_基于mpvue构建微信和支付宝小程序(1)
- 21 句话入门机器学习
- oracle mysql odbc驱动程序_用于 Oracle 的 ODBC 驱动程序
- php laravel手册,laravel5.6手册下载|Laravel5.6中文手册pdf最新版下载(附使用方法)_星星软件园...
- 小学英语与计算机技术整合,浅谈多媒体技术与小学英语教学的整合
- Nginx和HA负载
- NYoj 366 D的小L 【DFS】
- MATLAB提取图片点击处的坐标代码(仅供参考)
- b树的表示形式_B.Com的完整形式是什么?
- 无人车、无人机、超级高铁、智慧城市......这是一份来自未来的出行报告
热门文章
- 在Windows上打造出自己的Linux开发环境
- 回文联对联大全_回文联
- linux下运行的游戏(持续更新中)
- 海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子凭据分为五份,多了一个, 这只猴子把多的一个扔入海中, 拿走了一份。 第二只猴子把剩下的 桃子又平均分成五份, 又多了一个,它同样把多的一个扔入
- HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明
- 这应该是最通俗易懂的PyEcharts的操作指南!
- 计算机应聘大学生自我介绍,大学生计算机毕业面试自我介绍
- NetLogo学习笔记5 —— 物种与传染病模型
- c语言读取 mat文件的函数,vc对.mat文件的读取
- fedora php mysql_Fedora 8下用Yum安装Apache+PHP+MySQL环境