2011-12-02 26 views
42

Tất cả các ví dụ trên Backbone Tôi đã sử dụng một bộ định tuyến cho toàn bộ ứng dụng, nhưng sẽ không có bộ định tuyến cho từng phần của ứng dụng của bạn (đầu trang, chân trang, giai đoạn , sidebar)? Có ai đã xây dựng ứng dụng với nhiều bộ định tuyến và trải nghiệm của bạn không? Hãy suy nghĩ về một ứng dụng phức tạp có chế độ xem lồng nhau: Sẽ không tốt hơn khi chế độ xem có bộ định tuyến riêng của nó xử lý hiển thị các bản xem trước, so với việc có một bộ định tuyến lớn phải thông báo cho chế độ xem chính để thay đổi chế độ xem của nó. subviews?Nhiều router vs router đơn trong BackboneJs

Nền của câu hỏi này: Tôi đã thấy rất nhiều điểm tương đồng của bộ định tuyến trong xương sống và ActivityMapper trong GWT. ActivityMapper chỉ chịu trách nhiệm đưa người trình bày phù hợp cho một tuyến đường cụ thể và một vùng chứa nhất định trong DOM.

+5

Toàn bộ điểm của đối tượng Bộ định tuyến là liên kết tập hợp các lượt xem với một URL nhất định, cụ thể là phần sau băm. Nó có nghĩa là một mục tiêu có thể điều hướng bên ngoài (và có thể đánh dấu). Tại sao nó có ý nghĩa để có nhiều router?Bạn có thể đưa ra giải thích rõ ràng hơn về những gì bạn đang cố gắng đạt được không? –

+1

Tôi đã cụ thể hóa câu hỏi của mình, hy vọng. –

+0

Câu hỏi tuyệt vời Andreas, đây chắc chắn là điều mà nhiều người sẽ cố gắng làm khi ứng dụng của họ phát triển. –

Trả lời

22

tôi đã viết một ứng dụng (vẫn viết) với nhiều bộ định tuyến trong đó. tuy nhiên nó không giống như bạn nghĩ, nó là mô-đun dựa nhiều hơn và không phải là một bộ định tuyến cho mỗi lần xem hoặc bất cứ điều gì như thế.

ví dụ: nói rằng tôi có hai mô-đun lớn trong ứng dụng của mình, 1 xử lý tất cả sách và 1 cho người dùng. sách có nhiều quan điểm (như làm người sử dụng), một cái nhìn danh sách, xem chi tiết, chỉnh sửa xem, etc etc ... vì vậy mỗi mô-đun có bộ định tuyến của riêng mình, viết tắt của thiết lập riêng của url:

// user module... 
var userRouter = Backbone.Router.extend({ 
    routes: { 
     "users": "loadUsers", 
     "users/add": "addUser", 
     "user/:id": "loadUser", 
     "user/:id/edit": "editUser" 
    } 

// ... rest dropped to save the trees (you never know if someone prints this out) 
}); 


// book module 
var bookRouter = Backbone.Router.extend({ 
    routes: { 
     "books": "loadBooks", 
     "books/add": "addBook", 
     "book/:name": "loadBook", 
     "book/:name/edit": "editBook" 
    } 

// ... rest dropped to save the trees (you never know if someone prints this out) 
}); 

vì vậy, nó không giống như hai bộ định tuyến của tôi đang cạnh tranh cho cùng một tuyến đường, họ từng xử lý tập hợp các tuyến đường của riêng mình.

chỉnh sửa bây giờ tôi có thêm thông tin qua Elf Sternberg, tôi biết không thể mặc định có nhiều bộ định tuyến phù hợp trên cùng một tuyến đường. mà không có cách giải quyết như ghi đè lịch sử xương sống hoặc sử dụng không gian tên trong các tuyến đường và regexes để phù hợp với các tuyến đường này. thông tin thêm tại đây: multiple matching routes nhờ Elf Sternberg cho liên kết.

+0

Bạn có thể đọc mã nguồn cho Backbone để tìm hiểu. Nhưng đây là gợi ý: http://stackoverflow.com/questions/5223251/multiple-matching-routes/ –

+0

ok, do đó, không có cách giải quyết nhất định có nhiều tuyến đường phù hợp không thể thực hiện được bằng khung xương sống mặc định. điều cần biết, cảm ơn vì liên kết đó – Sander

23

Tôi vừa viết một bài đăng trên blog về Mô-đun phụ đề cụ thể trong Backbone, cho phép "định tuyến con" được xác định chú ý tới mọi thứ sau tiền tố cho tuyến đường đó.

Kiểm tra các blog entry cho giải thích thêm: http://www.geekdave.com/?p=13

này có nghĩa là bạn không cần phải dư thừa xác định tiền tố lặp đi lặp, và bạn cũng có thể lười biếng tải subroutes dạng module được truy cập. Phản hồi được chào đón nhiều nhất!

+0

Tiện ích con SubRoute thật tuyệt vời! – aleha

+1

Câu trả lời của bạn không cung cấp đủ thông tin mà không có liên kết bên ngoài, làm cho nó trở thành một câu trả lời kém trong hộp ngay cả khi bài đăng trên blog của bạn có chất lượng cao. Bạn thực sự nên bao gồm một đoạn trích và một số giải thích thêm cho câu trả lời để phân phát qua thời gian. Cảm ơn bạn rất nhiều vì đã dành thời gian giúp đỡ. –

2

Có trường hợp giới hạn nhưng quan trọng khi sử dụng nhiều bộ định tuyến có ý nghĩa. Nếu bạn chỉ cần hiển thị một tập hợp con của các đường dẫn ứng dụng của bạn & lượt xem dựa trên dữ liệu được thu thập trong thời gian chạy (có thể là thông tin đăng nhập - ví dụ: người quản lý so với nhân viên có thể xem & điều hướng giữa các tập hợp chế độ xem khác nhau), bạn chỉ có thể thực hiện Bộ định tuyến & các lớp học. Điều này rất quan trọng vì các tuyến đường có thể được đánh dấu và gửi từ người dùng đến người dùng. Tất nhiên, bạn vẫn cần kiểm tra trên máy chủ để đảm bảo rằng người dùng trái phép không đưa ra yêu cầu sau khi điều hướng đến chế độ xem mà họ đã truy cập qua dấu trang do người dùng được ủy quyền gửi. Nhưng tốt hơn là thiết kế ứng dụng để chế độ xem trái phép không được tạo ra.

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