Ember.js. Jan Kopřiva, Vojtěch Jasný



Podobné dokumenty
Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Proč Angular JS framework?

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

MVVM pro desktop i web

CineStar Černý Most Praha

Vývojařská Plzeň AngularJS

KIV/PIA 2013 Jan Tichava

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

HMI * nad webovými technologiemi

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

RESTful API TAMZ 1. Cvičení 11

Převod LN aplikace do xpages

Novinky v oblasti SAP Mobility. Martin Zikmund, Presale Mobility Platforms Miroslav Řehoř, Account Executive

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

OMO Patterny pro UI. Základy UI - HTML, DOM, JavaScript, CSS. Single Page Application

Ruby on Rails. VŠE, Jiří Hradil

Část 1 Moderní JavaScript

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

IS pro podporu BOZP na FIT ČVUT

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Stručný úvod pro programátory. Michal Kuchta

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Ukládání a vyhledávání XML dat

Nasazení mapového redakčního systému Geocortex v prostředí Moravskoslezského kraje

Formy komunikace s knihovnami

Mobile application developent

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Web frameworks v praxi Tomáš Krátký

Aleš Rybák, Jiří Kadlec. Pluginy budoucnosti

PA165: Úvod do Java EE. Petr Adámek

Analýza a Návrh. Analýza

Web frameworks v praxi

Mediareference Vojtěch

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Historie, současnost a budoucnost ASP.NET

Routery Turris a jejich ekosystém I

Praktické zkušenosti s Azure DevOps

O Apache Derby detailněji. Hynek Mlnařík

Ing. Jiří Fůsek. Základní informace. Pracovní zkušenosti. Vzdělání. 09/ nyní Freelancer. 09/ /2010 Univerzita Tomáše Bati ve Zlíně

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

Stručný obsah. Část I Úvod. Část II Komponenty

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Architektury informačních systémů

Michal Augustýn Microsoft Most Valuable Professional

Pohled pod pokličku spíš než na UI Využití jako platformy pro vývoj aplikací PV219 Jakub Kolář FI MU

Sem vložte zadání Vaší práce.

Vytvořte si vlastní webovou hru

Vývoj univerzálních aplikací pro Windows 10. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

ANGULAR 2 WORKSHOP. angular.cz

MVC (Model-View-Controller)

Domino 10 nové komponenty a související témata (node.js, ES )

Open Source a softwarová integrace. Roman Piontek Director of SaaS Innovation

DEVFEST ANGULAR 2 WORKSHOP. angular.cz

Javascript v Seznamu

Architektury Informačních systémů. Jaroslav Žáček

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

<Insert Picture Here> Vývoj portálových řešení v Javě

Marian Böhmer. Zend Framework. Programujeme webové aplikace v PHP

PŘEDSTAVENÍ - KAREL HÁJEK Nasazení SD ve skupině ČEZ

MBI - technologická realizace modelu

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Architektury informačních systémů

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

EMBARCADERO TECHNOLOGIES. Jak na BYOD chytře? Možnosti zapojování různých mobilních zařízení do podnikových informačních systémů.

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Metodiky pro automatické testování webové aplikace. Ondřej Melkes, Martin Komenda

Architektura aplikace

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Olga Rudikova 2. ročník APIN

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Tvorba informačních systémů

SOAP & REST služby. Rozdíly, architektury, použití

OMO Patterny pro UI. Základy UI - HTML, DOM, JavaScript, CSS. Single Page Application

UJO Framework. revoluční architektura beans. verze

Richtext editory. Filip Dvořák

Platformy / technologie. Jaroslav Žáček

Tisková řešení. EIP přidaná hodnota, kterou přidáte Vy sami. Září Aleš Povolný, Xerox CZ

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Moderní webové aplikace AngularJS

Zápasíme s REST API. Lukáš Křečan REST API Architect GoodData

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Modelování webových služeb v UML

Transkript:

Ember.js Jan Kopřiva, Vojtěch Jasný

Představení Vojta a Honza frontend engineers @ GoodData už nějakou dobu píšeme webové aplikace v JavaScriptu...posledních pár let v Ember.js :-) program: průlet Emberem pro začátečníky a dojde i na live coding demo

Čím se GoodData zabývají Děláme business intelligence v cloudu Vize: BI pro masy Platforma: od uploadu dat k vizualizaci Široce dostupné, proto v JS a v cloudu

Úvod Co jsou to webové aplikace?

Problém: DOM

Moře knihoven a frameworků YUI 2 & YUI 3 jquery Capuccino SproutCore JavaScriptMVC Dojo Toolkit Backbone.js & Spine Knockout Ember Angular Meteor... React + Flux + Immutable.js?

GoodData use case YUI 2 (function() { var dd, dd2, dd3; YAHOO.util.Event.onDOMReady(function() { dd = new YAHOO.util.DD("dd-demo-1"); dd2 = new YAHOO.util.DD("dd-demo-2"); dd3 = new YAHOO.util.DD("dd-demo-3"); }); })();

GoodData use case YUI 3 YUI().use('node', function(y){ var boxes = Y.all('.box-row li'); var handleboxclick = function(e) { boxes.setstyle('backgroundcolor', '#F4E6B8'); e.currenttarget.sethtml('ouch!'); e.currenttarget.setstyle('backgroundcolor', '#C4DAED'); }; Y.one('.box-row').delegate('click', handleboxclick, 'li'); });

GoodData use case YUI3 + custom MVC Ember.js

