Skip to content

ExpressJS - Hello World

搭建好开发环境后,是时候构建您的第一个 Express 应用程序了。这个经典的“Hello World”示例将展示使用 Express 创建 Web 服务器的基本概念。

在您的项目目录(hello-world)中,创建一个名为 index.js 的新文件。这将是您应用程序的入口点。

// 1. 导入 Express 库
import express from 'express';
// 2. 创建一个 Express 应用程序实例
const app = express();
// 3. 定义端口号。使用环境变量,否则默认为 3000
const PORT = process.env.PORT || 3000;
// 4. 定义根 URL ('/') 的路由
// 处理对主页的 GET 请求
app.get('/', (req, res) => {
// 5. 向客户端发送响应
res.send('Hello, Modern World!');
});
// 6. 启动服务器并监听传入连接
app.listen(PORT, () => {
console.log(`Server is running and listening on http://localhost:${PORT}`);
});

代码解析与现代实践:

  • import express from 'express':我们使用现代的 ES Module 语法来导入包。要启用此功能,请在您的 package.json 文件中添加 "type": "module"。
  • const app = express():我们使用 const 是因为 app 变量不会被重新赋值。
  • const PORT = process.env.PORT || 3000:这是一个重要的最佳实践。它允许端口由部署环境(如 Heroku 或 Docker)设置,在本地开发时回退到 3000。这避免了硬编码配置值。
  • app.get('/', (req, res) => { ... }):我们使用箭头函数作为回调函数,这是一种简洁的现代语法。

保存文件,然后使用我们之前设置的 dev 脚本从终端运行您的服务器:

npm run dev

您应该会看到消息 Server is running and listening on http://localhost:3000。现在,打开您的 Web 浏览器并导航到 http://localhost:3000。您将看到文本“Hello, Modern World!”。

由于您正在使用 nodemon,现在可以更改 index.js 中的响应消息,例如,改为 res.send('Welcome to Express.js!')。当您保存文件时,nodemon 将自动重启服务器。只需刷新浏览器即可看到更新后的消息。

让我们剖析这个简单应用程序中的核心 Express 概念。

路由决定了应用程序如何响应客户端对特定端点的请求,该端点由 URI(或路径)和特定的 HTTP 请求方法(GET、POST 等)组成。

我们的代码 app.get('/', ...) 告诉 Express:“当收到对根路径 (/) 的 GET 请求时,执行此回调函数。”

回调函数始终接收两个主要参数:

  • req (请求对象):一个包含传入 HTTP 请求信息的对象,例如请求头、查询参数和请求体。
  • res (响应对象):一个用于向客户端发送响应的对象。

res.send() 函数用于发送 HTTP 响应。Express 在这方面很智能;它可以发送字符串、JSON 对象、数组或 Buffer。它还会自动为您设置 Content-Type 头部(例如,字符串为 text/html,对象为 application/json)。

启动服务器:app.listen(port, callback)

Section titled “启动服务器:app.listen(port, callback)”

此函数将应用程序绑定到机器上的一个端口,并启动服务器以监听连接。一旦服务器准备就绪,可选的回调函数就会执行——在我们的示例中,它会向控制台输出一条确认消息。

  • 分离路由:对于大型应用程序,您应该将路由移动到单独的文件中,以保持 index.js 清晰。为此,您可以使用 express.Router。
  • 中间件:探索中间件函数,它们是能够访问 req 和 res 对象并可以执行代码、进行更改或结束请求-响应周期的函数。它们是任何 Express 应用程序的支柱。
  • 错误处理:实现一个集中的错误处理程序,以优雅地捕获和处理应用程序中发生的任何错误。