node 常用知识点

process

process 对象提供有关当前 Node.js 进程的信息并对其进行控制。类似于浏览器环境下的window对象。

对于开发人员常用的有:

  1. 命令行参数获取:process.argv 属性可以获取在启动 Node.js 进程时传入的命令行参数。这对于根据不同的参数执行不同的逻辑非常有用。
  2. 环境变量访问:process.env 对象包含了当前进程的环境变量。你可以使用它来访问和设置环境变量,例如获取数据库的连接字符串等。
  3. 进程退出控制:process.exit() 方法可以用于退出当前 Node.js 进程。你可以在必要时使用它来终止程序的执行。
  4. 事件循环控制:process.nextTick() 方法可以将回调函数放在事件循环的下一个周期执行。这对于执行延迟或优先级较高的任务非常有用。
  5. 信号处理:process.on() 方法可以用于处理不同类型的信号,如捕获键盘中断(SIGINT)信号以执行清理操作等。
  6. 标准输入/输出流:process.stdinprocess.stdout 对象用于读取标准输入和向标准输出写入数据。
  7. 进程信息获取:process.pid 属性可以获取当前进程的 PID(进程ID),process.cwd() 方法可以获取当前进程的工作目录等。
  8. 内存使用情况:process.memoryUsage() 方法用于获取当前进程的内存使用情况,包括堆、堆外内存的使用情况等。

打印process对象

写一个node脚本tmp.js

js 复制代码
const fs = require("fs");
const util = require("util");

const formattedProcess = util.inspect(process);

fs.writeFileSync("./txt.js", formattedProcess);

通过 util.inspect() 方法将 process 对象转换为格式化后的字符串,然后将该字符串写入到 txt.js 文件中。这样可以确保将 process 对象的详细信息保存到文件中。

结果如下:

