Как вы организовываете классы модели представлений? Раздельные классы или один гигантский (и как модулировать гигантский)? Как переключаться между "страницами" (с данными, загруженными с помощью ajax, конечно)? Как загрузить шаблоны для backbonejs после загрузки страницы? Примеры и учебные пособия были бы оценены, если они более продвинуты, чем те, которые находятся на их сайте.
Как сделать одностраничное приложение с knockout.js?
Ответ 1
Ничего себе, много вопросов все в одном. Я попытаюсь ударить их здесь, но отказ от ответственности, что я пишу полный курс для Pluralsight on Knockout... поэтому я не могу зайти в глубину, в которой вам нужен блок комментариев:)
1) Как вы организуете классы класса модели?
Я думаю, вы имеете в виду классы модели представления. Я рекомендую создать модель представления, содержащую все свойства и методы, которые требуется странице. Поместите модель представления в оболочку и сохраните весь этот javascript в собственном файле. Например, если у вас есть страница customers.html для вашей структуры, вы можете иметь customers.js для своей модели представления.
2) Разделяйте классы или один гигантский (и как модулировать гигантский)?
Каждая модель представления находится в собственном файле. Как правило, 1 модель представления для js файла (но вы, безусловно, могли бы установить взаимосвязанные внутри него один и тот же файл). Также, как правило, 1 модель просмотра для каждого представления (но в некоторых случаях вы можете выйти за рамки этого).
Для моделей вы можете создать их все в одном файле модели, если хотите, или поместить их в отдельные файлы. Для небольших приложений мне нравится 1 файл models.js, так как большинство моделей довольно прямые, маленькие и содержат простые свойства (хотя и наблюдаемые). Но здесь это действительно вопрос выбора.
3) Как переключаться между страницами?
Механизм не специфичен для Knockout, поэтому вы можете использовать ссылки или даже настраиваемые элементы управления (меню, вкладки и т.д.). Ваш звонок. После того, как вы решите, как перейти на другую страницу, я предполагаю, что вам необходимо передать данные между двумя для контекста. Один из способов сделать это - в querystring с идентификатором, другой способ - это локальное хранилище (для более крупных предметов, которые нужно хранить в клиент), или есть другие варианты. Опять же, это действительно зависит от того, что вам нужно пройти между страницами. Много раз я создаю страницы для себя достаточно, поэтому мне не нужно много проходить между ними. Для чего мне нужно пройти, я пытаюсь отправить как можно меньше и искать данные на основе ключей (в вызовах ajax или локальном хранилище... везде, где живут данные).
Надеюсь, это немного поможет.
UPDATE: Вот ссылка, которую я упомянул в своем курсе Knockout.js на Pluralsight