Большая организация веб-приложений backbone.js

В настоящее время я работаю над большим веб-приложением, построенным на backbone.js, и у меня было много проблем с организацией, «зомби» и т. Д., Поэтому я решил сделать крупный рефакторинг кода. Я уже написал кучу вспомогательных функций для борьбы с «зомби»; однако я бы хотел начать с самого начала и создать красивую структуру / организацию кода. Я не нашел много хороших руководств / примеров по крупномасштабной организации backbone.js, поэтому я начал как бы с нуля и хотел бы узнать, смогу ли я получить некоторые мнения о том, с чего я начал.

Я, очевидно, установил свой код в глобальном пространстве имен; но я также хотел бы, чтобы это пространство имен было довольно чистым. В моем основном app.js файлы классов хранятся отдельно от глобального пространства имен; вы можете зарегистрировать класс (чтобы его можно было создать) с помощью функции reg (), а функция inst () создает экземпляр класса из массива классов.Таким образом, помимо трех методов, в пространстве имен 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);

Не кажется ли это ненужным способом организации кода? Есть ли у других лучшие примеры того, как организовать действительно большие проекты с множеством маршрутизаторов, коллекций, моделей и представлений?

61
задан user527480 3 November 2011 в 22:40
поделиться