2013-03-08 20 views
0

我正在使用NodeJS和ExpressJS爲簡單的後端實現RESTful API服務器。我也使用BackboneJS在前端渲染視圖。因此,現在我有一個index.html文件,我想在客戶端向/'路由發送/ GET時呈現。這是我到目前爲止有:在NodeJS和ExpressJS中顯示基本的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去客戶端。

回答

1

剛剛使用express.static中間件怎麼樣?由於您使用的骨幹,你可能會發送靜態JS文件,以及需要:

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

將你的其他途徑在什麼地方。它會嘗試查找__dirname(app.js文件所在的目錄,但您當然可以更改中間件嘗試查找文件的位置)中請求的文件,其中包括index.html

+0

所以我會放什麼東西在我app.get()回調函數發送該文件返回給客戶端? – 2013-03-08 09:26:33

+0

什麼也沒有,你甚至可以刪除它:) – robertklep 2013-03-08 15:31:12

+0

所以你上面做了什麼將允許GET'/'(我的網站的根)自動呈現index.html? – 2013-03-08 18:15:19

0

步驟一,刪除app.engine(".html")

第二步:

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 
     } 
    }) 
}