2013-03-04 79 views
1

我是nodejs中的新成員。我想用多個建立一個休息服務,可以說,類別。瞭解nodejs中的模塊/路由

> app.js 
var express = require('express') 
    , http = require('http') 
    , routes = require('./routes') 
    , path = require('path'); 

app = express(); 
app.use(app.router); 

app.get('*',routes.index); 

app.listen(3000); 
console.log('Express app started on port 3000'); 

> routes/index.js 
var sites = [ 
    'sve', 
    'ice' 
]; 

exports.index = function(req,res){ 
    var url = req.url.split('/'); 
    for (i in sites) { 
     app.get('/' + sites[i] + '/*',require('./' + sites[i])); 
    } 
}; 

> routes/sve/index.js 
module.exports = function(req, res){ 
    console.log('sve') 
    res.end({category:'sve'}); 
}; 

> routes/sve/index.js 
module.exports = function(req, res){ 
    console.log('sve') 
    res.end({category:'sve'}); 
}; 
當我運行 「節點應用」

我得到 「快速應用啓動3000端口」 和服務器正在運行,但是當我訪問「本地主機:30 00/sve/test「我沒有迴應或」localhost:3000/ice/test「甚至是」localhost:3000/abc/test「。 甚至沒有在控制檯中。

我在做什麼錯?

+0

我不太清楚你正在嘗試做什麼,但它有點像你試圖掛載子應用程序?這樣,所有到mydomain.com/ice/*的東西都可以通過一組特定於冰塊的不同路線處理? – 2013-03-04 22:17:13

+0

是的,我想在不同的子應用程序中分割應用程序。當/ sve /被檢測到時運行一段代碼,當/ ice /被檢測到時,另一塊 – 2013-03-04 22:19:14

回答

3

正如我在評論中提到的,我認爲您正在尋找一種使用子應用程序(如Rails引擎)的方法來模塊化您的應用程序。如果是這種情況,你應該使用app.use()來掛載一個子應用程序。

有一個很好的視頻here

視頻中未提及的最後一件相關事項是,您可以相對安裝子應用程序。例如:

var subapplication = require('./lib/someapp'); 

app.use('/base', app.use(subapplication)); 

這會將子應用程序中的路由視爲來自'/ base'路徑。例如,在本例中,在子應用程序中捕獲'/ a'的路由將匹配到'/ base/a'的請求。

+0

你也可以在這裏找到有用的信息:http://stackoverflow.com/questions/8514106/how-to-mount-express -js子應用程序。 – 2013-03-04 22:29:48

+0

謝謝尼克。該信息將幫助我很多設置我的應用程序的子類。 – 2013-03-06 19:43:55

+0

沒問題。如果這回答你的問題,隨時接受它 – 2013-03-06 20:15:20