2012-04-21 22 views
16

Tôi hiện đang xây dựng một ứng dụng xương sống khổng lồ (bản sao facebook).Backbone.js Ứng dụng trang mutli lớn, quản lý quá trình chuyển đổi trang một cách rõ ràng, tạo ra vv

Trong mấy ngày vừa qua, cảm thấy khá hài lòng với mọi thứ hoạt động như thế nào trong BB nhờ hướng dẫn xuất sắc Rob Conery (xem điều cần thiết nếu bạn bắt đầu với MVC 3 và BB http://tekpub.com/productions/mvc3)

Bây giờ tôi đã đến giai đoạn tôi cần chuyển đổi các trang trong ứng dụng của mình và tôi bắt đầu kết nối nó, nhưng có vẻ như tôi đang tự mình làm rất nhiều điều này. Điều này là tốt, và tôi biết tôi sẽ có thể làm những gì tôi muốn nó.

Tôi đã delt với các vấn đề bộ nhớ bị rò rỉ, bằng cách đảm bảo tôi unbind và loại bỏ mô hình của tôi/bộ sưu tập/views khi chuyển trang, Switching views in backbone for navigating between pages - whats the right way?

Nhưng ngoài từ công cụ này, có một tải trọng toàn bộ các công việc mà Tôi muốn làm khi tôi chuyển đổi giữa các trang. Về cơ bản loại bỏ và thêm các phần của trang. Điều này là hơi phức tạp hơn bởi vì thay vì chỉ loại bỏ tất cả mọi thứ, tôi muốn chỉ loại bỏ/destory các bit của trang cần phải thay đổi, dựa trên quá trình chuyển đổi tôi muốn thực hiện.

Như đã nói, tôi đang tự làm việc tại thời điểm này, nhưng tôi tự hỏi liệu có một mô hình để xử lý quy trình xé rách hay không, và giữ mọi thứ sạch sẽ (và không kết thúc bằng bộ định tuyến ồ ạt (controller bloat !!!)

+1

Đây có phải là câu trả lời hay nhất không? https://github.com/derickbailey/backbone.marionette –

+0

Hoặc điều này có lẽ, http://lostechies.com/derickbailey/2012/03/22/managing-layouts-and-nested-views-with-backbone-marionette/ # comment-2375 –

+0

Rối là một khung làm đẹp. Bạn cũng có thể muốn kiểm tra backbone.layoutmanager https://github.com/tbranyen/backbone.layoutmanager#readme – Karthik

Trả lời

9

Marionette chắc chắn là con đường để đi, cụ thể là, Marionette.Layout thật tuyệt vời để trao đổi các khu vực cụ thể mà không cần phải hiển thị lại toàn bộ trang. Hãy xem một số của Derick's Example Apps để làm quen với khung công tác.

Tôi khuyên bạn nên tránh xa Bộ định tuyến cho đến khi bạn đã làm cho ứng dụng của mình hoạt động bằng các sự kiện cũ đồng bộ. đồng minh Router nên được kết nối để phản ánh trạng thái ứng dụng của bạn, nhưng bạn không nên phụ thuộc vào nó để trở thành bộ điều khiển của bạn.

Là một sang một bên, tôi đang sử dụng RequrieJS trên một dự án xương sống đa mô-đun lớn và đó là một ơn trời. Nó gây tranh cãi trong cộng đồng BB, nhưng nó đáng xem xét nếu bạn sẽ có rất nhiều thành phần phụ thuộc lẫn nhau và bạn muốn cho một khung công tác khác xử lý tất cả các phụ thuộc.

+1

Giống như Dave đã chỉ ra trong câu trả lời này, Bố cục sẽ trợ giúp. Cụ thể, đối tượng Marionette.Region sẽ thực hiện dọn dẹp khi hoán đổi chế độ xem. Layouts là các khung nhìn có các Vùng được nhúng trong chúng. –

+0

Xin cảm ơn các bạn, tôi đã đầu gối sâu vào marionette ngay bây giờ. Đó là một tuần kỳ quặc với việc quay đầu với xương sống đầu tiên, chạm vào những bức tường gạch, và sau đó sắp xếp tất cả. Trong một thời gian với marionette nó cảm thấy như được trở lại tại một hình vuông, nhưng những gì tôi đã làm là nhân rộng http://bbclonemail.heroku.com/#inbox trong môi trường địa phương của tôi, và vừa hoàn thành mở rộng nó để có một ứng dụng thứ 3 bên trong nó (nhân bản ứng dụng thư) Cảm thấy thực sự tốt để được đặt tất cả mọi thứ ra một cách sạch sẽ như vậy. Bạn có nghĩ rằng có bất kỳ nhược điểm để sử dụng nó? –

+1

Nhược điểm duy nhất mà tôi thấy là chi phí tinh thần của việc học một lớp trừu tượng trên đầu trang của Backbone. Nhưng một khi bạn quấn đầu của bạn xung quanh Marionette, bạn sẽ bắt đầu suy nghĩ về các khái niệm cấp cao hơn, và bạn sẽ thấy mình viết ít hơn của cùng một mã boilerplate. Gắn bó với nó, và nó sẽ có giá trị nó! –

0

tôi đã cùng một vấn đề của bạn và muốn chia sẻ cách tôi giải quyết nó, vì vậy tôi đang thiết kế ví dụ ToDo App từ các tài liệu Backbone.js sử dụng trang ước CHUYỂN TIẾP CỦA TÔI:

http://ahamlett.com/Backbone.localStorage/

tôi thiên đường 't kiểm tra nó cho rò rỉ bộ nhớ, nhưng nếu có một số chỉ cần gọi .unbind() trước .remove() trong phương thức SetView của bộ định tuyến của ứng dụng.

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