2012-02-12 26 views
24

Tôi đã thực hiện một quyết định để thay đổi định tuyến ứng dụng của tôi sang một bên khách hàng chứ không phải là phía máy chủ. Điều này có nghĩa là tôi sẽ cần một cách để chuyển đổi lượt xem vào và ra khỏi trang khi người dùng điều hướng trang web. Điều duy nhất tôi có thể thấy rằng nỗ lực ghi lại tài liệu này là bài viết này: How to switch views using Backbone.jsChuyển đổi chế độ xem trong xương sống để điều hướng giữa các trang - đúng cách?

Tôi thấy cách này hoạt động, nhưng tôi không nghĩ đó là cách tuyệt vời để thực hiện. Tôi muốn giữ quan điểm của mình - vì đó là toàn bộ vấn đề phải không? Để có các chế độ xem riêng biệt cho các phần có thể phân biệt trong ứng dụng của bạn? Tôi nghĩ rằng có một "ContentView" lớn và sau đó chỉ cần kéo công cụ vào nó và tái rendering là một chút thô và bỏ qua tất cả các modularisation mát mẻ, bạn có thể làm khác.

Vì vậy, cách tốt nhất để đi về nó là gì? Lý tưởng nhất là tôi muốn có một chức năng tương tự như những gì được ghi trong bài viết nói trên, nhưng có một khung nhìn xương sống như là đối số của nó.

Trả lời

37

Tôi đã viết một vài bài viết về chủ đề này:

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

và là một phiên bản mới hơn mà sẽ đưa ý tưởng từ bài đăng này và chính thức hóa nó hơn:

http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/

lại sử dụng chế độ xem thực sự là một mẫu chống trong hầu hết các trường hợp. thường có rất nhiều mã bổ sung và các hành trình bổ sung liên quan đến việc giữ lại để xem các trường hợp, để khiến chúng tự gắn lại với DOM và xử lý các sự kiện DOM đã đăng ký một cách chính xác. Ngoài ra, bạn có nguy cơ rò rỉ bộ nhớ (bài viết đầu tiên của tôi nói về) và phá hủy hiệu suất ứng dụng của bạn bằng cách sử dụng quá nhiều bộ nhớ.

Nếu quan điểm của bạn đang sử dụng một tài nguyên "đắt", bạn nên nhớ cache tài nguyên bên ngoài của quan điểm của bạn và tái sử dụng nó. Quan điểm của bạn phải rẻ và nhanh để tạo, hiển thị, hiển thị và hủy.

+1

Thứ nhất, tuyệt vời đọc, blog của bạn đã đi thẳng vào RSS feed của tôi. Tôi đang cân nhắc việc chuyển sang Marionette ngay bây giờ. Ý kiến ​​của bạn về yêu cầu libs như requireJS và sử dụng của họ với điều này là gì? Tôi đoán có tính hữu dụng hết hạn càng sớm càng phía khách hàng định tuyến được thực hiện ... –

+1

requirejs được hỗ trợ đầy đủ bởi con rối, và nhiều khách hàng của tôi sử dụng nó với con rối. tôi không sử dụng nó trong các dự án của riêng tôi, nhưng nó chỉ là một sở thích cá nhân. nó chắc chắn giải quyết một số vấn đề thực sự, và nó là một công cụ quan trọng trong cộng đồng JS ngay bây giờ. các thử nghiệm thực sự sẽ được cho dù nó cần phải dính xung quanh sau khi JS được một hệ thống mô-đun thực sự trong các trình duyệt. –

+0

Đừng quên để thêm 'this.delegateEvents() 'bên trong Quan điểm thứ render() phương pháp, nếu không một cái gì đó như' sự kiện: { "nhấp .button": "doStuff"} 'sẽ không sa thải sau khi xem là tái -kết thúc. – James

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