Node.js 基础(一)

内容目录

查看「JavaScript 和它的朋友们专题」获取更多相关内容


进程和环境变量

Node.js 是一个运行时环境,它允许 JavaScript 访问不同于浏览器环境中的全局变量和功能,这是因为 Node.js 运行在操作系统环境中。

进程

操作系统环境提供了许多功能,其中最强大的是进程(process)。通过全局的 process 对象我们可以访问关于操作系统的多种信息。例如可以简单地通过 console.log(process) 来查看这些信息,但这可能会暴露敏感数据,因此实际使用时需要谨慎。

process 对象的一个关键属性是 argv,它允许你获取 node 命令之后传递的所有内容。例如我使用命令运行 node index.js hi javascript

// index.js
console.log(process);
[
  '/home/toor/.nvm/versions/node/v20.12.2/bin/node',
  '/home/toor/Web/index.js',
  'hi',
  'javascript'
]

这将返回一个数组。数组中的前两个元素总是环境和进程本身。数组中的第一个元素总是指向用来执行这个文件的 node 实例的路径。第二个元素总是指向这个 node 执行的文件。之后的所有内容都将按照你传递的其他事物的顺序排列。你可以将这看作是在终端程序中向程序传递参数。

在构建 CLI 时,argv 非常有用,因为它允许我们的 CLI 程序动态地接受不同的参数,并根据这些参数执行不同的操作。

环境变量

另一个重要的概念是环境变量(process.env)。环境变量在部署应用程序时非常有用,尤其是那些不应提交到代码库中的敏感信息,如 API 密钥或秘密。通过创建环境变量并将其注入到部署平台(如 AWS 或 Vercel)中,我们可以安全地使用这些敏感信息,而无需在代码中硬编码它们。

每种操作系统和编程语言都有类似环境变量的概念,因为它们都是为了实现相同的目标:安全地存储和使用敏感信息。

环境变量在部署应用程序时非常重要,因为它们允许开发者在不改变代码的情况下,根据不同的部署环境(开发、测试、生产)调整应用程序的行为。NODE_ENV 是 Node.js 中一个常用的环境变量,用于指定应用程序的运行模式。在代码中,我们可以根据 NODE_ENV 的值来改变程序的行为,例如在开发模式下开启日志记录,在生产模式下关闭日志记录或启用身份验证。

可以使用 process.env 对象访问 NODE_ENV 环境变量的值:

// index.js
console.log(process.env.NODE_ENV);

使用命令 NODE_ENV=production node index.js 将会得到 production

NODE_ENV 也用于性能优化。例如,React 根据 NODE_ENV 的值来改变其警告和错误报告的行为,并在生产模式下进行优化,而在开发模式下则忽略这些优化以加快热重载速度。

创建一个 Node.js 项目

我们可以通过 npm 来创建一个 Node.js 项目,什么是 npmnpm 全称为 Node Package Manager,是 Node.js 的默认包管理工具。使用 npm 创建项目有初始化项目结构、方便管理依赖包以及统一开发环境等好处。

使用 npm init 命令来创建项目,你需要回答如下问题:

package name: (node)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)

或者可以使用 npm init --yes 或者它的简化版 npm init -y 来快速创建一个项目,在运行该命令后会看到目录下有一个 package.json 文件,这个文件用于描述项目的元数据,如项目名称、版本、作者、许可证等。同时它也记录了项目的依赖关系。这个标准化的项目结构有利于代码的可维护性和可分享性。

使用 npm init -y 创建项目的 package.json 文件是这样的:

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

这里的 index.js 文件作为入口文件,入口文件在 Node.js 项目中通常扮演着启动整个应用程序的角色,而名为 index.js 其实是个约定俗成的作法,可以改成其他的或者干脆就使用它。

您可能也会喜欢