eleks.comeleks.com
JAVA SCRIPT FRAMEWORKS
На прикладі Angular 2
Що нас чекає
• Короткий огляд Java
Script Frameworks
• Огляд Angular 2
• Розбір основних
компонентів Angular 2
• Demo
JS Frameworks. Навіщо вони вам?
• Client-side має більше
«відповідальності» ніж
колись
• Фреймворк надає
інфраструктуру для
розробки (очевидно)
• Фреймворк пропагує
певні підходи і стандарти
• Він може спростити
життя розробника
Найпопулярніші JS Frameworks
Angular
Переваги та Недоліки
• Плюси
 Швидкодія
 Архітектурне рішення
 TypeScript
 Простота вивчення
 Велике ком’юніті
 Підтримка Google
o Мінуси
o Специфічний синтаксис
темплейтів
o TypeScript
На чому писати
Архітектура
Component – це основний структурний блок
додатку на Angular. Додаток можна уявити,
як набір компонентів, які взаємодіють між
собою.
Структура Компонента
Template
• Відображення
з HTML
• Прив’язка
даних
• Використання
директив
Class
• Клас на
TypeScript
• Логіка програми
• Властивості та
методи
Metadata
• Дані для самого
Angular
• Декоратор для
класу
Код Компонента
Шаблон
Шаблон – це
відображення,
описане на HTML з
використанням
виразів прив’язки
даних та директив.
Прив’язка Даних
Директиви
Вбудовані директиви
• ngIf
• ngFor
• ngSwitch
• ngClass
• ngStyle
Сервіс – це простий клас, який призначений
для виконання кокретних дій. Він може
повторно застосовуватись, використовується
компонентами, але незалежний від них.
Сервіси та DI
Для DI сервіса:
• Створити клас
сервіса
• Зареєструвати
сервіс в контейнері
• Заін’єктити в
компонент через
конструктор
Комунікація із сервером
Для комунікації
використовується
HTTP Client, який
входить в склад
фреймворка і
працює на основі
Observables
https://angular.io/docs/ts/latest/guide/server-communication.html
Роутінг
Routing – забезпечує
процес переходу
юзера між
функціональними
елементами SAP.
Використовується
для навігації по
додатку. https://angular.io/docs/ts/latest/guide/router.html
Що не потрапило в презентацію
• Pipes
• Angular Lifecycle
• @Input, @Output та деталі про Nested
Components
• Та багато іншого
Корисні Посилання
• Офіційна документація
https://angular.io/docs/ts/la
• Хаб з ресурсами
http://www.angular2.com/
Thanks! Any Questions?
P.S.
До наступного юніта вам потрібно
інсталювати:
Лекція 1: JDK; Eclipse IDE
Лекція 2-5: Android Studio; Android SDK;
Genymotion emulator: install and download any
device image (or a couple: phone and tablet).
eleks.com
Inspired by Technology.
Driven by Value.

Angular. presentation

