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

You are using a lot of boilerplate. It is easier using routes. Here is an example:

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

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

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

routes/index.js:

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

Rendering your webapp root outside your project root is very strange. Feels like bad practice. Is this necessary?

于 2013-01-02T16:20:09.123 に答える