json 复制代码
process {
  version: 'v18.2.0',
  versions: {
    node: '18.2.0',
    v8: '10.1.124.8-node.13',
    uv: '1.43.0',
    zlib: '1.2.11',
    brotli: '1.0.9',
    ares: '1.18.1',
    modules: '108',
    nghttp2: '1.47.0',
    napi: '8',
    llhttp: '6.0.6',
    openssl: '3.0.3+quic',
    cldr: '41.0',
    icu: '71.1',
    tz: '2022a',
    unicode: '14.0',
    ngtcp2: '0.1.0-DEV',
    nghttp3: '0.1.0-DEV'
  },
  arch: 'x64',
  platform: 'win32',
  release: {
    name: 'node',
    sourceUrl: 'https://nodejs.org/download/release/v18.2.0/node-v18.2.0.tar.gz',
    headersUrl: 'https://nodejs.org/download/release/v18.2.0/node-v18.2.0-headers.tar.gz',
    libUrl: 'https://nodejs.org/download/release/v18.2.0/win-x64/node.lib'
  },
  _rawDebug: [Function: _rawDebug],
  moduleLoadList: [
    'Internal Binding native_module',
  ],
  binding: [Function: binding],
  _linkedBinding: [Function: _linkedBinding],
  _events: [Object: null prototype] {
    newListener: [Function: startListeningIfSignal],
    removeListener: [Function: stopListeningIfSignal],
    warning: [Function: onWarning]
  },
  _eventsCount: 3,
  _maxListeners: undefined,
  domain: null,
  _exiting: false,
  config: [Getter/Setter],
  dlopen: [Function: dlopen],
  uptime: [Function: uptime],
  _getActiveRequests: [Function: _getActiveRequests],
  _getActiveHandles: [Function: _getActiveHandles],
  getActiveResourcesInfo: [Function (anonymous)],
  reallyExit: [Function: reallyExit],
  _kill: [Function: _kill],
  cpuUsage: [Function: cpuUsage],
  resourceUsage: [Function: resourceUsage],
  memoryUsage: [Function: memoryUsage] { rss: [Function: rss] },
  kill: [Function: kill],
  exit: [Function: exit],
  hrtime: [Function: hrtime] { bigint: [Function: hrtimeBigInt] },
  openStdin: [Function (anonymous)],
  allowedNodeEnvironmentFlags: [Getter/Setter],
  assert: [Function: deprecated],
  features: {
    inspector: true,
    debug: false,
    uv: true,
    ipv6: true,
    tls_alpn: true,
    tls_sni: true,
    tls_ocsp: true,
    tls: true,
    cached_builtins: [Getter]
  },
  _fatalException: [Function (anonymous)],
  setUncaughtExceptionCaptureCallback: [Function: setUncaughtExceptionCaptureCallback],
  hasUncaughtExceptionCaptureCallback: [Function: hasUncaughtExceptionCaptureCallback],
  emitWarning: [Function: emitWarning],
  nextTick: [Function: nextTick],
  _tickCallback: [Function: runNextTicks],
  _debugProcess: [Function: _debugProcess],
  _debugEnd: [Function: _debugEnd],
  _startProfilerIdleNotifier: [Function (anonymous)],
  _stopProfilerIdleNotifier: [Function (anonymous)],
  stdout: [Getter],
  stdin: [Getter],
  stderr: [Getter],
  abort: [Function: abort],
  umask: [Function: wrappedUmask],
  chdir: [Function (anonymous)],
  cwd: [Function: wrappedCwd],
  env: {
    ALLUSERSPROFILE: 'C:\\ProgramData',
    APPDATA: 'C:\\Users\\admin\\AppData\\Roaming',
    ChocolateyInstall: 'C:\\ProgramData\\chocolatey',
    NVM_HOME: 'C:\\Program Files\\nvm',
    NVM_SYMLINK: 'C:\\Program Files\\nodejs',
    OneDrive: 'C:\\Users\\admin\\OneDrive',
    ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined',
    OS: 'Windows_NT',
    Path: 'C:\\Users\\admin\\AppData\\Local\\oh-my-posh;C:\\Program Files\\PowerShell\\7;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\PuTTY\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\dotnet\\;C:\\Program Files\\nvm;C:\\Program Files\\nodejs;C:\\Program Files (x86)\\nodejs\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\dll;C:\\Pro;C:\\neovim\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Program Files\\PowerShell\\7\\;C:\\Users\\admin\\AppData\\Local\\pnpm;C:\\Users\\admin\\scoop\\apps\\mingw\\current\\bin;C:\\Users\\admin\\scoop\\apps\\llvm\\current\\bin;C:\\Users\\admin\\scoop\\apps\\gcc\\current\\bin;C:\\Users\\admin\\scoop\\shims;C:\\Users\\admin\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\admin\\AppData\\Roaming\\npm;C:\\Users\\admin\\AppData\\Local\\Programs\\Fiddler;C:\\Users\\admin\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\admin\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\admin\\AppData\\Local\\Programs\\oh-my-posh\\bin;C:\\Program Files\\JetBrains\\WebStorm 2023.1.2\\bin;C:\\Users\\admin\\AppData\\Local\\Programs\\Microsoft VS Code Insiders\\bin',
    PATHEXT: '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL',
    PNPM_HOME: 'C:\\Users\\admin\\AppData\\Local\\pnpm',
    POSH_AZURE_ENABLED: 'False',
    POSH_CURSOR_COLUMN: '1',
    POSH_CURSOR_LINE: '23',
    POSH_GIT_ENABLED: 'False',
    POSH_INSTALLER: 'winget',
    POSH_PATH: 'C:\\Users\\admin\\AppData\\Local\\oh-my-posh',
    POSH_PID: '16652',
    POSH_SHELL_VERSION: '7.3.6',
    POSH_THEME: 'C:\\Users\\admin\\AppData\\Local\\oh-my-posh\\config.omp.json',
    POSH_THEMES_PATH: 'C:\\Users\\admin\\AppData\\Local\\oh-my-posh\\themes',
    POWERLINE_COMMAND: 'oh-my-posh',
    POWERSHELL_DISTRIBUTION_CHANNEL: 'MSI:Windows 10 Home China',
    PROCESSOR_ARCHITECTURE: 'AMD64',
    PROCESSOR_IDENTIFIER: 'Intel64 Family 6 Model 140 Stepping 2, GenuineIntel',
    PROCESSOR_LEVEL: '6',
    PROCESSOR_REVISION: '8c02',
    ProgramData: 'C:\\ProgramData',
    ProgramFiles: 'C:\\Program Files',
    'ProgramFiles(x86)': 'C:\\Program Files (x86)',
    ProgramW6432: 'C:\\Program Files',
    PSModulePath: 'C:\\Users\\admin\\Documents\\PowerShell\\Modules;C:\\Program Files\\PowerShell\\Modules;c:\\program files\\powershell\\7\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules',
    PUBLIC: 'C:\\Users\\Public',
    SystemDrive: 'C:',
    SystemRoot: 'C:\\WINDOWS',
    TEMP: 'C:\\Users\\admin\\AppData\\Local\\Temp',
    TMP: 'C:\\Users\\admin\\AppData\\Local\\Temp',
    USERDOMAIN: 'DESKTOP-7O4OV00',
    USERDOMAIN_ROAMINGPROFILE: 'DESKTOP-7O4OV00',
    USERNAME: 'admin',
    USERPROFILE: 'C:\\Users\\admin',
  },
  title: 'pwsh in temp',
  argv: [
    'C:\\Program Files\\nodejs\\node.exe',
    'C:\\Users\\admin\\Desktop\\ruochuan\\dotenv\\temp\\tmp.js'
  ],
  execArgv: [],
  pid: 2020,
  ppid: 16652,
  execPath: 'C:\\Program Files\\nodejs\\node.exe',
  debugPort: 59955,
  argv0: 'C:\\Program Files\\nodejs\\node.exe',
  exitCode: undefined,
  _preload_modules: [
    'c:/Users/admin/AppData/Roaming/Code/User/workspaceStorage/0c18065fa56b4a2f88d42a9136f5383c/ms-vscode.js-debug/bootloader.js'
  ],
  report: [Getter],
  setSourceMapsEnabled: [Function: setSourceMapsEnabled],
  mainModule: Module {
    id: '.',
    path: 'C:\\Users\\admin\\Desktop\\ruochuan\\dotenv\\temp',
    exports: {},
    filename: 'C:\\Users\\admin\\Desktop\\ruochuan\\dotenv\\temp\\tmp.js',
    loaded: false,
    children: [],
    paths: [
      'C:\\Users\\admin\\Desktop\\ruochuan\\dotenv\\temp\\node_modules',
      'C:\\Users\\admin\\Desktop\\ruochuan\\dotenv\\node_modules',
      'C:\\Users\\admin\\Desktop\\ruochuan\\node_modules',
      'C:\\Users\\admin\\Desktop\\node_modules',
      'C:\\Users\\admin\\node_modules',
      'C:\\Users\\node_modules',
      'C:\\node_modules'
    ]
  },
  [Symbol(kCapture)]: false
}

