Pull to refresh

Comments 21

Использую что то подобное. Не делал свой templateEngine, просто грузил шаблоны jQuery — он все равно используется.
У меня $.get() возвращает промис, который присваивается в виде поля модуля templateReady и потом код который должен работать, когда шаблон уже загружен просто использует этот промис:
self.templateReady.then(function(){… });

В остальном очень похоже — require,js для модулей, вложенность моделей.

Еще для модульности в knockout у меня есть такая штука:
github.com/xdenser/knockout-component
Правда загрузка шаблонов и модулей туда не встроена специально, чтобы можно было сделать, как нравится.
А если в качестве шаблонизатора использовать underscore?
А раз использовать underscore можно сделать еще один шаг, и использовать knockback?
А вы его (knockback) используете уже где то на серьезных проектах?
В больших проектах knockback пока не использовался. Радует активная позиция автора, и быстрая обратная связь.
Спасибо за knockback. Знаю backbone, но пока в голове не укладывается, как его использовать совместно с knockout. Поковыряю примеры.
Есть ли роутинг в вашем knockout? Если есть, можно ли его сделать вложенным? Как у него с history API?
В нокауте нет роутинга. Это инструмент для биндинга. Я использовал Sammy.js для роутинга
Есть отличный пример построения SPA на Pluralsight pluralsight.com/training/Courses/TableOfContents/spa
Если что, то этот курс можно найти на торрентах.
Вот до чего крутой этот курс, но Папа накрутил там конечно с датасервисами на клиенте.
Это да. Намудрил здорово.
А модели knockout имеют методы для общения с сервером? Или это тоже нужно брать в свои руки?
В свои руки.
В курсе указанном выше, Джон Папа использует для этого Amplifyjs
Вполне себе линукс вей. Для каждой задачи, своя небольшая тула.
Вот как раз Knockback предоставляет возможность для общения с сервером и History API используя Backbone.
А так как там backbone, то тянется ещё и jQuery?
В моем — есть и то и то. Не стал захламлять пример.
Но роутинг довольно простой и ограниченный — основные страницы, доступные из меню в 1 клик, имеют названия. Всякая мелочь типа всплывающих окон названий не имеет, и не меняет url. Т.е. роутинг не вложенный. Работает просто — в модуле меню висит метод на onhashchange, который по хэшу грузит в currentState то что нужно. Клики по ссылкам меню прописывают новый hash.
Вроде как в github.com/rniemeyer/SamplePresentation так же устроен.
У него никак. Но ничего вам не помешает использовать какую-нибудь стороннюю библиотеку — ту же history.js — и замапить необходимые observables в урлу.
angularjs от google решает те же задачи что и knockout плюс роутинг, плюс RESTful сервисы плюс dependency injection плюс фильтры данных. До того как с ним познакомился knockout был моим неоспоримым чемпионом.
Посмотрели в сторону angularjs, посмотрели количество отрытых багов и время, которые они там висят… и решили, что нет.
Хотя сам подход к организации кода и организации юнит-тестирования у них, несомненно, интересный.
Статистика из github issues — 400/1444 = 27,7% у AngularJS против 177/662 = 26,7% у Knockout. Вроде не сказать, чтобы великая разница. Или Вы как-то по-другому оценивали? Еще хороший вопрос, какие из задач актуальны для 1.х ветки, что из низ баги, что feature-реквесты, а что просто правка документации…
Хорошая идея, продолжайте в том же духе! :-)
Only those users with full accounts are able to leave comments. Log in, please.