Editor's Notes

  • #4 Функції client-side стали ширшими. Тепер досить велика частина логіки виконується на client-side, що дозволяє зменшити навантаження на сервер. Проте разом з тим зростає відповідальність клієнтської сторони Фреймоврки надають нам інфраструктуру для розробки, беручи на себе роботу над основними рутинними і не зовсім завданнями, з якими доводиться працювати Використання фреймворка так чи інакше спонукає використовувати певні підходи, які закладені розробниками фреймворка. З одного боку це робить код уніфікованим і «інтернаціональним», з іншого – в специфічних випадках це може заважати Оскільки фреймворки перебирають на себе багато роботи, яку засвичай потрібно писати самому – кількість коду зменшується. А менше коду банально легше супортити, поклавшись на добре протестований фреймворк.
  • #5 Статистика по використанню найбільш трендових JS Frameworks. Статистика взята із сайту http://trends.builtwith.com/ Описано відсоток сайтів, на яких використовується той чи інший фреймворк. Для Angular враховане використання 1-ої версії фреймворка. На слайді не згадано багато інщих фреймворків., зокрема: Ember, Knockout, Цікава порівняльна характеристика є в статті: https://www.airpair.com/js/javascript-framework-comparison#6-1-the-good-parts
  • #6 Надалі більш детально розглянемо Angular і принципи його роботи. Розглядатимемо саме його, тому що він активно використовується на ринку і розвивається інтенсивними темпами. А також з ряду причин, які розглянуті на наступних слайдах.
  • #7 Переваги Angular: Швидкий і зручний механізм привязки даних, який в Angular 2 зазнав значної трансформації і тепер в рази швидший і оптимізований. Побудова самого фреймворку, і пропонована схема розробки є досить зручною та зрозумілою Рекомендовано використовувати TypeScript, який є субєктивно досить зручним і привітнішим для людей, які прийшли з бек-енду Має середню складність для вивчення. З ним легко почати працювати, проте на розбрі всіх механізмів роботи потрібен час. Ангулар має велику підтримку спільноти програмістів. Зокрема велика кількість запитань вже вирішено на Stack Overflow і зважаючи на популярність фреймворка 2-га версія в цьому плані не підкачає Ангулар розробляється під крилом Google, що не можна ігнорувати. Недоліки: Специфічний синтаксис побудови темплейтів. Є досить багато всяких різних правил, притаманних суто Ангулару Для людей, які прийшли з фронт-енду TypeScript може видатись незвичним з своїм тайп-чекінгом і іншими особливостями
  • #8 На попередньому слайді згадувався TypeScript. Ангулар пропагує використання його для побудови додатків. Наразі більшість документації описана саме для нього. Проте створювати додатки можна і з використанням інших мов: ES (5, 2015) Dart TypeScript
  • #9 Класична хай-левел архітектура фреймворка, якою її показує сам Google. Кожен із компонентів детальніше буде розглянутий на наступних слайдах. Загалом архітектуру можна описати наступним чином: В центрі стоїть компонент, який взаємодії із відображенням (темплейтом) використовуючи механізми прив’язки даних. Компонент може використовувати різні сервіси, яким він делегує більшість завдань, які пов’язані із маніпуляціями над даними (калькуляція, валідація, взаємодія із сервером тощо) Для того, щоб компонет міг взаємодіяти із сервісами використовується механізм Dependency Injection, який реалізовується з допомогою Injector-а Для розробки темплейта використовуються спеціальні директиви, які дозволяють спростити деякі механізми маніпуляції над відображенням
  • #11 Структуру компонента можна описати як взаємозв’язок між Темплейтом і Класом, який містить метадані. Роль темплейта – надати відображення, в якому описана привязка даних між кодом і Темплейтом Роль класа – вміщувати логіку репрезентації даних і їх обробки Метадані – надають сервісну інформацію про компонент, яка використовується Ангуларом для побудови алпікейшина.
  • #12 Структорний розподіл із попереднього слайду в коді на TypeScript виглядає так, як це показано на даному слайді.
  • #13 Шаблон можна описати, як відображення деякого компонента, яке створене з допомогою HTML. При цьому використовується спеціланий синтаксис для забезпечення роботи механізму привязки даних. Привязка даних реалізує обмін інформацією між елементами DOM та логікою компонента на JS. Окрім того для реалізації певних комон задач використовуються директиви, які надають додаткові можливості маніпуляції над елементами сторінки.
  • #14 В Angular 2 реалізовано 4 типи прив’язки даних. Інтерполяція: тип прив’язки, який працює в одному напрямку (з коду в темплейт). Дуже грубо кажучи він дозволяє привязати значення якоїсь змінною до вмісту якогось HTML елемента. При цьому зміна значення змінної в коді призводить до оновлення HTML елемента Прив’язка подій: дозволяє визначити деякий метод, який є в коді компонента, як обробник події, яка стається на HTML-елементі. Такий тип працює однонаправлено – від темплейта до коду. Прив’язка властивостей: чимось схожа на інтерполяцію, проте більш специфічна. Дозволяє прив’язати властивості HTML-елемента до деякого об’єкта в коді. Працює як і інтерполяція однонаправлено – від коду до темплейта Двостороння прив’язка: найчастіше використовується для елементів вводу. Наодмінно від інших працює двонаправлено. Для прикладу, якщо в юзера є текстове поле, то зміни, які він вводить в нього, автоматично синхронізуються з кодом. І навпаки, якщо змінна, яка прив’язана до текстового поля, змінилася з коду – відображення теж міняється.
  • #15 Директиви дозволяють нам розширити можливості побудови HTML. Ангулар надає наступні вбудовані директиви: ngIf – показати елементи, якщо виконується умова ngFor – показати наступне відображення для всіх елементів всередині деякої колекції ngSwitch – в залежності від значення ключа показати те чи інше відображення ngClass – застосувати клас, якщо виконуються деякі умови ngStyle – застосувати стиль, якщо виконуються деякі умови Окрім того можна і треба створювати свої кастомні директиви.
  • #17 В Angular продумано використання механізму інєкції залежностей, що є дуже зручно і дозволя використовувати принцип IoC. Для реалізації DI сервіса потрібно: Створити сам сервіс і позначити його декоратором Injectable Зареєструвати сервіс в контейнері компонента Виконати механізм DI через конструктор в компоненті, який використовує сервіс
  • #18 Код, який демонструє основні кроки по реєстрації і інєкції залежностей в коді.
  • #19 Більше детально про комунікацію через HTTP можна почитати за посиланням на слайді. Ця тема надто широка, щоб розглянути її в межах презентації.
  • #20 Документація по роутінгу все ще розробляється, тому можуть бути деякі зміни.
  • #21 Angular – це великий та потужний фреймворк, який має багато можливостей. Віндповідно - описати його за одну лекцію просто не можливо. В презентації розкриті самі основні елементи фреймворка. На слайді продемонстровані базові речі, які не увійшли в цю презентацію.
  • #24 Нагадування про те, що потрібно доставити пред лекціями Java і Android.