1
我正在用node.js/Express 3/Mongoose/MongoDB構建一些web服務。我通常會看到兩種方式將代碼從server.js
移動到外部文件,我想知道主要區別是什麼,如果一個比另一個更好?我已經概述了以下兩種技術。我傾向於使用方法2,但我發現require('./routes/cats')(app, CatModel);
沒有var =
,但它看起來不正確。什麼是node.js/Express/MongoDB REST全API的最佳設計
- 按功能。路由是在server.js中內嵌的,但邏輯被移到外部文件中。
一些人做這種方式:
// server.js
app.get('/cats', cats.findAll);
//路線/ cats.js
exports.findAll = function(req, res) {
// Lookup all the cats in MongoDB/CatModel.
};
- 由應用程式。應用程序被傳入並且路由建立在它上面。
//在server.js
require('./routes/cats')(app, CatModel);
//在路由/ cats.js
module.exports = function(app, CatModel) {
app.get('/cats', function (req, res) {
CatModel.find({}, function (err, docs) {
if (err || !docs) {
res.json(kStatusInternalServerError, {error: err});
console.log(err);
} else {
res.json(kStatusOk, docs);
}
});
});
};
謝謝。你會說它的共同點是添加功能來通過ID,名字或者所有的貓在貓鼬身上找到CatModel嗎?或者這通常是在'cats'路由器文件中完成的嗎? –
@JasonLeach這超出了這個問題的範圍,幸運的是,要求一個新的問題很容易。如果我回答了您的問題,請立即加入並接受! – SomeKittens
我認爲第二種方法的優點是保持與處理的邏輯路線。所以如果你有像'/ cats /:cat_id'這樣的params參數的路徑,它接近檢索參數'req.params.cat_id'的代碼。在第一種方法中,您需要轉到代碼中的兩個不同位置進行管理。我知道它不應該改變很多,但仍然是。 –