node.js中/快递:发送静态文件,如果它们存在(node.js/express: Sending

2019-07-17 18:18发布

我想从一个文件夹中提供HTML文件,如果存在的话,否则退回到动态应用程序。

目前我使用类似:

var express = require('express');
var app = express()
, server = require('http').createServer(app)
, io = require('socket.io').listen(server);

server.listen(4444);

app.use("/", express.static(__dirname + '/../WebContent/index.html'));
app.use("/styles", express.static(__dirname + '/../WebContent/styles'));
app.use("/script", express.static(__dirname + '/../WebContent/script'));

//here I would like to define a rule like this:
//app.use("*.html", express.static(__dirname + '/../WebContent/*html'));

我怎样才能做到这一点?

有些教程使用一个名为模块connect 。 如果它是最优雅的解决我的问题,我如何能整合连接到我当前的代码?

Answer 1:

你没有做什么特别的。

我假定WebContent文件夹是在根。

如果你所有的静态内容是像你已经证明了相同的基础文件夹,您不必多次指定。

 app.use(express.static(__dirname + '/WebContent'));

4444 / file.html:如果你有一个名为file.html在WebContent文件夹中的文件,你现在可以通过URL即本地主机访问它



Answer 2:

您使用了大量的样板。 它使用是容易routes 。 下面是一个例子:

var routes = require('./routes');

app.configure(function () {
    ...
    app.use(express['static'](path.join(__dirname, '/../WebContent')));
    app.use(app.router);
});

// Routes
app.get('/', routes.index);

路线/ index.js:

exports.index = function (req, res) {
   res.render('index');
};

渲染你的webapp根项目根目录之外是很奇怪的。 感觉就像是不好的做法。 这是必要的吗?



文章来源: node.js/express: Sending static files if they exist