Я в настоящее время работаю над большим веб-приложением, основывался на backbone.js и имели много проблем с организацией, "зомби", и т.д. таким образом, я решил сделать, майор осуществляет рефакторинг кода. Я уже записал набор функций помощника для контакта с "зомби"; однако, я хотел бы запуститься с самого начала и создать хорошую структуру/организацию к коду. Я не нашел много больших учебных руководств/примеров на крупномасштабной backbone.js организации, таким образом, я имею вид запущенных с нуля и хотел бы видеть, могу ли я надеть некоторые мнения, где я начал.
Я, очевидно, установил свой кодекс в глобальном пространстве имен; но я также хотел бы сохранить то пространство имен, скорее убирают. Мой основной app.js сохраняет сами файлы класса, отделяются от глобального пространства имен; можно зарегистрировать класс (так, чтобы он можно было инстанцировать) при помощи reg () функция и inst (), функция инстанцирует класса от массива классов. Таким образом, помимо этих 3 методов, пространство имен MyApp только имеет Маршрутизатор, Модель и Представление:
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);
В рамках Моделей, Наборов, Маршрутизаторов и Представлений, я работаю, как обычно, но затем должен зарегистрировать тот класс в конце файла так, чтобы он можно было инстанцировать позже (не создавая помехи пространству имен) с:
MyApp.reg('Models', 'App', Model);
Это походит на ненужный способ организовать код? У других есть лучшие примеры того, как организовать действительно крупные проекты со многими Маршрутизаторами, Наборами, Моделями и Представлениями?