设置 Node 开发环境
现在您已经了解了 Express 的用途,我们将向您展示如何在 Windows、Linux (Ubuntu) 或 macOS 上设置和测试 Node/Express 开发环境。对于任何这些操作系统,本文都提供了开始开发 Express 应用程序所需的内容。
先决条件 | 了解如何打开终端/命令行。了解如何在开发计算机的操作系统上安装软件包。 |
---|---|
目标 | 在您的计算机上设置 Express 的开发环境。 |
Express 开发环境概述
Node 和 Express 使得在您的计算机上设置开发 Web 应用程序变得非常容易。本节概述了所需工具,解释了在 Ubuntu、macOS 和 Windows 上安装 Node (以及 Express) 的一些最简单方法,并展示了如何测试安装。
什么是 Express 开发环境?
Express 开发环境包括在您的本地计算机上安装 Nodejs、npm 包管理器以及(可选)Express 应用程序生成器。
Node 和 npm 包管理器是从准备好的二进制包、安装程序、操作系统包管理器或从源代码一起安装的(如以下部分所示)。然后,Express 由 npm 作为您的单个 Express Web 应用程序的依赖项安装(以及其他库,如模板引擎、数据库驱动程序、身份验证中间件、用于提供静态文件的中间件等)。
npm 也可用于(全局)安装 Express 应用程序生成器,这是一个方便的工具,用于创建遵循 MVC 模式 的骨架 Express Web 应用程序。应用程序生成器是可选的,因为您无需使用此工具来创建使用 Express 的应用程序,或者构建具有相同架构布局或依赖项的 Express 应用程序。不过,我们将使用它,因为它使入门变得更容易,并促进模块化应用程序结构。
注意:与其他一些 Web 框架不同,开发环境不包括单独的开发 Web 服务器。在 Node/Express 中,Web 应用程序创建并运行自己的 Web 服务器!
还有其他一些作为典型开发环境一部分的外围工具,包括 文本编辑器 或用于编辑代码的 IDE,以及用于安全管理代码的不同版本的源代码控制管理工具,如 Git。我们假设您已经安装了这些工具(特别是文本编辑器)。
支持哪些操作系统?
Node 可在 Windows、macOS、许多 Linux 版本、Docker 等上运行。Node.js 下载 页面上有一个完整的列表。几乎任何个人计算机都应该具有在开发过程中运行 Node 所需的性能。Express 在 Node 环境中运行,因此可以在任何运行 Node 的平台上运行。
在本文中,我们提供了 Windows、macOS 和 Ubuntu Linux 的安装说明。
您应该使用哪个版本的 Node/Express?
有很多 Node 版本——较新的版本包含错误修复、对更新版本的 ECMAScript (JavaScript) 标准的支持,以及对 Node API 的改进。
通常,您应该使用最新的 LTS(长期支持) 版本,因为它比“当前”版本更稳定,同时仍然具有相对较新的功能(并且仍在积极维护)。如果您需要 LTS 版本中没有的功能,则应使用 当前 版本。
对于 Express,您应该始终使用最新版本。
数据库和其他依赖项呢?
其他依赖项,如数据库驱动程序、模板引擎、身份验证引擎等,是应用程序的一部分,并使用 npm 包管理器导入到应用程序环境中。我们将在以后的特定于应用程序的文章中讨论它们。
安装 Node
为了使用 Express,您必须在操作系统上安装 Nodejs 和 Node 包管理器 (npm)。为了简化此操作,我们将首先安装一个 Node 版本管理器,然后我们将使用它来安装最新版本的 node 和 npm。
注意:您也可以使用 https://node.org.cn/en/ 上提供的安装程序安装 nodejs 和 npm(选择按钮下载“推荐给大多数用户”的 LTS 版本),或者您可以 使用操作系统的包管理器安装 (nodejs.org)。我们强烈建议使用 Node 版本管理器,因为它们可以更轻松地安装、升级和在任何特定版本的 node 和 npm 之间切换。
Windows
Windows 上有很多 Node 版本管理器。这里我们使用 nvm-windows,它在 Node 开发人员中享有很高的声誉。
从 nvm-windows/releases 页面使用您选择的安装程序安装最新版本。安装 nvm-windows
后,打开命令提示符(或 PowerShell)并输入以下命令以下载最新版本的 nodejs 和 npm
nvm install lts
在撰写本文时,nodejs 的 LTS 版本为 20.11.0。您可以使用以下命令将其设置为 当前版本
nvm use 20.11.0
注意:如果您收到“拒绝访问”警告,则需要在具有管理员权限的提示符中运行此命令。
使用命令 nvm --help
查找其他命令行选项,例如列出所有可用的 node 版本和所有下载的 NVM 版本。
Ubuntu 和 macOS
Ubuntu 和 macOS 上有很多 Node 版本管理器。 nvm 是最受欢迎的版本之一,也是 nvm-windows
所基于的原始版本。请参阅 nvm > 安装和更新脚本,以获取安装最新版本的 nvm 的终端说明。
安装 nvm
后,打开一个终端,输入以下命令以下载最新版本的 nodejs 和 npm
nvm install --lts
在撰写本文时,nodejs 的 LTS 版本为 20.11.0。命令 nvm list
显示下载的版本集和当前版本。您可以使用以下命令(与 nvm-windows
相同)将特定版本设置为 当前版本
nvm use 20.11.0
使用命令 nvm --help
查找其他命令行选项。这些选项通常与 nvm-windows
提供的选项类似或相同。
测试 Nodejs 和 npm 安装
将 nvm
设置为使用特定 node 版本后,您可以测试安装。一个好的方法是在终端/命令提示符中使用“version”命令,并检查是否返回了预期的版本字符串
> node -v
v20.11.0
Nodejs 包管理器 npm 也应该已经安装,并且可以以相同的方式进行测试
> npm -v
10.2.4
作为更有趣的测试,让我们创建一个非常基本的“纯 node”服务器,当您在浏览器中访问正确的 URL 时,它会在浏览器中打印出“Hello World”
- 将以下文本复制到名为 hellonode.js 的文件中。这使用了纯 Node 功能(不来自 Express)该代码导入“http”模块,并使用它创建一个服务器 (js
//Load HTTP module const http = require("http"); const hostname = "127.0.0.1"; const port = 3000; //Create HTTP server and listen on port 3000 for requests const server = http.createServer((req, res) => { //Set the response HTTP header with HTTP status and Content type res.statusCode = 200; res.setHeader("Content-Type", "text/plain"); res.end("Hello World\n"); }); //listen for request on port 3000, and as a callback function have the port listened on logged server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
createServer()
),该服务器侦听端口 3000 上的 HTTP 请求。然后,该脚本在控制台中打印一条消息,说明您可以使用哪个浏览器 URL 测试服务器。createServer()
函数接受一个回调函数作为参数,该函数将在接收到 HTTP 请求时调用——它返回一个具有 HTTP 状态代码 200 (“OK”) 和纯文本“Hello World”的响应。注意:如果您还不完全理解这段代码的作用,请不要担心!一旦我们开始使用 Express,我们将更详细地解释我们的代码!
- 通过导航到命令提示符中与
hellonode.js
文件相同的目录,并调用node
以及脚本名称来启动服务器,如下所示服务器启动后,您将看到控制台输出,指示服务器正在运行的 IP 地址bashnode hellonode.js
Server running at http://127.0.0.1:3000/
- 导航到 URL
http://127.0.0.1:3000
。如果一切正常,浏览器应该显示字符串“Hello World”。
使用 npm
除了 Node 本身之外,npm 是用于处理 Node 应用程序的最重要工具。npm
用于获取应用程序开发、测试和/或生产所需的所有包(JavaScript 库),并且还可用于运行开发过程中使用的测试和工具。
注意:从 Node 的角度来看,Express 只是另一个需要使用 npm 安装并在您自己的代码中引用的包。
您可以手动使用 npm 分别获取每个需要的包。通常,我们使用名为 package.json 的纯文本定义文件来管理依赖项。此文件列出了特定 JavaScript “包”的所有依赖项,包括包的名称、版本、描述、要执行的初始文件、生产依赖项、开发依赖项、它可以使用的 Node 版本等。package.json 文件应包含 npm 获取和运行应用程序所需的一切(如果您要编写可重用的库,则可以使用此定义将您的包上传到 npm 存储库,并使其可供其他用户使用)。
添加依赖项
以下步骤展示了如何使用 npm 下载包、将其保存到项目依赖项中,然后在 Node 应用程序中引入它。
注意:这里我们展示了获取和安装 Express 包的说明。稍后,我们将展示如何使用 Express 应用程序生成器 为我们预先指定此包和其他包。提供本节是因为了解 npm 的工作原理以及应用程序生成器创建的内容非常有用。
- 首先,为您的新应用程序创建一个目录并导航到该目录bash
mkdir myapp cd myapp
- 使用 npm
init
命令为您的应用程序创建一个 package.json 文件。此命令会提示您输入一些信息,包括应用程序的名称和版本以及初始入口点的名称(默认情况下为 index.js)。现在,只需接受默认值即可如果您显示 package.json 文件 (bashnpm init
cat package.json
),您将看到您接受的默认值,最后是许可证。json{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
- 现在,在
myapp
目录中安装 Express,并将其保存到您的 package.json 文件的依赖项列表中您的 package.json 文件的依赖项部分现在将出现在 package.json 文件的末尾,并将包括 Express。bashnpm install express
json{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1" } }
- 要使用 Express 库,您需要在您的 **index.js** 文件中调用
require()
函数,以便将其包含在您的应用程序中。现在创建此文件,放在 "myapp" 应用程序目录的根目录下,并将其内容设置为以下内容这段代码展示了一个最小的 "HelloWorld" Express Web 应用程序。它使用jsconst express = require("express"); const app = express(); const port = 3000; app.get("/", (req, res) => { res.send("Hello World!"); }); app.listen(port, () => { console.log(`Example app listening on port ${port}!`); });
require()
导入 "express" 模块,并用它创建一个服务器 (app
),该服务器监听 3000 端口的 HTTP 请求,并在控制台中打印一条消息,说明您可以使用哪个浏览器 URL 来测试服务器。app.get()
函数只响应指定 URL 路径 ('/') 的 HTTPGET
请求,在本例中,它通过调用一个函数来发送我们的 *Hello World!* 消息。注意: `Example app listening on port ${port}!` 中的反引号允许我们将
$port
的值插值到字符串中。 - 您可以通过在命令提示符中使用 node 调用脚本启动服务器您将看到以下控制台输出bash
node index.js
Example app listening on port 3000
- 导航到 URL
https://127.0.0.1:3000/
。如果一切正常,浏览器应该显示字符串 "Hello World!"。
开发依赖项
运行任务
除了定义和获取依赖项外,您还可以在 **package.json** 文件中定义命名脚本,并使用 run-script 命令调用 npm 来执行它们。这种方法通常用于自动化运行测试以及开发或构建工具链的一部分(例如,运行工具来压缩 JavaScript、缩小图像、代码质量检查/分析您的代码等)。
例如,要定义一个脚本以运行我们在上一节中指定的eslint 开发依赖项,我们可以在我们的 **package.json** 文件中添加以下脚本块(假设我们的应用程序源代码位于 /src/js 文件夹中)
"scripts": {
// …
"lint": "eslint src/js"
// …
}
简单解释一下,eslint src/js
是一个命令,我们可以将其输入到我们的终端/命令行中,以对我们应用程序目录中 src/js
目录中包含的 JavaScript 文件运行 eslint
。将上述内容包含在我们的应用程序的 package.json 文件中,为该命令提供了一个快捷方式 - lint
。
然后,我们可以通过调用 npm 运行eslint
npm run-script lint
# OR (using the alias)
npm run lint
此示例可能看起来并不比原始命令短,但您可以在 npm 脚本中包含更长的命令,包括多个命令的链。您可以识别一个运行所有测试的单个 npm 脚本。
安装 Express 应用程序生成器
Express 应用程序生成器 工具生成一个 Express 应用程序 "框架"。使用 npm 像下面这样安装生成器
npm install express-generator -g
注意: 在 Ubuntu 或 macOS 上,您可能需要在该行之前添加 sudo
。-g
标志在全局范围内安装该工具,以便您可以在任何地方调用它。
要使用默认设置创建一个名为 "helloworld" 的Express 应用程序,请导航到您要创建它的位置,并像下面这样运行该应用程序
express helloworld
注意: 除非您使用的是旧版本的 nodejs(< 8.2.0),否则您可以选择跳过安装,并使用 npx 运行 express-generator。这与安装然后运行 express-generator
具有相同的效果,但不会在您的系统上安装该包
npx express-generator helloworld
您还可以指定要使用的模板库以及其他一些设置。使用 help
命令查看所有选项
express --help
生成器将在您当前位置的子文件夹中创建新的 Express 应用程序,并在控制台中显示构建进度。完成后,该工具将显示您需要输入的命令来安装 Node 依赖项并启动应用程序。
新应用程序在其根目录中将有一个 **package.json** 文件。您可以打开它来查看安装了哪些依赖项,包括 Express 和模板库 Jade
{
"name": "helloworld",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"morgan": "~1.9.1"
}
}
使用 npm 像下面这样安装 helloworld 应用程序的所有依赖项
cd helloworld
npm install
然后运行该应用程序(Windows 和 Linux/macOS 的命令略有不同),如下所示
# Run helloworld on Windows with Command Prompt
SET DEBUG=helloworld:* & npm start
# Run helloworld on Windows with PowerShell
SET DEBUG=helloworld:* | npm start
# Run helloworld on Linux/macOS
DEBUG=helloworld:* npm start
DEBUG 命令创建有用的日志,产生以下输出
>SET DEBUG=helloworld:* & npm start
> [email protected] start D:\GitHub\expresstests\helloworld
> node ./bin/www
helloworld:server Listening on port 3000 +0ms
打开浏览器并导航到 https://127.0.0.1:3000/
以查看默认的 Express 欢迎页面。
当我们开始介绍生成框架应用程序的文章时,我们将详细讨论生成的应用程序。
总结
现在,您已经在计算机上运行了一个 Node 开发环境,可以用来创建 Express Web 应用程序。您还了解了如何使用 npm 将 Express 导入应用程序,以及如何使用 Express 应用程序生成器工具创建应用程序,然后运行它们。
在下一篇文章中,我们将开始学习一个教程,使用此环境和相关工具来构建一个完整的 Web 应用程序。
另请参阅
- 下载 页面 (nodejs.org)
- 安装 Express (expressjs.com)
- Express 应用程序生成器 (expressjs.com)
- 使用 Node.js 与 Windows 子系统 Linux (docs.microsoft.com)