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 服务器的负担并提高响应速度。