Это полный вопрос, но я все равно должен его задать
Я начал играть с backbone.js несколько дней назад и был действительно очарован.Когда я закончил «ToDo», я начал работать над собственным проектом.Исходя из мира Java, я предпочитаю хранить все как можно больше отдельных файлов.Поэтому я разделяю представления моделей и маршрутизаторы на отдельные файлы в отдельные папки.
Проблема возникла, когда я попытался объединить эти поля в один файл applciation.js.Опять же, выходцы из мира Java, мне нравится, когда я могу автоматизировать вещи, и даже больше, когда я могу использовать знакомые инструменты, такие как ant, для настройки процессов сборки для своих проектов javascript.
Я получил пример сборки antШаблон, который объединяет и минимизирует все файлы в произвольном порядке.Когда оно закончилось, я попытался запустить свое приложение JS, и неудивительно, что оно провалилось с кучей ошибок.Многие из моих моделей и представлений пытаются расширить друг друга, другие зависят от них как от компонентов.Если они не определены в правильном порядке, приложение просто достигает точки, где оно пытается выполнить extend
из undefined
. Я знаю, что для JavaScript порядок очень важен, нопочему-то у меня сложилось впечатление, что если все сценарии находятся в одном файле, JS-анализатор сначала загрузит все содержимое, а затем попытается выполнить все, что должно быть выполнено.Ну, мое предположение было неверным.
Можно перечислить все файлы в определенном порядке, я хочу их, но действительно ли мне нужно идти на такой примитивный шаг?К сожалению, потратив несколько часов на исследования, я не смог найти ничего лучшего.
Действительно ли возможно объединять файлы JS, которые зависят друг от друга, в произвольном порядке, без их коллизий?Я думаю, самая большая проблема заключается в том, что функция extend
фактически вызывается, а не каждый скрипт, просто определяющий и объектный литерал
Итак, каково решение?
ОБНОВЛЕНИЕ : Я только что видел, что у Sproutcore есть свой собственный строитель.Если SC похож на BB, то, как он создает и расширяет сущности, как компоновщик SC работает без столкновений?