許多方法來做到這一點。這裏有一些想法。
是的,你會希望有一些路由/處理程序的設置,以便不同的模塊有能力調用不同的服務和/或分離。
下面是一個相當標準的node.js /快遞結構:
├── server.js
├── config
│ ├── development
│ ├── production
│ └── staging
├── handlers
│ ├── customers.js
│ └── stores.js
├── node_modules
│ ├── assert
│ ├── ejs
│ ├── express
│ ├── forever
│ ├── mongodb
│ └── mongoskin
├── package.json
├── README.md
然後在server.js,你可以導入你的處理程序,如下所示:
// import route handlers
var customers = require('./handlers/customers'),
stores = require('./handlers/stores');
,然後你裏面的處理程序,你就可以申報的功能:
exports.addCustomer = function(req, res) {
// ....
};
這server.js您可以使用路由:
app.post('/customers/add/:id, metrics.addCustomer);
這樣你就有了一個基本框架。只需在處理程序文件中定義exports.XXX
函數之外的數據庫連接就沒有問題,因爲這些函數將有權訪問,但server.js
中沒有任何內容,因此您不會污染名稱空間。
var url = config.user +":"
+ config.pass +"@"
+ config.host +"/"
+ config.database;
var mongo = require('mongoskin').db(url);
您可能會從JSON文件中加載config
對象。
希望有幫助。
使用分層和依賴注入。也就是說,有一個獨立的數據訪問模塊,它接收一個MongoDB對象作爲init參數,還有一個單獨的模塊處理這個對象的設置並將它傳遞給數據訪問,然後將數據訪問的東西交給你的控制器。 – millimoose
這當然不是一個明確的答案(並且,鑑於節點程序員傾向於如此自以爲是,我懷疑可能不存在明確答案),但在以下鏈接中有關於此主題的有趣討論:https://gist.github .com/viatropos/1398757,http://rycole.com/2013/01/28/organizing-nodejs-express.html,和http://onoffswitch.net/separation-concerns-node-js/ –
這[github回購](https://github.com/linnovate/mean)有一個如何組織你的MEAN應用程序的好例子,儘管你不會使用AngularJS。 –