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 项目,什么是 npm
?npm
全称为 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
其实是个约定俗成的作法,可以改成其他的或者干脆就使用它。