搭建一个基本的 Express 项目基础设施,涵盖项目初始化、依赖安装、目录结构设计、基本路由与中间件设置等步骤。
首先要创建一个新的项目目录,接着在该目录下初始化 `package.json` 文件,此文件用于管理项目的依赖和脚本。
# 创建项目目录
mkdir express-project
# 进入项目目录
cd express-project
# 初始化 package.json 文件
npm init -y
npm install express
合理的目录结构有助于提升项目的可维护性与扩展性。
express-project/
├── app.js # 项目入口文件
├── routes/ # 路由文件目录
│ └── index.js # 路由模块
├── public/ # 静态文件目录
│ ├── css/
│ ├── js/
│ └── images/
├── views/ # 视图文件目录(若使用模板引擎)
│ └── index.ejs
├── middleware/ # 中间件文件目录
│ └── logger.js
└── package.json # 项目依赖和脚本配置文件
在项目根目录下创建 `app.js` 文件,这是项目的入口文件,用于启动 Express 服务器并配置应用。
const express = require("express");
const app = express();
const port = 3000;
// 引入路由模块
const indexRouter = require("./routes/index");
// 使用中间件
app.use(express.json()); // 解析 JSON 请求体
app.use(express.urlencoded({ extended: true })); // 解析 URL 编码的请求体
app.use(express.static("public")); // 提供静态文件服务
// 使用路由
app.use("/", indexRouter);
// 启动服务器
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
在 `routes` 目录下创建 `index.js` 文件,用于定义项目的路由。
const express = require("express");
const router = express.Router();
// 定义根路径的 GET 请求处理函数
router.get("/", (req, res) => {
res.send("Hello, Express!");
});
module.exports = router;
若需要自定义中间件,可以在 `middleware` 目录下创建相应的文件。
const logger = (req, res, next) => {
console.log(`Received ${req.method} request for ${req.url}`);
next();
};
module.exports = logger;
然后在 `app.js` 中使用该中间件:
const logger = require("./middleware/logger");
app.use(logger);
若项目需要渲染动态页面,可以使用模板引擎,如 EJS。
npm install ejs
在 `app.js` 中配置 EJS:
app.set("view engine", "ejs");
app.set("views", "./views");
在 `views` 目录下创建 `index.ejs` 文件:
Express EJS Example
<%= message %>
修改 `routes/index.js` 以使用 EJS 渲染页面:
router.get("/", (req, res) => {
res.render("index", { message: "Hello from EJS!" });
});
在项目根目录下运行以下命令启动 Express 服务器
node app.js
打开浏览器,访问 `http://localhost:3000`,你应该能看到相应的响应信息。
为了提高开发效率,可以使用 `nodemon` 实现代码热重载,即代码修改后服务器自动重启。
npm install nodemon --save-dev
在 `package.json` 中添加启动脚本
{
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
}
}
之后使用以下命令启动开发模式
npm run dev