使用express/nodejs提供静态文件

ptf*_*ptf 3 node.js express

我已经设置了这样的静态文件:

app.use(express.static(__dirname));

app.get('/', function(req, res) {
    res.locals.message = 'Hello!';
    res.render('index');
});
Run Code Online (Sandbox Code Playgroud)

这似乎有效.这是通常的做法吗?我有点困惑,如果static在同一个端口上启动自己的服务器,如果是这样的话,这是一个好主意吗?

Iva*_*iev 6

如果您不需要高性能或特定的东西,这是标准方法.它不会启动单独的服务器,而是在请求到来时,它会检查路径以查看是否可以从您添加为静态的其中一个目录中提供具有指定名称的文件.

您可以为性能做两件事.第一个是一个简单的修复 - 如果你express.static在其余的处理程序之前添加,每个请求都会产生一个磁盘读取,以检查是否存在具有该名称的文件.您可以通过将静态中间件放在最后(或通过将其安装在前缀:例如/static)来解决此问题.

如果这对您来说不够好,那么标准解决方案就是将高性能服务器放在node.js服务器前面.一个例子是nginx服务器,它针对提供静态文件进行了高度优化.它可以处理静态文件的请求,并将其余部分重定向到您的节点应用程序.