среда, 2 июля 2014 г.

Модели асинхронного программирования на JavaScript для юниоров


Знакомство с асинхронностью у JavaScript разработчиков обычно происходит на первых днях. Как правило это AJAX-запросы, таймеры и библиотечные функции, связанные с анимацией, например jQuery-методы fadeIn/fadeOut, slideUp/slideDown и так далее. В целом, это все не очень сложно, и разобраться с асинхронностью на этом этапе не представляет проблем.
Однако, как только разработчик переходит к написанию более или менее сложных приложений, в которых комбинируется все вышеуказанное, асинхронный поток может сильно затруднить понимание и поддержку кода. Цепочки асинхронных действий, например, анимация > ajax-запрос > анимация, создают достаточно сложную архитектуру, которая не подчиняется строгому направлению "снизу верх".
Попробую изложить свой опыт того, как я перестал бояться асинхронности.

пятница, 17 января 2014 г.

Тестирование с помощью qUnit



В этой статье я намерен продемонстрировать мой опыт в тестировании небольшого JavaScript приложения (см. предыдущую статью) с помощью qUnit. Поскольку я буду тестировать уже существующее приложение, то изначальную версию кода можно взять из этого коммита в репозитории.
Я предполагаю, что читатель знаком с принципом работы qUnit. В приложении используются библиотеки jQuery и FRP-библиотека Bacon.js, позволяющая писать чистый декларативный JS. В итоге выходит вполне себе общий случай сочетания разных методов программирования, и поэтому статья может быть интересна тем, кто задается вопросом, как писать тестируемый JavaScript-код с минимальными издержками в сфере логичности, лаконичности и производительности приложения. Иначе говоря, в этой статье я приведу пример рационального подхода к созданию test-driven приложений.












вторник, 14 января 2014 г.

Sokoban на Bacon.js



В этой статье я опишу процесс разработки игры Sokoban на JavaScript-библиотеке Bacon.js.
Увидеть результат можно здесь. Выглядеть это будет примерно, как на картинке. Поскольку игрушка будет не на канвасе, а обычный DHTML, то параллельно я буду пользоваться и jQuery, чтобы облегчить себе работу с DOM. Заодно подготовлю почву для следующей статьи, которая будет о тестировании приложений на qUnit и Jasmine.