位置: 编程技术 - 正文

深入理解Nodejs Global 模块(深入理解计算机系统)

编辑:rootadmin

推荐整理分享深入理解Nodejs Global 模块(深入理解计算机系统),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入理解中国式现代化,深入理解计算机系统 电子书,深入理解新发展理念,深入理解计算机系统 电子书,深入理解中国式现代化,深入理解新发展理念,推进供给侧结构性改革,深入理解新发展理念,深入理解计算机系统,内容如对您有帮助,希望把文章链接给更多的朋友!

浏览器上有自己的全局对象 window,同理, nodejs 下也有自己的全局对象 global,并且在各个模块下 都可以直接访问 global 对象。

在 nodejs 中,除了可以直接使用 V8 JavaScript 引擎中所支持的原生 JavaScript 的函数和对象外,它还追加了一些其他的函数和对象(比如:Buffer 对象、require 函数等)。

Buffer 对象: 用于处理二进制数据 module 对象: 用于访问当前模块的信息 process 对象: 用于访问进程信息 console 对象: 用于向控制端输出某些信息 6 个计时器相关函数

需要注意的是,可以在不引入模块的情况下直接使用 nodejs 追加的这些函数和对象。

下面将对上面的这些对象和函数的使用进行简单的解释。

Buffer 对象

在 ES6 之前,原生的 JavaScript 并没有专门用来处理二进制数据的机制,所以为了方便地处理二进制数据,nodejs 才引入了 Buffer 对象。

ES6 之后,原生的 JavaScript 引入了 TypedArray,用来处理二进制数据。注意 TypedArray 并不是以一个单一的对象的形式而存在,而是以一系列值的类型为 TypedArray 的对象而存在。在这一系列对象中,Uint8Array 对象和 Buffer 对象最为相似,但是 Buffer 对象更加适用于 nodejs。

Buffer 对象的实例很像一个各个元素都是整数的数组,但是与真正的数组的区别在于它的大小固定的(即在实例创建时决定大小),并且为它分配的内存是原生的,并且存在于 V8 的堆内存外。在 nodejs 6.0 版本之前,是使用 new Buffer() 语法来创建一个实例,但是因为一些安全问题,以这种形式创建实例的方法被废除了,取而代之的是一些 Buffer 对象的一些静态方法。

创建 Buffer 实例

Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0 Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据 Buffer.allocUnsafeSlow(size) Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖) Buffer.from(arrayBuffer[, byteOffset[, length]]): This creates a view of the ArrayBuffer without copying the underlying memory Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例 Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例

上面讲的不太清楚(以后再优化),因为我是初学,TypedArray 都没玩过呢!

但是放心,大腿在这呢 — Node源码解析 ? buffer

源码链接: buffer.js

Buffer.byteLength(string[, encoding]): 返回 string 的实际的字节长度(注意不是字符长度)

上面的汉字 小 的 UTF-8 码正好占用三个字节(xE5xB0x8F),所以才会有上面的结果。

Buffer.concat(list[, totalLength]): 连接多个 Buffer 实例或 Uint8Array 实例,并返回一个新的 Buffer 实例

Buffer.isBuffer(obj): 判断一个对象是不是 Buffer 实例

Buffer.isEncoding(encoding): 判断是否支持指定的编码方式

Buffer.poolSize: 指定预分配的字节数的大小,默认为 (即 8 KB)

Buffer.prototype.buffer: 一个指向 ArrayBuffer 的引用

Buffer.prototype.equals(otherBuffer): 比较两个 Buffer 实例是否拥有完全相同的 bytes

用于迭代的方法

Buffer.prototype.entries() Buffer.prototype.keys() Buffer.prototype.values()

Buffer.prototype.fill(value[, offset[, end]][, encoding]): 用指定的值填充满 Buffer 实例

Buffer.prototype.includes(value[, byteOffset][, encoding])

深入理解Nodejs Global 模块(深入理解计算机系统)

Buffer.prototype.indexOf(value[, byteOffset][, encoding])

Buffer.prototype.toJSON(): 返回一个 JSON 对象

当 JSON.stringify(buf) 的参数为一个 Buffer 实例时,会隐式地调用上面的方法

Buffer.prototype.toString([encoding[, start[, end]]]): 以指定的 encoding 解码 Buffer 实例,返回解码后的字符串

字符串不能被修改,但是 Buffer 实例却可以被修改。

Buffer.prototype.write(string[, offset[, length]][, encoding]): 将指定字符串写入到 Buffer 中

好了,还有一堆方法就不一一列出来了,Buffer 就到这里了。

module 对象

在使用 require 函数加载模块文件时,将运行该模块文件中的每一行代码

模块在首次加载后将缓存在内存缓存区中,所以对于相同模块的多次引用得到的都是同一个模块对象,即对于相同模块的多次引用不会引起该模块内代码的多次执行。

在编译的过程中,Node 会对获取的 JavaScript 文件内容进行头尾包装!

__filename & __dirname

__filename: 返回当前模块文件的绝对路径(带文件名) __dirname: 返回当前模块文件所在目录的绝对路径

Process 对象

process 对象是 nodejs 的一个全局对象,提供当前 nodejs 进程的信息。

属性

process.arch: 返回当前处理器的架构 process.env: 返回一个包含用户环境变量的对象 process.argv: 返回一个数组,数组的第一个元素总是 node 程序的绝对路径,第二个元素是当前执行脚本的绝对路径 process.execPath: 返回 node 程序的绝对路径 process.argv0: 返回 node 程序的绝对路径 process.pid: 返回当前进程的进程号 process.platform: 返回当前的系统平台标识符(比如:'darwin', ‘freebsd', ‘linux', ‘sunos' or ‘win') process.version: 返回当前 node 的版本号 process.versions: 返回一个对象,列出了 nodejs 和其相关依赖的版本号

