0

NodeJS と ExpressJS を使用して、単純なバックエンド用の RESTful API サーバーを実装しています。また、BackboneJS を使用して前面にビューをレンダリングしています。したがって、現在、クライアントが /GET を '/' ルートに送信したときにレンダリングしたい単一の index.html ファイルがあります。これは私がこれまでに持っているものです:

var express = require('express');
var app = express();
app.use(express.bodyParser());
var mongo = require('mongodb');
var mongoose = require('mongoose');

var Server = mongo.Server, 
    DB = mongo.Db,
    BSON = mongo.BSONPure;

var server = new Server('localhost', 27017, {auto_reconnect: true});


db = new DB('mydb', server, {safe: true});

db.open(function(err, db) {
    if(!err) {
        console.log("Connected to 'mydb' database");
        db.collection('items', {safe:true}, function(err, collection) {
            if (err) {
                console.log("Creating collection 'items'");
            }
        });
    }
});

var port = process.env.PORT || 3000;

app.engine('.html');

var listItems = function(req, res){
    db.collection('items', function(err, collection){
        var items = collection.find();
        console.log(items);
        res.send(items);
    });
}

var itemDetails = function(req, res){

}

var deleteItem = function(req, res){

}

var createItem = function(req, res){

}

var updateItem = function(req, res){

}

var routeHome = function(req, res){

        // What can I do here to render a plain .html file?

}

app.all('*', function(req, res, next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Content-Type", "application/json");
    next();
});

app.get('/', routeHome);

app.get('/items', listItems);
app.get('/items/:id', itemDetails);
app.del('/users/:id', deleteItem);
app.post('/users', createItem);
app.put('/users/:id', updateItem);

app.listen(port);

console.log("Server started up on port " + port);

ご覧のとおり、通常の .html ファイルをクライアントに送信する方法がわかりません。Backbone がすべての処理を行ってくれるので、レンダリング エンジンは必要ありません。index.html を取得してクライアントに渡したいだけです。

4

2 に答える 2

1

express.staticミドルウェアだけを使ってみませんか?Backboneを使用しているため、静的JSファイルも送信する必要がある場合があります。

app.use(express.static(__dirname));

他のルートの前のどこかに配置します。__dirname(app.jsファイルが存在するディレクトリですが、もちろんミドルウェアがファイルを検索する場所を変更できます)で要求されたファイルを検索しようとしますindex.html

于 2013-03-08T09:09:14.640 に答える
0

ステップ 1, 削除app.engine(".html"),

ステップ2:

var routeHome = function(req, res){
    // Do What Ever
    res.sendFile("index.html",function(err){ // Transfer The File With COntent Type Text/HTML
        if(err){
            res.end("Sorry, Error.");
        }else{
            res.end(); // Send The Response
        }
    })
}
于 2013-03-09T14:41:34.790 に答える