2. Про себе
Розробляв підтримував і розвивав:
● HTML5 Games
● Mobile Web applications
● Desktop web applications
Skype: pavlo.yuriychuck
Twitter: pavlo_yuriychuck
3. Angular.js з точки зору менеджера
● Один постачальник - Google
● Покриває широкий спектр задач
● Спільнота:
○ StackOverflow
○ Google Groups
○ Github issues
● Документація:
○ Книги, туторіали, статті, блоги, відео
● Реклама
● Репутація: Google Closure && GWT
4. Angular.js з точки зору програміста
● Двостороннє зв’язування даних та
представлення
● Модульність
● Багата функціональність “з коробки”
● Інфраструктура веб-додатку
● Документація
● Щось дуже нагадує Adobe Flex ;)
5. Аналіз: за
● Те чого завжди не вистачало у інших
фреймворках: broadcasting, services
● Багато засобів для реалізації
предметної області
● Співмірні з jQuery stack можливості
щодо Ajax. Більш строга модель
Deferred
● Dependency injection
6. Аналіз: проти
● Важка та відносно монолітна. Модульність тільки
з версії 1.2
● Складність вивчення
● Документація - більшість правди ви знайдете в
коментарях до статей ніж у самих статтях ;(
● Пошук помилок та відлагодження займають
багато часу. Малоінформативні повідомлення про
помилки.
● Знову відвикати від Require.js ;(
● Непередбачувані помилки та підводні камені
12. Причини для переходу
1. Багато взаємодій з сервером
2. Складний користувацький інтерфейс
3. Багато компонентів та взаємозв’язків
між ними
4. Складна предметна область
5. Необхідно мати хорошу основу для
майбутніх веб-додатків
13. Причини для непереходу
● Швидке прототипування
● Розробка ігор
● Розробка веб додатків які потребують
оптимізацій щодо швидкості (WebGL,
Realtime rendering, VNC)
● Залежність логіки від Require.js або
YepNope
● Коли “легковісність” критична
15. Предметна область
● Директиви - окремі елементи UI, робота з DOM
● Фільтри - довільні перетворювачі даних
● Провайдери - фабрика яку можна налаштувати
до використання
● Сервіси - бізнес логіка
● Фабрики - універсальне джерело даних,
пристосоване для спільного використання в інших
сервісах
● Декоратори - модифікація поведінки існуючих
сервісів чи фабрик
16. Поради
● Варто одразу писати код minsafe, щоб не було
проблем з мініфікацією коду
● Directives для роботи з DOM, Великі шматки
розмітки у partials/views
● Не виконуйте важких операцій при роботі з
даними які прив’язані до view.
● Якщо у вас одні і ті ж дані представляються у
різних частинах view - зробіть їх копію за
допомогою фільтрів
17. Поради
● $apply() не панацея, її варто використовувати
лише в директивах та тестах
● Забудьте про $.ajax - є $http
● Забудьте про $.Deferred - є $q
● Якщо в контролері з’являються filterByXXX,
groupByYYY, sortByZZZ - виносьте їх одразу у
фільтри
● ng-repeat та ng-include створюють власну область
видимості $scope
18. Ознаки того, що ви на правильному шляху
● Бізнес логіка не сконцентрована в
контролерах
● Ви не використовуєте плагіни jQuery
для всього підряд і вам достатньо jqLite
● Ви можете оцінювати час на розробку
та тестування
● Ви пишете код в термінах предметної
області
19. Перехід
● Навчальний курс
● Youtube канал
● Angular.js recipies - сама корисна книга
;)
● Angular services - що і для чого в
Angular
● Angular scopes - області видимості
● Організація коду
20. Humor
// Insanity Warning: scope depth-first traversal
// yes, this code is a bit crazy, but it works and we have tests to prove it!