跳到主要内容

express

use()

use() 方法是一个中间件函数,它能够将一个或多个中间件添加到请求处理链中。中间件是一个函数,它可以访问请求对象(req)、响应对象(res)以及应用程序的请求/响应循环中的下一个中间件函数(通常表示为一个名为 next 的变量)。

下面是一个基本的例子,展示了如何在Express应用程序中使用 use() 方法:

const express = require('express');
const app = express();

// 一个简单的中间件函数
const myMiddleware = (req, res, next) => {
console.log('中间件被调用!');
next(); // 调用下一个中间件
};

// 使用中间件
app.use(myMiddleware);

// 另一个中间件,这次是直接定义的
app.use((req, res, next) => {
console.log('另一个中间件被调用!');
next();
});

// 路由处理
app.get('/', (req, res) => {
res.send('Hello World!');
});

// 监听端口
app.listen(3000, () => {
console.log('服务器正在监听端口3000');
});

在这个例子中,我们定义了两个中间件函数,并且使用 app.use() 将它们添加到了应用程序中。当一个请求到达Express应用程序时,它会按照中间件添加的顺序依次执行这些中间件,直到遇到一个发送响应的中间件或路由处理函数。如果中间件内部没有结束请求/响应循环(例如,通过调用 res.send()),它必须调用 next() 函数将控制权传递给下一个中间件或路由处理函数。

express.static

express.static 是 Express.js 框架中的一个内置中间件函数。它用于托管静态文件,如图片、CSS、JavaScript 文件等。通过使用这个中间件,你可以将一个或多个目录指定为包含静态资源的位置,这样客户端就可以直接访问这些文件了。

const express = require('express');
const app = express();

// 指定静态文件目录
app.use(express.static('public'));

app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});

在上面的例子中,public 目录被设置为静态文件目录。这意味着,如果你在 public 目录下有一个名为 image.png 的文件,你可以通过访问 http://localhost:3000/image.png 来直接获取这个文件。

  • 可以为静态资源指定一个虚拟路径前缀(实际上并不存在于文件系统中)

    app.use('/static', express.static('public'));

    这样,public 目录下的文件就可以通过带有 /static 前缀的 URL 访问了,例如 http://localhost:3000/static/image.png

  • 可以通过多次调用 express.static 中间件来设置多个静态文件目录

    app.use(express.static('public'));
    app.use(express.static('uploads'));
  • 可以通过其他中间件来修改静态文件的响应头或设置缓存策略。

express.static 是处理静态资源的简便方法,但在实际应用中,需要根据项目的具体需求和部署环境做出相应的配置和优化。

  • 安全性:当使用 express.static 中间件时,应确保只对外提供必要的文件,避免暴露敏感数据。
  • 性能:对于生产环境,考虑使用 Nginx、CDN 或其他静态资源服务来提供静态文件,以减轻 Node.js 服务器的负担并提高响应速度。