Tôi hiện đang làm việc trên một ứng dụng web lớn được xây dựng trên backbone.js và đã gặp rất nhiều vấn đề với tổ chức, "thây ma", v.v. vì vậy tôi đã quyết định thực hiện refactor chính của mã. Tôi đã viết một loạt các hàm trợ giúp để xử lý các "thây ma"; tuy nhiên, tôi muốn bắt đầu ngay từ đầu và tạo cấu trúc/tổ chức tốt đẹp cho mã. Tôi đã không tìm thấy nhiều hướng dẫn/ví dụ tuyệt vời về tổ chức backbone.js quy mô lớn vì vậy tôi đã bắt đầu từ đầu và muốn xem liệu tôi có thể nhận được một số ý kiến về nơi tôi đã bắt đầu hay không.Tổ chức ứng dụng web backbone.js lớn
Tôi rõ ràng đã thiết lập mã của mình trong không gian tên chung; nhưng tôi cũng muốn giữ không gian tên đó khá sạch sẽ. Ứng dụng chính của tôi giữ cho các tệp lớp tự tách biệt khỏi không gian tên chung; bạn có thể đăng ký một lớp (để nó có thể được khởi tạo) bằng cách sử dụng hàm reg() và hàm inst() khởi tạo một lớp từ mảng lớp. Do đó, bên cạnh 3 phương pháp, không gian tên MyApp chỉ có Router, Model và View:
var MyApp = (function() {
var classes = {
Routers: {},
Collections: {},
Models: {},
Views: {}
};
methods = {
init: function() {
MyApp.Router = MyApp.inst('Routers', 'App');
MyApp.Model = MyApp.inst('Models', 'App');
MyApp.View = MyApp.inst('Views', 'App');
Backbone.history.start();
},
reg: function (type, name, C) {
classes[type][name] = C;
},
inst: function (type, C, attrs) {
return new classes[type][C](attrs || {});
}
};
return methods;
}());
$(MyApp.init);
Trong mô hình, bộ sưu tập, Router và xem, tôi làm việc như bình thường nhưng sau đó cần phải đăng ký lớp học mà ở phần cuối của tệp để nó có thể được khởi tạo tại một điểm sau đó (không làm lộn xộn không gian tên) với:
MyApp.reg('Models', 'App', Model);
Đây có phải là cách không cần thiết để tổ chức mã không? Những người khác có ví dụ tốt hơn về cách tổ chức các dự án thực sự lớn với nhiều Bộ định tuyến, Bộ sưu tập, Mô hình và Chế độ xem không?
lẽ http://codereview.stackexchange.com là phù hợp hơn cho các loại hình câu hỏi - nhưng giữ cho chúng tôi cập nhật (post link);) – sled
Bạn có thể sắp mã của bạn trong mô-đun khác nhau. Bạn có thể xem https://github.com/juggy/backbone-module Tự quảng bá nhỏ: p – Julien