以下是对process对象的部分属性的注释:

  • version: Node.js的版本号

  • cwd: 返回当前工作目录的函数

  • env: 包含有关进程环境变量的对象

  • platform: Node.js运行的操作系统平台

  • arch: Node.js运行的体系结构

  • release: 包含与Node.js发行版相关的信息的对象,例如源代码和库的下载

  • cpuUsage: 返回有关CPU使用情况的对象

  • resourceUsage: 返回有关进程资源使用情况的对象

  • memoryUsage: 返回有关内存使用情况的对象

  • kill: 用于终止指定进程的函数

  • exit: 用于终止当前进程的函数

  • allowedNodeEnvironmentFlags: Node.js环境变量的白名单对象

  • nextTick: 在事件循环的下一个迭代中执行回调函数的函数

  • stdout: 标准输出流(Writable对象)的访问器

  • stdin: 标准输入流(Readable对象)的访问器

  • stderr: 标准错误流(Writable对象)的访问器

  • abort: 中止进程的函数

  • umask: 获取或设置进程的umask值的函数

  • chdir: 改变当前工作目录的函数

  • title: 用于设置或获取进程的标题的字符串

  • argv: 包含命令行参数的数组

  • pid: 当前进程的ID

  • ppid: 父进程的ID

  • execPath: Node.js可执行文件的绝对路径

  • debugPort: 调试器监听的端口号

  • argv0: Node.js可执行文件的名称

  • exitCode: 进程的退出代码

  • os.homedir()

  • process.version 版本

  • process.platform 获取运行系统

系统
win32 Windows
darwin macOS
linux linux
  • process.argv 命令行参数获取

可以获取在启动 Node.js 进程时传入的命令行参数。这对于根据不同的参数执行不同的逻辑非常有用。

例如:上述tmp.js文件,运行node tmp.js 1 2,process.argv可以获取运行参数

  • process.env 环境变量访问
js 复制代码
const fs = require("fs");
const util = require("util");
// 添加环境变量
process.env.AAA = 'hahaha'
const formattedProcess = util.inspect(process);

fs.writeFileSync("./txt.js", formattedProcess);

包含了当前进程的环境变量。你可以使用它来访问和设置环境变量,例如获取数据库的连接字符串等。

  • process.exit 进程退出控制 可以用于退出当前 Node.js 进程。你可以在必要时使用它来终止程序的执行。

path模块

path路径相关操作。

  • path.resolve

将路径或路径片段的序列解析为绝对路径

  • path.join

使用特定于平台的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径。

  • path.relative(from, to)

根据当前工作目录返回从 fromto 的相对路径。 如果 fromto 都解析为相同的路径(在分别调用 path.resolve() 之后),则返回零长度字符串。

  • path.sed

提供特定于平台的路径片段分隔符:

  • Windows 上是 \
  • POSIX 上是 /
  • path.normalize(path)

当找到多个连续的路径片段分隔符(例如 POSIX 上的 / 和 Windows 上的 或 `/`)时,则它们将被平台特定路径片段分隔符(POSIX 上的 `/` 和 Windows 上的)的单个实例替换。 保留尾随的分隔符。

当路径中出现多余的分隔符,或者尾部需要返回上一层,会返回上一层路径

fs模块

fs 模块能够以标准 POSIX 函数为模型的方式与文件系统进行交互。


持续更新中...

相关推荐
速盾cdn2 分钟前
速盾:vue的cdn是干嘛的?
服务器·前端·网络
四喜花露水35 分钟前
Vue 自定义icon组件封装SVG图标
前端·javascript·vue.js
前端Hardy44 分钟前
HTML&CSS: 实现可爱的冰墩墩
前端·javascript·css·html·css3
web Rookie1 小时前
JS类型检测大全:从零基础到高级应用
开发语言·前端·javascript
Au_ust1 小时前
css:基础
前端·css
帅帅哥的兜兜1 小时前
css基础:底部固定,导航栏浮动在顶部
前端·css·css3
yi碗汤园1 小时前
【一文了解】C#基础-集合
开发语言·前端·unity·c#
就是个名称1 小时前
购物车-多元素组合动画css
前端·css
编程一生2 小时前
回调数据丢了?
运维·服务器·前端
丶21362 小时前
【鉴权】深入了解 Cookie:Web 开发中的客户端存储小数据
前端·安全·web