SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Перехід на
Angular.JS
Howto
Про себе
Розробляв підтримував і розвивав:
● HTML5 Games
● Mobile Web applications
● Desktop web applications
Skype: pavlo.yuriychuck
Twitter: pavlo_yuriychuck
Angular.js з точки зору менеджера
● Один постачальник - Google
● Покриває широкий спектр задач
● Спільнота:
○ StackOverflow
○ Google Groups
○ Github issues
● Документація:
○ Книги, туторіали, статті, блоги, відео
● Реклама
● Репутація: Google Closure && GWT
Angular.js з точки зору програміста
● Двостороннє зв’язування даних та
представлення
● Модульність
● Багата функціональність “з коробки”
● Інфраструктура веб-додатку
● Документація
● Щось дуже нагадує Adobe Flex ;)
Аналіз: за
● Те чого завжди не вистачало у інших
фреймворках: broadcasting, services
● Багато засобів для реалізації
предметної області
● Співмірні з jQuery stack можливості
щодо Ajax. Більш строга модель
Deferred
● Dependency injection
Аналіз: проти
● Важка та відносно монолітна. Модульність тільки
з версії 1.2
● Складність вивчення
● Документація - більшість правди ви знайдете в
коментарях до статей ніж у самих статтях ;(
● Пошук помилок та відлагодження займають
багато часу. Малоінформативні повідомлення про
помилки.
● Знову відвикати від Require.js ;(
● Непередбачувані помилки та підводні камені
Насправді ;)
Ієрархія проблем
1. Крос-браузерність - jQuery, Underscore, Twitter
bootstrap
2. Додатки
a. MV* - Backbone, Exos.JS, Knockout, Ember, Ext.
JS, Chaplin, Marionette, Can.JS, Thorax
b. Realtime - Meteor, Derby
c. Functional - Bacon.JS
3. Модульність - Require.JS || LMD, Bower,
Component.JS
4. Інфраструктура - Angular.JS, Closure, DojoToolkit
Екосистема
● Yeoman - генератор коду та скелету
програми
● Grunt.js - багатоцілева система збірки
● Bower - пакетний менеджер
● Node.js - серидовище виконання
○ npm - менеджер пакетів для Node
○ nvm - менеджер версій для Node
Екосистема - продовження
● Testing
○ Karma - серидовище для запуску тестів
○ Jasmine - фреймворк для тестування по
замовчуванню
○ Mocha - набагато потужніший фреймворк
○ Chai - бібліотека допущень (Asserts)
○ Sinon.js - бібліотека для заглушок (Mocks,
Stubs)
○ Angular UT && Angular e2e testing
Екосистема
● Docular - генерація документації
● Користувацький інтерфейс:
○ Angular UI
○ Angular Bootstrap
○ LESS || SASS

● i18n:
○ Dynamic locales
○ Angular-translate
○ Angular i18n || Angular i18n build
Причини для переходу
1. Багато взаємодій з сервером
2. Складний користувацький інтерфейс
3. Багато компонентів та взаємозв’язків
між ними
4. Складна предметна область
5. Необхідно мати хорошу основу для
майбутніх веб-додатків
Причини для непереходу
● Швидке прототипування
● Розробка ігор
● Розробка веб додатків які потребують
оптимізацій щодо швидкості (WebGL,
Realtime rendering, VNC)
● Залежність логіки від Require.js або
YepNope
● Коли “легковісність” критична
Код:
●
●
●
●
●
●

Application skeleton
Unit tests - тестування провайдера
Gruntfile - скрипти автоматизації
Bower config - налаштування пакетів
npm config - налаштування пакетів
Karma config - налаштування тестів
Предметна область
● Директиви - окремі елементи UI, робота з DOM
● Фільтри - довільні перетворювачі даних
● Провайдери - фабрика яку можна налаштувати
до використання
● Сервіси - бізнес логіка
● Фабрики - універсальне джерело даних,
пристосоване для спільного використання в інших
сервісах
● Декоратори - модифікація поведінки існуючих
сервісів чи фабрик
Поради
● Варто одразу писати код minsafe, щоб не було
проблем з мініфікацією коду
● Directives для роботи з DOM, Великі шматки
розмітки у partials/views
● Не виконуйте важких операцій при роботі з
даними які прив’язані до view.
● Якщо у вас одні і ті ж дані представляються у
різних частинах view - зробіть їх копію за
допомогою фільтрів
Поради
● $apply() не панацея, її варто використовувати
лише в директивах та тестах
● Забудьте про $.ajax - є $http
● Забудьте про $.Deferred - є $q
● Якщо в контролері з’являються filterByXXX,
groupByYYY, sortByZZZ - виносьте їх одразу у
фільтри
● ng-repeat та ng-include створюють власну область
видимості $scope
Ознаки того, що ви на правильному шляху

● Бізнес логіка не сконцентрована в
контролерах
● Ви не використовуєте плагіни jQuery
для всього підряд і вам достатньо jqLite
● Ви можете оцінювати час на розробку
та тестування
● Ви пишете код в термінах предметної
області
Перехід
●
●
●
●
●
●
●
●

Навчальний курс
Youtube канал
Angular.js recipies - сама корисна книга ;)
Angular services - що і для чого в Angular
Angular scopes - області видимості
Організація коду
Порівняння фреймворків
Майбутнє Angular.JS
Humor
// Insanity Warning: scope depth-first traversal
// yes, this code is a bit crazy, but it works and we have tests to prove it!

