手动搭建 SSR 工程 (一):基础 Express 服务器
1. 目标
搭建一个基础的 Express 服务器。作为 SSR 项目的基石,该服务器需要能响应浏览器请求并返回一个 HTML 页面。
2. 初始化项目和安装 Express
2.1. 创建项目结构
在项目根目录下创建一个 src 文件夹,用于存放所有源代码。
bash
# 项目结构
.
├── package.json
└── src2.2. 安装 Express
使用 npm 安装 express。
bash
npm i express3. 创建基础服务器 (src/server.js)
在 src 目录下新建 server.js 文件。
3.1. 编写服务器代码
javascript
// 1. 导入 express
const express = require('express');
// 2. 创建 express 应用实例
const app = express();
// 4. 定义要响应的 HTML 内容
const html = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SSR</title>
</head>
<body>
<div id="root">
<h1>Hello SSR</h1>
</div>
</body>
</html>
`;
// 5. 监听所有 GET 请求,并返回 HTML 页面
// 使用 '*' 通配符,确保所有路由请求都返回同一个页面,这是单页应用(SPA)的基础
app.get('*', (req, res) => {
res.send(html);
});
// 3. 监听端口,并启动服务器
app.listen(8080, () => {
console.log('Server start on http://localhost:8080');
});4. 启动与测试服务器
4.1. 启动服务器
在终端中运行以下命令:
bash
node src/server.js服务器启动成功后,终端会显示:Server start on http://localhost:8080。
4.2. 测试
打开浏览器,访问 http://localhost:8080,页面会显示 "Hello SSR"。查看网页源代码,可以看到服务器返回的完整 HTML 结构。
5. 优化开发体验
5.1. 添加 npm 脚本
为了方便启动服务器,在 package.json 文件中添加 scripts 命令。
json
// package.json
{
// ... 其他配置
"scripts": {
"dev:start": "node src/server.js"
},
// ... 其他配置
}现在,可以使用以下命令启动服务器:
bash
npm run dev:start5.2. 使用 nodemon 实现服务器自动重启
问题: 修改 server.js 代码后,需要手动停止并重启服务器才能生效。
解决方案: 使用 nodemon 工具来监控文件变化,并自动重启服务器。
安装
nodemon将其安装为开发依赖 (
--save-dev或-D),因为它只在开发阶段需要。bashnpm i nodemon -D更新
package.json中的脚本修改
dev:start脚本,使用nodemon来启动和监控服务。nodemon: 启动nodemon。--watch src: 指定nodemon监控src目录下的所有文件变化。--exec "node src/server.js": 当文件发生变化时,执行node src/server.js命令来重启服务器。
json// package.json { // ... 其他配置 "scripts": { "dev:start": "nodemon --watch src --exec \"node src/server.js\"" }, // ... 其他配置 }重新启动服务器
运行更新后的脚本:
bashnpm run dev:start现在,每当你修改并保存
src目录下的任何文件,nodemon都会自动重新启动服务器,让你的代码更改立即生效。