三个重要的属性

process.stdin: 返回一个指向标准输入流的可读流(Readable Stream) process.stdout: 返回一个指向标准输出流的可写流(Writable Stream) process.stderr: 返回一个指向标准错误流的可写流(Writable Stream)

方法

process.cwd(): 返回进程当前的工作目录 process.chdir(path): 改变进程当前的工作目录 process.cpuUsage(): 返回当前 CPU 的使用情况 process.memoryUsage(): 返回当前内存的使用情况 process.uptime(): 返回 Node 程序已运行的秒数 process.nextTick(callback[, …args]): 指定回调函数在当前执行栈的尾部、下一次Event Loop之前执行 process.emitWarning(warning[, options]): 触发一个 warning 事件,可以自定义一些警告信息 process.exit([code]): 立即结束当前进程,但是会触发 process 的 exit 事件 process.abort(): 立即结束当前进程,不会触发 exit 事件

process 对象还有一些方法没列出来,因为我现在看不懂怎么用,以后补 >_<

Console 对象

这个对象就是用来在控制台下面打印一些信息而已,挑几个有用但没记牢的方法来玩玩。

console.dir(value): 打印一个对象的详细信息

console.time(label) & console.timeEnd(label): 用来统计代码执行时间

6 个计时器函数

在浏览器上,就有相应的 4 个计时器函数(setInterval、clearInterval、setTimeout、clearTimeout),只不过它们是 window 全局对象的属性。

在 nodejs 中,除过上面的 4 个计时器,还增加了两个(setImmediate,clearImmediate)。

这六个计时器函数被定义在了全局对象 global 下,即可以直接在代码中进行使用。

标签: 深入理解计算机系统

本文链接地址:https://www.jiuchutong.com/biancheng/380829.html 转载请保留说明!

上一篇:深入理解Node中的buffer模块(node的理解)

下一篇:详解nodeJS之二进制buffer对象(nodejs init)

  • 中国注册税务师协会法律法规库
  • 小规模纳税人企业所得税怎么计算
  • 金税四期已经开始了吗
  • 公司视频宣传制作方案
  • 查账征收企业所得税年报怎么填
  • 融资租赁如何确认收入
  • 劳务费专票需要备注吗
  • 库存商品赠送给客户要开票吗
  • 应税职工福利费在应纳税所得额里面吗
  • 土地增值税清算管理规程
  • 折扣为负数是什么意思
  • 电子发票可以做报销凭证吗
  • 6月实施的新政有哪些?
  • 融资租赁要怎么做
  • 居间合同怎么签才算有效
  • 取得带息应收票据时,企业应于期末计算票据利息
  • 苹果电脑快捷键删除
  • 老毛桃u盘启动盘制作工具怎么安装win10系统 老毛桃u盘安装win10系统图文教程
  • 电脑折旧率计算公式
  • 计提企业所得税费用会计分录
  • 预缴企业所得税怎么做账务处理
  • 收购公司款项的支付是利好还是利差
  • 管理软件对相机的要求
  • androirc下载
  • windows商店如何切换地区
  • php 设计模式
  • 税务发票上的账户是对公账户吗
  • mac怎么写代码
  • 六月雪的养殖方法和浇水时间
  • 建筑行业有哪些岗位,从事的要求有哪些
  • 现金日记账期初余额怎么算
  • 公司注销时做哪些财务处理
  • php获取指定日期的星期几的方法是
  • 什么是累计预扣预缴应纳税所得额
  • php swoft
  • thinkphp框架结构
  • 报销人和收款人不一致
  • 专利收费的职能包括
  • 利息收入税务处理办法
  • 财政零余额账户存款
  • 未经审计情况说明怎么写
  • vue2跟vue3
  • linux下安装mysql数据库5.6源码安装,修改登录用户密码
  • javatoolkit详解
  • 食堂购买固定资产会计处理
  • 审计符合性测试
  • 如何设置固定资产累计折旧增值税进项税额缺损入账科目
  • 物业公司物业费计入什么会计科目
  • 印花税怎么用
  • 样机 研发费用归集与核算
  • 其他业务支出可以在企业所得税前扣除吗
  • 防伪标内容
  • 租赁收入属于什么行业
  • 财务费用在贷方,怎么结转到本年利润?
  • 小规模纳税人核定销售额
  • 招待费可以做成什么科目
  • 公司购药品入什么科目
  • 会计账簿有哪些格式
  • 应付职工薪酬的会计科目
  • 未取得合法支付凭据和与本单位无关的收入
  • 设置mysql数据库字符集的语句
  • win8.1安装失败
  • mysql数据备份的方式
  • win7系统如何提升性能
  • 如何查看windows2008修改密码日志
  • bios设置u盘启动顺序
  • 为大家详细介绍英语
  • Linux Mint 5 XFCE Community Edition RC1 (BETA 025) 本月17日开始发布
  • windows xp
  • 微软补丁发布时间
  • win10系统如何解除屏保
  • win10查看驱动
  • javascript ?
  • react区别
  • eclipse从本地导入项目
  • js中的date函数
  • shell脚本实现文件管理
  • Python selenium 父子、兄弟、相邻节点定位方式详解
  • 国家税务总局手工发票查询平台
  • 地税局社保宣传标语
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设