Más contenido relacionado

Similar a Павло Юрійчук — Перехід на Angular.js. Howto

'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...OdessaJS Conf
 
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)Exoft LLC
 
AngularJS on Javascript User Group, Lviv
AngularJS on Javascript User Group, LvivAngularJS on Javascript User Group, Lviv
AngularJS on Javascript User Group, LvivDmitriy Hunkin
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii NasinnykFwdays
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов АндрійOleg Nazarevych
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentationeleksdev
 
природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...Andrii Podanenko
 
Aspnet core
Aspnet coreAspnet core
Aspnet coreeleksdev
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівStfalcon Meetups
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівArtem Henvald
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...Fwdays
 
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковJoomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковIgor Bronovskyy
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...Fwdays
 
Kardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessKardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessLviv Startup Club
 
Docsvision Кирильчук Сергій
Docsvision Кирильчук СергійDocsvision Кирильчук Сергій
Docsvision Кирильчук СергійDokymentoznavstvo111
 
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)Drupaltour
 
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019GoQA
 

Similar a Павло Юрійчук — Перехід на Angular.js. Howto (20)

'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
 
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
 
AngularJS on Javascript User Group, Lviv
AngularJS on Javascript User Group, LvivAngularJS on Javascript User Group, Lviv
AngularJS on Javascript User Group, Lviv
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 
природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
 
Golang
GolangGolang
Golang
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
 
Java script + extjs
Java script + extjsJava script + extjs
Java script + extjs
 
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковJoomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...
 
Kardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocessKardash victor kardash unisenderprocess
Kardash victor kardash unisenderprocess
 
Docsvision Кирильчук Сергій
Docsvision Кирильчук СергійDocsvision Кирильчук Сергій
Docsvision Кирильчук Сергій
 
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
 
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
 

Más de GlobalLogic Ukraine

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic Ukraine
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxGlobalLogic Ukraine
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxGlobalLogic Ukraine
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxGlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Ukraine
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"GlobalLogic Ukraine
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic Ukraine
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationGlobalLogic Ukraine
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic Ukraine
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic Ukraine
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Ukraine
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic Ukraine
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"GlobalLogic Ukraine
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Ukraine
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"GlobalLogic Ukraine
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Ukraine
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Ukraine
 

Más de GlobalLogic Ukraine (20)

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptx
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic Education
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
 

Último

Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxOlgaDidenko6
 
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptssuser59e649
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfssuser15a891
 
Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdfhome
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptOlgaDidenko6
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класkrementsova09nadya
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняAdriana Himinets
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptxssuserc301ed1
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»tetiana1958
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxOlgaDidenko6
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxOlgaDidenko6
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняtetiana1958
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...JurgenstiX
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxOlgaDidenko6
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxOlgaDidenko6
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfhome
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяssuser0a4f48
 

Último (17)

Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptx
 
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
 
Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdf
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.ppt
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 клас
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповідання
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptx
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptx
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішення
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентація
 

Павло Юрійчук — Перехід на Angular.js. Howto

  • 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 ;( ● Непередбачувані помилки та підводні камені
  • 8. Ієрархія проблем 1. Крос-браузерність - jQuery, Underscore, Twitter bootstrap 2. Додатки a. MV* - Backbone, Exos.JS, Knockout, Ember, Ext. JS, Chaplin, Marionette, Can.JS, Thorax b. Realtime - Meteor, Derby c. Functional - Bacon.JS 3. Модульність - Require.JS || LMD, Bower, Component.JS 4. Інфраструктура - Angular.JS, Closure, DojoToolkit
  • 9. Екосистема ● Yeoman - генератор коду та скелету програми ● Grunt.js - багатоцілева система збірки ● Bower - пакетний менеджер ● Node.js - серидовище виконання ○ npm - менеджер пакетів для Node ○ nvm - менеджер версій для Node
  • 10. Екосистема - продовження ● Testing ○ Karma - серидовище для запуску тестів ○ Jasmine - фреймворк для тестування по замовчуванню ○ Mocha - набагато потужніший фреймворк ○ Chai - бібліотека допущень (Asserts) ○ Sinon.js - бібліотека для заглушок (Mocks, Stubs) ○ Angular UT && Angular e2e testing
  • 11. Екосистема ● Docular - генерація документації ● Користувацький інтерфейс: ○ Angular UI ○ Angular Bootstrap ○ LESS || SASS ● i18n: ○ Dynamic locales ○ Angular-translate ○ Angular i18n || Angular i18n build
  • 12. Причини для переходу 1. Багато взаємодій з сервером 2. Складний користувацький інтерфейс 3. Багато компонентів та взаємозв’язків між ними 4. Складна предметна область 5. Необхідно мати хорошу основу для майбутніх веб-додатків
  • 13. Причини для непереходу ● Швидке прототипування ● Розробка ігор ● Розробка веб додатків які потребують оптимізацій щодо швидкості (WebGL, Realtime rendering, VNC) ● Залежність логіки від Require.js або YepNope ● Коли “легковісність” критична
  • 14. Код: ● ● ● ● ● ● Application skeleton Unit tests - тестування провайдера Gruntfile - скрипти автоматизації Bower config - налаштування пакетів npm config - налаштування пакетів Karma config - налаштування тестів
  • 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 - області видимості Організація коду Порівняння фреймворків Майбутнє Angular.JS
  • 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!