4

如果存在,我想从文件夹中提供 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. 如果它是解决我的问题的最优雅的解决方案,我如何将连接集成到我当前的代码中?

4

2 回答 2

4

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

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

如果您的所有静态内容都在同一个基本文件夹中,就像您展示的那样,您不必多次指定它。

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

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

于 2013-01-02T16:06:17.553 回答
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 根目录是很奇怪的。感觉是不好的做法。这是必要的吗?

于 2013-01-02T16:20:09.123 回答