node.js / express:发送静态文件(如果存在)

我想从一个文件夹中提供html文件,如果它们存在,否则回退到dynamic应用程序。

目前我使用的是:

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的模块。 如果这是对我的问题最优雅的解决scheme,我怎么能连接到我目前的代码?

你不必做任何特别的事情。

我假设WebContent文件夹在根目录中。

如果您所有的静态内容都与您所展示的相同的基础文件夹中,您不必多次指定它。

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

如果您在WebContent文件夹中有一个名为file.html的文件,现在可以通过url访问它,例如localhost:4444 / file.html

你正在使用很多样板。 使用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根目录非常奇怪。 感觉像不好的做法。 这是必要的吗?