javascript – 使用快递提供静态文件的最简单方法是什么?

我正在使用一个相当丑陋的方法:

var app = require('express')(),
    server = require('http').createServer(app),
    fs = require('fs');
server.listen(80);

path = "/Users/my/path/";

var served_files = {};
["myfile1.html","myfile2.html","myfile3.html"].forEach(function(file){
    served_files["/"+file] = fs.readFileSync(path+file,"utf8");
});

app.use(function(req,res){
    if (served_files[req.path]) 
        res.send(files[req.path]);
});

什么是正确的方法?

最佳答案
Express有一个内建的中间件.它是connect的一部分,其表达是建立在的.中间件本身使用send.

// just add the middleware to your app stack via `use`
app.use(express.static(yourpath));

在回答你的评论,不,没有办法手动选择文件.虽然默认情况下,中间件将忽略前缀为.的文件夹,例如将不会提供名为.hidden的文件夹.

要手动隐藏文件或文件夹,您可以在静态之前插入自己的中间件,以在请求到达之前过滤出路径.以下将阻止从名为hidden的文件夹中提供任何文件:

app.use(function(req, res, next) {
  if (/\/hidden\/*/.test(req.path)) {
    return res.send(404, "Not Found"); // or 403, etc
  };
  next();
});
app.use(express.static(__dirname+"/public"));

转载注明原文:javascript – 使用快递提供静态文件的最简单方法是什么? - 代码日志