我想从文件夹中提供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
的模块。如果这是我的问题最优雅的解决方案,我如何将连接集成到我当前的代码?
答案 0 :(得分:4)
你不需要做任何特别的事情。
我假设WebContent文件夹在根目录中。
如果您所有的静态内容都与您所显示的基本文件夹相同,则无需多次指定。
app.use(express.static(__dirname + '/WebContent'));
如果您在WebContent文件夹中有一个名为file.html的文件,您现在可以通过URL访问它,即localhost:4444 / file.html
答案 1 :(得分: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根目录非常奇怪。感觉好不好练习。这有必要吗?