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 函数为模型的方式与文件系统进行交互。


持续更新中...

相关推荐
葡萄城技术团队5 分钟前
AI 不会淘汰电子表格,反而会让电子表格成为 AI 操作系统
前端·人工智能
BigTopOne5 分钟前
Short Put and Short Call
前端
Cache技术分享17 分钟前
465. Java 反射 - 获取类的简单名
前端·后端
BigTopOne25 分钟前
什么是行权价,什么是权利金,什么是行权?
前端
xlxxy_27 分钟前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
BigTopOne28 分钟前
Long put and Long call
前端
石像鬼₧魂石37 分钟前
【Y2Ksoft】贵阳陈桥饭店ERP管理系统
大数据·前端·物联网·html·数据库架构
TheITSea43 分钟前
4、React+Tailwind CSS
前端·css·react.js
weedsfly1 小时前
前端开发中的代理模式——从 Vue 3 响应式到日常开发
前端·javascript·面试
এ慕ོ冬℘゜1 小时前
深入理解 JavaScript 事件对象:从 target 到 preventDefault 的实战指南
开发语言·前端·javascript