Co je Ember.js MVC aplikační framework pro tvorbu SPA původ ve SproutCore Tom Dale & Yehuda Katz inspirace Cocoa a Ruby on Rails důraz na konvence opinionated hlavní konkurent angular.js

Hlavní přísady Model Aplikace Router Controller Šablony Komponenty Container Run loop

Ember.Object (model) předek všeho v Ember.js poskytuje: implementaci klasické dědičnosti bindings observers computed properties nutnost používat get/set!

Ember.Application srdce emberové aplikace tvoří jmenný prostor aplikace koordinuje činnost ostatních objektů pomocí routeru a containeru startuje celou aplikaci

Ember.Router bookmarkovatelný stav funkční back a forward v browseru říká jak budou vypadat URLs zachycuje hierarchickou strukturu aplikace v route dochází k nahrání modelu route+controller+view

Ember.Router (příklad) App.Router.map(function() { this.resource(notes, function() { this.route('note', { path: ':title' }); }); }); /notes/moje-poznamka/

Ember.Controller view controller = zobrazovací logika pro view: export default Ember.ObjectController.extend({ duration: function() { var duration = this.get('model.duration'), minutes = Math.floor(duration / 60), seconds = duration % 60; }); return [minutes, seconds].join(':'); }.property('model.duration')

Templaty (handlebars) <ul class="teams"> {{#each team in teams}} <li> {{#linkto "team" team}} {{team.name}} {{/linkto}} </li> {{/each}} </ul>

Ember.View v případě, že chci složitější event handling dom events na app events: export default Ember.View.extend({ click: function() { this.get('controller').send('opendialog'); } });

Ember MVC

Ember.Component znovupoužitelné (self-contained) elementy chování popsáno v JS: {{#each}} {{#blog-post title=title action= delete }} {{body}} {{/blog-post}} {{/each}}

Ember.Container DI export default Ember.ObjectController.extend({ actions: { finditems: function(){ var controller = this; this.store.find('item').then(function(items){ controller.set('items', items); }); } } });

Ember.Container API var logger = { log: function(message) { console.log(message); } } application.register('logger:main', logger, { instantiate: false }); application.inject('controller', 'logger', 'logger:main');

Run loop mechanismus pro seskupení některých drahých operací update DOM efektivní rendering fronty akce, bindingy, render, afterrender naplánovat do fronty lze i vlastní funkce

Ember Data ORM v JS v browseru model store adapter serializer

Ember Data - Model reprezentuje vlastnosti a chování dat uložených na serveru export default DS.Model.extend({ firstname: DS.attr('string'), birthday: DS.attr('date') articles: DS.hasMany('articles') });

Ember Data Store centrální repozitář (cache) modelů v aplikaci přístupný v routách a kontrolerech (DI)

Ember Data Adaptér komunikuje s backendem zajišťuje, aby requesty vyhovovaly API websockets, http,... správný formát url

Ember Data Serializér překládá raw data na recordy normalizuje data do formátu pro Ember Data mění formát klíčů user_name username

Testování důležité při výběru frameworku unit testy end to end testy více unit testů, poměr cca. 5:1 test integrace s backendem - Selenium

Ember CLI nástroj v příkazové stránce standard jak začít s novou Ember app vše je pro vás připraveno: generátory konvence testy a build nástroje

Demo api/friends api/friends/1234 api/v2/friends/1234/articles

Výhody Ember.js silná komunita předvídatelný release cyklus slušná dokumentace jasná struktura umožňuje dalším vývojářům rychle naskočit do projektu efektivní spolupráce s Rails inspirace konkurencí

Nevýhody Ember.js složitá abstrakce komplexita chyby run loop je dobrý sluha, ale zlý pán nestandardní API žádná Ember Data není za ním velká firma menší uživatelská báze učící křivka

Budoucnost Fastboot kontext obsahové weby problém: pomalý start aplikací špatné pro indexování vyhledávači řešení: generovat HTML už na serveru následuje oživení v prohlížeči zdarma pro (skoro) všechny Ember apps

Budoucnost Glimmer inspirace z React.js naivní implementace: vykreslit vždy celou aplikaci znova to ale přeci nejde! ve skutečnosti jde virtual DOM & diff výrazné zlepšení výkonnosti view vrstvy zjednoduší uvažování o celé aplikaci

New Paradigms

React.js JS knihovna pro tvorbu UI view vrstva od Facebooku jiný přístup: přerendruj všechno od začátku rychlý, zatraceně rychlý virtual DOM, diffing, rendering nejen do DOMu ostatní, i Ember (Glimmer), se inspirují

React.js žádné templaty žádná omezení z toho plynoucí bez dalších abstrakcí jen JS, dostatečne mocný na tvorbu UI jednoduché API => netřeba se učit nic moc nového

Reactive Extensions základem observovatelný proud událostí události jsou kolekce rozložená v čase aplikujeme stejné fce map/reduce atd. proudy lze navzájem různě kombinovat jiný způsob jak uvažovat o stavbě aplikace

Webpack pokročilá knihovna pro build aplikace JS aplikace = 1 minifikovaný soubor rozšiřitelnost pomocí loaderů Babel.js transpiler do EcmaScript 6 další možnosti: hotloading

Immutable.js JavaScript datové struktury můžeme měnit Array.push, obj[key] = value, atd. Immutable.js podpora pro immutable struktury v JavaScriptu výhody: bezpečnější kód bez defenzivního kopírování snadné porovnání (referencí)

Děkujeme za pozornost!