2017-08-04 82 views
0

我正在嘗試爲我的服務器和它的結構找到解決方案。我想要做的是分開的。Node.js快速服務器端結構

app.post("/login", function(request, response) { 
}); 

app.post("/register", function(request, response) { 
}); 

app.get("/", function(request, response) { 
}); 

成不同的文件。就我而言,他們都站在一個名爲「server.js」的文件中。我怎樣才能讓他們更好地工作?並且同時運行所有這些工具。我搜查了這種情況,發現了這種情況的不同類型。但無法得到明確的答案。

+1

可能的重複[如何在Express中包含多個文件中的路由處理程序?](https://stackoverflow.com/questions/6059246/how-to-include-route-handlers -in-multiple-files-in-express) – jsalonen

+0

可能的答案也在:https://stackoverflow.com/questions/33946972/how-to-split-node-js-files-in-several-files – jsalonen

+0

我認爲這將是更有利的保持所有的路線在一個文件,但有這些路由在不同的文件中調用函數。這樣你就可以在一個地方完成所有路由,但可以分離業務邏輯功能。 – Matthew

回答

4

你可以做的一件事是將「路由器」合併到你的快速函數中。

這是我如何做的一個小例子。 (無恥插頭,請隨時查看我的遊戲源代碼,更全面詳細的路由器here

server.js

import login from "./routes/login"; 
app.use("/login", login); 

login.js

const router = express.Router(); 
router.route("/") //this points to the root route of /login 
    .post((req, res) => { 
     //post function here 
    }) 
    .get((req, res) => { 
     //get function here 
    }) 

這允許你做的很特定的功能路由,以及將路由器分成不同的文件(我將它們存儲在路由中)

app_root 
----routes 
--------login.js 
----server.js 

這是它在文件體系結構中的外觀基本結構。非常乾淨,非常容易模塊化。

+0

這是IMO最好的解決方案。你可以看看'server.js',它本質上是一個文件中記錄的路由,但是你也可以把這些函數/業務邏輯分解成邏輯塊。 – Matthew

1

正如英鎊射手上述評論的,我們使用類似的文件夾層次爲我們的發展以及

server.js (node http server) 
app/ 
    | app.js (express app) 
    | api/ 
    | router.js (express master router to handler "/" 
    | exampleApi/ 
      | exampleRouter.js (routes for example api) 

PS: 我們用下面yoeman生成器生成上面的文件夾結構,我們 yaoeman generator npmjs linkyo-dodan git repo (以獲得文件結構的想法)