Category Archives: Programming

Сравнение способов двухстороннего связывания у AngularJS, Ember.js и KnockoutJS

http://2013.jsconf.eu/speakers/marius-gundersen-a-comparison-of-the-twoway-binding-in-angularjs-emberjs-and-knockoutjs.html http://youtu.be/mVjpwia1YN4 В докладе делаются намёки на то, что Ember.js всё-таки чуть-чуть лучше. Но при этом рассматривается очень синтетическая ситуация с 5000 моделей. И не учитывается простота синтаксиса в AngularJS относительно остальных. И то, что в AngularJS вместо 5000 разных моделей можно сделать модель с 5000 элементов, а 5000 моделей на экране — несколько абсурдное …

Read more

Выбиралка клиентских шаблонизаторов под разные нужды

http://garann.github.io/template-chooser/

Node.js-сервер для отдачи Angular.js-шаблонов и проксирования ajax-вызовов

Вот оно — https://gist.github.com/bullgare/f3e225abc9e8a441b0db. Основная проблема — работа с блитцовыми конструкциями в шаблоне индексной страницы. Ссылки по теме: http://nodejs.ru/443 http://stackoverflow.com/questions/10058814/get-data-from-fs-readfile http://stackoverflow.com/questions/9540978/nodejs-how-to-read-and-output-jpg-image http://nodejs.org/api/fs.html#fs_fs_readfile_filename_options_callback

AngularJS: почему не надо назначать обработчики на $rootScope внутри контроллеров

Вот здесь — https://blog.bullgare.com/2013/09/angularjs-%D0%BE%D1%82%D0%B2%D1%8F%D0%B7%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2-%D0%B8-%D1%80%D0%B0%D1%81%D1%81%D1%83%D0%B6%D0%B4/ подробно описано, как сложно всё выходит, если внутри контроллера повесить обработчик на события в $rootScope. Вкратце — потому, что при смене маршрута обработчик события никуда не девается, и его приходится руками удалять. Простое решение проблемы — вешать обработчики не на $rootScope, а на локальный $scope, который потом удалится вместе со всеми …

Read more

AngularJS: отвязывание обработчиков и рассуждение об опасностях использования вложенных контроллеров

В нашем приложении (чего уж тут скрывать — http://m.mamba.ru, тач-версия) всё построено на встроенных в angular маршрутах. При этом, как известно, шаблон страницы отрисовывается внутри тега ng-view. Появилось несколько страниц, на которых внутри контента (это важно) нужно показывать баннер.

Использование констант в AngularJS

http://stackoverflow.com/questions/17383611/angularjs-getting-module-constants-from-a-controller Интересная статья о том, чем отличаются и для чего нужны разные сущности в AngularJS: http://habrahabr.ru/post/190342/

Проблемы при минификации AngularJS?

Есть такая библиотека для облегчения минификации angularJS — ngmin (https://github.com/btford/ngmin). Я пока не очень рад ее использовать, пока пользуюсь

Bacon.js — FRP на javascript

FRP — Functional Reactive Programming (http://stackoverflow.com/questions/1028250/what-is-functional-reactive-programming/1030631#1030631, хотя читается тяжело). Пришло из Haskell. В чём суть. Функциональное реактивное программирование так же соотносится с обычным слушанием событий, как функциональное программирование с циклами и условными операторами. Т.е. представляет собой декларативный способ работы с событиями. Есть два типа сущностей. Поток (EventStream) Подписавшись на поток, можно слушать все происходящие события …

Read more

Логирование клентских ошибок через сервис

https://www.bugsense.com — дают скрипт (http://www.bugsense.com/releases/html5/1.1/download) и потом можно логировать разные клиентские ошибки (более подробное описание от авторов). Единственный минус — очень платные. Мобильные друзья используют другой сервис — http://try.crashlytics.com/, но для web решения пока нет. Вообще-то я давно писал про то, как можно логировать ошибки (https://blog.bullgare.com/2012/03/%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-js-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5/), но иногда неохота городить огород на серверной стороне, а …

Read more

AngularJS — обновить текущую страницу

http://docs.angularjs.org/api/ngRoute.$route