# node基础

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,允许你在服务器端运行 JavaScript。它提供了一组丰富的内置库和模块,使得开发网络应用程序变得更加容易。

  • 1、安装 Node.js:Node.js 的官方网站(https://nodejs.org)下载并安装适合你操作系统的 Node.js 版本。
  • 2、npm:Node.js 自带了一个包管理器叫做 npm(Node Package Manager)。它允许你安装、管理和共享 JavaScript 模块。
  • 3、创建 Node.js 应用:你可以在命令行中使用 node 命令执行 JavaScript 文件。例如,node app.js 会执行名为 app.js 的 JavaScript 文件。
  • 4、模块系统:Node.js 使用模块来组织和重用代码。你可以使用 require 函数来引入其他模块,并使用 module.exports 导出模块中的变量、函数或对象。
  • 5、异步编程:Node.js 使用异步非阻塞 I/O 模型,这意味着它可以同时处理多个请求而不会阻塞应用程序的执行。你可以使用回调函数、Promise 或 async/await 等机制来处理异步操作。
  • 6、内置模块:Node.js 提供了一些内置的核心模块,例如 fs(文件系统)、http(HTTP 服务器与客户端)、path(路径操作)等,这些模块提供了丰富的功能来简化开发过程。
  • 7、第三方模块:Node.js 社区有大量的第三方模块可供使用。你可以使用 npm 来安装这些模块,并在你的应用程序中引入和使用它们。
  • 8、事件驱动编程:Node.js 基于事件驱动的架构,通过发布和订阅事件来处理异步操作。你可以使用内置的 events 模块来创建和处理事件。

# global

Node.js 中,有一些全局对象和变量可供你在任何地方使用,这些被称为 Node.js 的全局对象。

以下是一些常见的 Node.js 全局对象和变量:

  • 1、global 对象:在 Node.js 中,global 是一个全局对象,它类似于浏览器中的 window 对象。你可以在任何地方访问 global 对象,并且它包含了一些常用的全局函数和变量。
  • 2、process 对象:process 是一个全局对象,它提供了与当前 Node.js 进程相关的信息和控制。你可以使用 process 对象来访问命令行参数、环境变量、标准输入/输出流等。
  • 3、console 对象:console 是一个全局对象,用于在控制台输出信息。你可以使用 console.log()、console.error() 等方法来打印日志、错误信息等。
  • 4、require() 函数:require() 是一个全局函数,用于引入其他模块。通过 require() 函数,你可以加载其他 JavaScript 文件、第三方模块等。
  • 5、__dirname__filename 变量:__dirname 表示当前模块所在的目录的路径,__filename 表示当前模块的文件路径。
  • 6、setTimeout()setInterval() 函数:这两个函数用于在一定时间后执行函数或定期执行函数。

# process.argv

console.log(process.argv);  // 默认前两个参数没有实际意义。
process.argv.slice(2) // 搜集用户传递的参数。

// 示例: node .\index..js  --port 3000  --version 0.1
console.log(process.argv.slice(2))  => [ '--port', '3000', '--version', '0.1' ]

// 转成对象 => {port:3000,version:0.1}
process.argv.slice(2).reduce((t, v, i, arr) => {
    if (v.startsWith("--")) {
        t[v.slice(2)] = arr[i + 1];
    }
    return t;
}, {})

# process.env

process.env 属性返回包含用户环境的对象。

# process.cwd()

process.cwd() 方法返回 Node.js 进程的当前工作目录。

console.log(`Current directory: ${process.cwd()}`);
// c:\Users\jc\Desktop\test
Last Updated: 7/2/2023, 3:15:02 PM