Express 是一个极其灵活的框架,所以在创建 Express 应用的方式上也存在多种可能。根据需求和项目的具体情况,可以有很多不同的写法。本节介绍两种常见的用于创建 Express 应用的最基本写法。
下面这两种写法都可以创建一个 Express 应用,并在指定的端口上启动一个服务器。最终的效果是一样的,即都会创建一个可以接收并处理 HTTP 请求的 Web 服务器。
const express = require("express");
const http = require("http");
const app = express(); // 创建一个 express 应用
// app 实际上是一个函数,用于处理请求的函数
const server = http.createServer(app);
const port = 3000;
server.listen(port, () => {
console.log(`server listen on ${port}`);
});
这种写法显式地使用 Node.js 的 http 模块来创建服务器。这样做的好处是,我们可以 更灵活 地控制服务器的行为,例如添加一些自定义的处理逻辑,或者使用 http 模块提供的一些底层的 API。这种写法更适用于需要深度定制服务器行为的场景。
const express = require("express");
const app = express();
const port = 3000;
app.listen(port, () => {
console.log(`server listen on ${port}`);
});
这种写法直接使用 Express 的 listen 方法来启动服务器。在底层,app.listen 会调用 Node.js 的 http.createServer 来创建服务器。这种写法 更简洁,更适用于不需要深度定制服务器行为的常见场景。
其实,写法 2 实现的效果,无非就是在内部将写法 1 给做了一层封装:
function listen(port, cb) {
const http = require('http')
const server = http.createServer(this)
server.listen(port, cb);
// ...
}