Express.js 入门指南:从零构建Hello World应用
expressjs.com 项目地址: https://gitcode.com/gh_mirrors/ex/expressjs.com
什么是Express.js?
Express.js是一个基于Node.js平台的极简Web应用框架,它提供了一系列强大的特性来帮助开发者快速构建Web应用程序和API。作为Node.js生态中最流行的框架之一,Express以其简洁、灵活的特性赢得了广大开发者的青睐。
为什么选择Hello World作为起点?
Hello World是编程世界的传统入门示例,它能让我们专注于框架的核心功能,而不被复杂配置所干扰。通过这个最简单的Express应用,我们可以快速理解框架的基本工作原理。
构建你的第一个Express应用
1. 初始化项目
首先,创建一个新目录并初始化Node.js项目:
mkdir myapp
cd myapp
npm init -y
2. 安装Express
在项目目录中安装Express作为依赖:
npm install express
3. 创建应用文件
新建一个名为app.js
的文件,并添加以下代码:
// 引入Express模块
const express = require('express')
// 创建Express应用实例
const app = express()
// 定义服务器监听的端口号
const port = 3000
// 定义根路由的处理程序
app.get('/', (req, res) => {
res.send('Hello World!')
})
// 启动服务器
app.listen(port, () => {
console.log(`服务器已启动,正在监听端口 ${port}`)
})
4. 代码解析
让我们逐行分析这个简单的Express应用:
- 引入Express模块:通过
require('express')
加载Express框架 - 创建应用实例:
express()
函数返回一个Express应用对象 - 定义端口:指定服务器将在3000端口上运行
- 路由处理:
app.get()
方法定义了一个GET请求的路由处理器- 第一个参数'/'表示根路径
- 第二个参数是处理函数,接收请求(req)和响应(res)对象
- 启动服务器:
app.listen()
启动服务器并开始监听指定端口
5. 运行应用
在终端执行以下命令启动服务器:
node app.js
如果一切正常,你将看到控制台输出:
服务器已启动,正在监听端口 3000
现在,打开浏览器访问http://localhost:3000/
,你将看到页面显示"Hello World!"。
核心概念解析
路由基础
Express的核心功能之一是路由系统。在上面的例子中,我们定义了一个简单的路由:
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.get()
:处理HTTP GET请求的方法'/'
:路由路径,这里是网站的根路径(req, res) => {...}
:路由处理函数,接收请求和响应对象
请求和响应对象
Express封装了Node.js原生的请求(req)和响应(res)对象,提供了更多便捷的方法:
req
:包含HTTP请求的所有信息(参数、头信息等)res
:用于构建和发送HTTP响应
虽然Express提供了便捷的封装,但你仍然可以直接使用Node.js原生的方法,如req.pipe()
或req.on('data', callback)
。
端口与监听
app.listen()
方法启动服务器并开始监听指定端口。端口3000是开发中常用的端口,但你可以根据需要选择其他可用端口(如8080等)。
常见问题解答
Q:为什么访问其他路径会返回404?
A:因为我们只定义了根路径'/'的处理程序,其他路径没有对应的路由处理器,Express会自动返回404响应。
Q:如何修改响应内容?
A:在路由处理函数中,修改res.send()
中的字符串即可改变响应内容。
Q:如何停止服务器?
A:在终端中按Ctrl+C即可停止Node.js进程。
下一步学习建议
这个Hello World示例展示了Express最基本的功能。接下来你可以探索:
- 添加更多路由处理不同的路径
- 学习使用中间件增强应用功能
- 了解如何处理不同类型的HTTP请求(POST、PUT等)
- 学习模板引擎渲染动态页面
通过这个简单的示例,你已经迈出了Express.js开发的第一步。随着学习的深入,你将能够构建更复杂、功能更丰富的Web应用。
expressjs.com 项目地址: https://gitcode.com/gh_mirrors/ex/expressjs.com
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考