2012-07-06 24 views
7

Tôi đang tìm kiếm lời khuyên chủ quan (và tôi biết điều này có thể bị đóng), nhưng tôi muốn có thể tách các tuyến và bộ điều khiển trong dự án node.js để tôi có một số câu hỏi :Sử dụng bộ điều khiển và tuyến đường riêng biệt trong Node.js

  • Có vô dụng để thử và triết lý node.js có tệp JS nhỏ hơn/lớn hơn không?
  • Tôi muốn có thể yêu cầu ("định tuyến") và để nó kết nối tất cả tuyến đường của tôi với mô-đun cần thiết cho bộ điều khiển của tôi. Tôi có thể làm điều này một cách dễ dàng nếu tôi chỉ cần đặt tất cả mọi thứ trong index.js nhưng điều đó có vẻ kỳ quặc. Tôi đã thực hiện tách kiểu app.get("/" controllers.index); nhưng tôi bị treo lên khi xây dựng một mô-đun chỉ bao gồm tất cả các tệp JS trong một mô-đun khác. Tui bỏ lỡ điều gì vậy?
  • Hoặc có thể có một phong cách node.js hoàn toàn khác nhau để làm điều này, và tôi đang cố gắng để bản đồ kiến ​​thức ASP.NET MVC của tôi quá sâu?
+0

Thử nhẹ nhanh-Flatiron MVC https://github.com/pksunkara/bullet/tree/master/example / –

Trả lời

7

Nếu bạn muốn để có được tất cả vào một tập tin, bạn có thể thử một cái gì đó như thế này, đòi hỏi mỗi tập tin trong ./routes/ và gọi hàm xuất khẩu sang mỗi app như tham số:

// routing.js 

var fs = require('fs'); 

module.exports = function(app) { 
    fs.readdirSync(__dirname + '/routes/').forEach(function(name) { 
    var route = require('./routes/' + name); 
    route(app); 
    }); 
} 

// routes/index.js 

module.exports = function(app) { 
    app.get('/something', function(req, res) { ... }); 
    app.get('/something/else', function(req, res) { ... }); 
} 

// routes/pages.js 

module.exports = function(app) { 
    app.get('/pages/first', function(req, res) { ... }); 
    app.get('/pages/second', function(req, res) { ... }); 
} 

// server.js 

var app = express.createServer(); 
require('./routing')(app); // require the function from routing.js and pass in app 

Ngoài ra còn có một số ví dụ thú vị trong thư mục Express 'example trên GitHub, chẳng hạn như an MVC-based one thực hiện các tuyến RESTful giống như Rails.

Các vấn đề liên quan