为什么用Node.js和Express?¶
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,让我们可以在服务器端用JavaScript编写代码。而Express是Node.js最流行的Web框架,它就像一个“脚手架”,能帮我们快速搭建Web服务器,处理路由、请求和响应等复杂工作,比直接用Node.js原生API要简单得多。
环境准备:安装Node.js和npm¶
在开始前,我们需要先安装Node.js(包含npm包管理器)。
- 下载安装Node.js:
访问 Node.js官网,选择LTS版本(稳定版)下载安装。安装完成后,打开终端(Windows用户用命令提示符或PowerShell),输入以下命令检查是否安装成功:
node -v # 查看Node.js版本
npm -v # 查看npm版本
如果显示版本号,说明安装成功。
第一步:创建项目并安装Express¶
- 新建项目文件夹:
在你喜欢的位置(比如桌面)新建一个文件夹,命名为my-first-express-server,进入该文件夹:
mkdir my-first-express-server
cd my-first-express-server
- 初始化项目:
运行npm init -y,快速生成一个默认的package.json文件(项目配置文件):
npm init -y
- 安装Express框架:
执行以下命令安装Express到项目中:
npm install express
安装完成后,你会看到 node_modules 文件夹和 package.json 中多了 dependencies 字段,记录了Express的版本。
第二步:编写第一个Web服务器¶
在项目文件夹中新建一个 server.js 文件(这是服务器的入口文件),然后复制以下代码:
// 1. 引入Express模块
const express = require('express');
// 2. 创建Express应用实例
const app = express();
// 3. 定义端口号(3000是常用的开发端口,避免冲突)
const port = 3000;
// 4. 定义路由:处理根路径 '/' 的GET请求
app.get('/', (req, res) => {
// req: 请求对象,包含请求的信息(如路径、参数等)
// res: 响应对象,用于返回数据给客户端
res.send('Hello, 这是我的第一个Express服务器!');
});
// 5. 启动服务器,监听端口
app.listen(port, () => {
console.log(`服务器已启动,访问地址:http://localhost:${port}`);
});
代码解释¶
const express = require('express'):从Node.js的模块系统中引入Express框架,相当于“拿到”Express这个工具。const app = express():创建一个Express应用实例,app是我们后续操作的核心对象,用来定义路由、中间件等。app.get('/', (req, res) => { ... }):定义一个路由规则:当客户端用GET方法请求根路径'/'时,执行括号内的函数。'/'是请求的路径,app.get表示只处理GET方法(还有app.post、app.put等处理其他HTTP方法)。req是请求对象,包含客户端发送的信息(如URL参数、请求头、查询字符串等)。res是响应对象,用于向客户端返回数据(文本、HTML、JSON等)。res.send(...):向客户端发送数据,这里发送了一段文本。app.listen(port, ...):启动服务器,监听port端口(3000),当服务器启动成功后,执行回调函数,打印提示信息。
运行服务器¶
在项目文件夹的终端中执行以下命令:
node server.js
如果控制台显示 服务器已启动,访问地址:http://localhost:3000,说明服务器启动成功!
测试服务器¶
打开浏览器,访问 http://localhost:3000,你会看到页面上显示 Hello, 这是我的第一个Express服务器!。恭喜,你已经成功搭建了一个最简单的Web服务器!
扩展:添加更多路由¶
Express的核心是路由,我们可以通过不同的路径和HTTP方法处理不同的请求。比如,添加一个关于页面和一个用户页面:
// 根路径
app.get('/', (req, res) => {
res.send('<h1>首页</h1>'); // 也可以直接返回HTML
});
// 关于页面
app.get('/about', (req, res) => {
res.send('这是一个关于页面,欢迎了解更多!');
});
// 用户页面(动态路径参数)
app.get('/user/:id', (req, res) => {
// req.params.id 是动态路径参数(如访问 /user/123 时,id=123)
res.send(`用户ID:${req.params.id}`);
});
现在重启服务器,访问 http://localhost:3000/about 和 http://localhost:3000/user/456,就能看到不同的内容了!
处理JSON数据和静态文件¶
1. 返回JSON数据¶
如果需要返回JSON格式的数据(比如API接口),可以用 res.json():
app.get('/api/data', (req, res) => {
const data = {
name: 'Node.js',
framework: 'Express',
version: '4.x'
};
res.json(data); // 自动设置Content-Type为application/json
});
访问 http://localhost:3000/api/data,会看到一个JSON对象。
2. 提供静态文件(HTML/CSS/JS)¶
假设你有一个前端项目,需要在服务器上提供静态资源(如HTML、CSS、图片等),可以使用Express的内置中间件 express.static:
- 在项目根目录新建一个
public文件夹,放入静态文件(如index.html):
my-first-express-server/
├─ public/
│ └─ index.html
└─ server.js
- 在
server.js中添加代码:
const path = require('path'); // 引入Node.js的path模块,处理路径
app.use(express.static(path.join(__dirname, 'public'))); // 托管public文件夹下的静态文件
现在,访问 http://localhost:3000/index.html 就能看到 public 文件夹下的 index.html 内容了!
总结¶
通过这篇文章,你已经掌握了用Express框架快速搭建Web服务器的基本步骤:
1. 安装Node.js和Express;
2. 创建项目并初始化;
3. 定义路由处理请求;
4. 启动服务器并测试;
5. 扩展路由和功能(如返回JSON、静态文件)。
Express的核心是“路由+中间件”,后续可以继续学习中间件的使用(如处理错误、日志记录)、动态路由参数、表单提交等内容。现在,试着修改代码,创建一个自己的路由或页面吧!