为什么用Node.js和Express?

Node.js是一个基于Chrome V8引擎的JavaScript运行环境,让我们可以在服务器端用JavaScript编写代码。而Express是Node.js最流行的Web框架,它就像一个“脚手架”,能帮我们快速搭建Web服务器,处理路由、请求和响应等复杂工作,比直接用Node.js原生API要简单得多。

环境准备:安装Node.js和npm

在开始前,我们需要先安装Node.js(包含npm包管理器)。

  1. 下载安装Node.js
    访问 Node.js官网,选择LTS版本(稳定版)下载安装。安装完成后,打开终端(Windows用户用命令提示符或PowerShell),输入以下命令检查是否安装成功:
   node -v  # 查看Node.js版本
   npm -v   # 查看npm版本

如果显示版本号,说明安装成功。

第一步:创建项目并安装Express

  1. 新建项目文件夹
    在你喜欢的位置(比如桌面)新建一个文件夹,命名为 my-first-express-server,进入该文件夹:
   mkdir my-first-express-server
   cd my-first-express-server
  1. 初始化项目
    运行 npm init -y,快速生成一个默认的 package.json 文件(项目配置文件):
   npm init -y
  1. 安装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.postapp.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/abouthttp://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

  1. 在项目根目录新建一个 public 文件夹,放入静态文件(如 index.html):
   my-first-express-server/
   ├─ public/
   │  └─ index.html
   └─ server.js
  1. 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的核心是“路由+中间件”,后续可以继续学习中间件的使用(如处理错误、日志记录)、动态路由参数、表单提交等内容。现在,试着修改代码,创建一个自己的路由或页面吧!

小夜