影子的知识库

影子的知识库

  • 知识库
  • GitHub

›Node 基础

JVM系列

  • JVM内存区域
  • 对象创建-布局-访问
  • 内存溢出实战
  • 内存区域回收
  • 四大引用
  • 垃圾回收算法
  • HotSpot回收算法细节

Java系列

  • java注解
  • springboot请求参数绑定
  • springboot请求参数校验框架
  • YAML语法
  • 动态代理
  • classpath和java命令
  • springboot-aop编程
  • springboot统一异常处理
  • springboot数据库和事务
  • springboot拦截器
  • springboot中的web配置
  • docker的简单开发
  • springboot自动配置
  • 数据库的隔离级别
  • springboot监控
  • java类加载
  • java-agent的相关内容
  • 类加载器详解
  • java的SecurityManager
  • maven学习

Node

    JS 基础

    • 语法基础和数据类型
    • 数据类型转换
    • 语句 表达式 运算符
    • 变量与对象
    • 函数
    • 数据处理
    • 常用 API
    • 重点知识

    ES6

    • 块级作用域
    • 字符串和正则表达式
    • 函数
    • 对象
    • Symbol
    • Set和Map
    • 迭代器和生成器
    • 类
    • 数组
    • Promise

    Node 基础

    • 模块系统
    • package.json
    • 内置对象
    • npm脚本的使用
    • Buffer
    • Stream
    • 事件循环机制
    • 示例代码

    stream系列

    • 流的缓冲
    • 可读流
    • 可写流
    • 双工流和转换流
    • 自定义流

后期计划

  • 学习计划
  • 专题研究计划
Edit

本文内容

本文记录对 node 的内置对象,包含一些 node 环境的基本内容。

global 对象

global 对象就是 node 的全局对象,类似于浏览器环境下的 window,这个对象就是 JS 标准里的全局对象,或者可以称为根对象吧,例如:

console.log(global);
// 输出
(py3.5) czp@:~/workspace/knowledge-base/demos/node_start$ node hello.js
<ref *1> Object [global] {
  global: [Circular *1],
  clearInterval: [Function: clearInterval],
  clearTimeout: [Function: clearTimeout],
  setInterval: [Function: setInterval],
  setTimeout: [Function: setTimeout] {
    [Symbol(util.promisify.custom)]: [Function (anonymous)]
  },
  queueMicrotask: [Function: queueMicrotask],
  clearImmediate: [Function: clearImmediate],
  setImmediate: [Function: setImmediate] {
    [Symbol(util.promisify.custom)]: [Function (anonymous)]
  }
}

我们写的代码都是在模块封装器中(详见模块系统那一篇),所以我们定义的 var s = 2 之类的变量,实际处于闭包中,不会挂到全局变量下面。但是如果是使用 s = 2 这种定义,那么就会挂到 global 对象下,这个是 JS 本身的一个特性了。

process 对象

它处在 global 下,所以我们可以在模块中直接使用这个对象。它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()。 它也可以使用 require() 显式地访问

api作用
version返回 node.js 的版本信息
versions返回一个对象,对象列出了 node.js 和它的依赖的一些版本信息,例如:versions: {
node: '13.1.0',
v8: '7.8.279.17-node.19',
uv: '1.33.1',
zlib: '1.2.11',
brotli: '1.0.7',
ares: '1.15.0',
modules: '79',
nghttp2: '1.39.2',
napi: '5',
llhttp: '1.1.4',
openssl: '1.1.1d',
cldr: '35.1',
icu: '64.2',
tz: '2019a',
unicode: '12.1'
}
arch编译 Node.js 二进制文件的操作系统的 CPU 架构。 可能的值有:'arm'、 'arm64'、 'ia32'、 'mips'、 'mipsel'、 'ppc'、 'ppc64'、 's390'、 's390x'、 'x32' 和 'x64'。
platform标识 Node.js 进程运行的操作系统平台
abort()会使 Node.js 进程立即结束,并生成一个核心文件,退出码不为0
umask([mask])不传参数,就是返回文件掩码,传递参数就是设置掩码,并返回之前的掩码,默认是 0022,第一个 0 先不管(印象里好像是用户标识啥的) ,后续 第二个 0,标识当前用户使用默认权限,第一个 2 表示当前组去掉写权限,第二个 2 表示其他用户去掉写权限,文件默认权限是 -rw-rw-rw-,目录是 drwxrwxrwx。参考:umask
chdir(directory)变更进程的当前工作目录,如果变更失败会抛出异常
cwd()返回进程当前工作目录
uptime()返回当前进程运行时间秒长,该返回值包含小数部分。
hrtime([time])返回当前时间以 [seconds, nanoseconds] 元数组表示的高精度解析值,其中 nanoseconds 是当前时间无法使用秒的精度表示的剩余部分。这个方法返回的是一个时间戳,默认的应该是与系统开启时间对比的时间戳。当我们传入参数时,返回的是与参数时间戳对比过去的时间。(也就是说这个方法不传参数有点类似于 java 的获取毫秒数,只不过这个时间的精度更高,因此更损耗性能)
kill(pid[,signal])将 signal 发送给 pid 标识的进程。信号 0 可以用于测试进程是否存在。
exit([code])以退出状态 code 指示 Node.js 同步地终止进程。 如果省略 code,则使用成功代码 0 或 process.exitCode 的值(如果已设置)退出。 在调用所有的 'exit' 事件监听器之前,Node.js 不会终止。(也就是说这种退出是会执行退出的回调的)
getuid()返回 Node.js 进程的数字标记的用户身份(就是说谁运行了这个进程,这个用户的uid,id someUser)
geteuid()返回的是 有效 uid,例如 linux 中 /usr/bin/passwd 的权限是 rwsr-xr-x,注意第三个是 s,代表了 setuid 位,那么哪个用户执行这个程序,这个进程的 euid 就会变成这个文件的所有者,也就是 root
env返回环境变量数组
stdin标准输入流,可读流
stdout标准输出流,可写流
stderr标准错误流,可写流
title进程的名称,我们可以修改这个值,来改变进程名称
argv命令行参数数组,第一个参数是 execPath,也就是 node 的绝对路径,第二个参数是我们执行的文件,其余元素是其它命令行参数,也就是说,要想获取真正的参数,要从 argv[2] 开始读取
execPath返回 node 可执行文件的绝对路径(也就是 node 这个程序本身的安装路径)
execArgv返回 node 的命令行选项,例如 node --harmony script.js --version 返回的是 --harmony ,至于 --verion 则是 argv[2]
pid进程 ID
ppid父进程 ID
debugPortnode 调试器使用的端口
argv0当 Node.js 启动时传入的 argv[0] 的原始值的只读副本。一般是 node
mainModule提供了一种获取 require.main 的替代方式。 区别在于,若主模块在运行时中发生改变,require.main可能仍然指向变化之前所依赖的模块。 一般来说,假定两者指向相同的模块是安全的。

进程事件

todo

Last updated on 11/8/2020
← package.jsonnpm脚本的使用 →
  • global 对象
  • process 对象
    • 进程事件
影子的知识库
Docs
Getting Started (or other categories)Guides (or other categories)API Reference (or other categories)
Community
User ShowcaseStack OverflowProject ChatTwitter
More
BlogGitHub
Copyright © 2020 Cen ZhiPeng