Про себе
Розробляв підтримуваві розвивав:
● 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 ;(
● Непередбачувані помилки та підводні камені
Причини для переходу
1.Багато взаємодій з сервером
2. Складний користувацький інтерфейс
3. Багато компонентів та взаємозв’язків
між ними
4. Складна предметна область
5. Необхідно мати хорошу основу для
майбутніх веб-додатків
13.
Причини для непереходу
●Швидке прототипування
● Розробка ігор
● Розробка веб додатків які потребують
оптимізацій щодо швидкості (WebGL,
Realtime rendering, VNC)
● Залежність логіки від Require.js або
YepNope
● Коли “легковісність” критична
Предметна область
● Директиви- окремі елементи 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!