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