Angular 2: Mi van a csokoládésdobozban?

Slides:



Advertisements
Hasonló előadás
HTML enhanced for web apps! Fodor Krisztián
Advertisements

Windows Virtualizáció
Richter Elek Technikai terméktámogatási felelős Microsoft Magyarország.
A Windows Azure egy skálázható számításifelhő-platform, amelyet a Microsoft hosztol a világ több pontján lévő adatközpontjaiban. Az Azure egyszerű,
KEVESEBB FELÜGYELET ÚJ ÜZLETI MODELLEK NAGYOBB TERMELÉKENYSÉG.
... manapság BizSpark WebsiteSpark Empower for ISVs MAPS (Web Solutions Toolkit ) Microsoft Partner Network Regisztrált szintCertified és Gold Certified.
Licencelés Kovács Nóra Ker-Soft Kft.
Nagyvállalati-szintű szervermegoldások - kis- és középvállalatoknak
Videó kártyák újdonságai Készítette: Villás Tibor.
Windows Vista, 2007 Office Rendszer, Exchange Server 2007 termékbejelentés Vityi Péter Ügyvezető igazgató Microsoft Magyarország kft.
Az MVC tervezési minta 2. előadás.
„AZ IT MAGÁN ÉS NYILVÁNOS ÉLETE” Avagy hogyan születik a BI iránt igény az IT üzemeltetésben Benkovics Viktor Vezető tanácsadó Microsoft Magyarország –
Windows Azure Infrastruktúra és platform a felhőben
Essential Business Server 2008 Szentgyörgyi Tibor NetAcademia oktatóközpont A nagytestvér.
Lehetőségek, felhasználható eszközök, eddigi tapasztalatok
Árvai Zoltán Számalk Oktató központ.
Felhasználói adatok és fiókok migrálása az (USMT) 4.0 segítségével
A Windows 7 automatizált telepítése Windows AIK használatával
A CRM bevezetési projektek sajátosságai
A VoIP és a Microsoft Dynamics CRM Kondás János MCSA, MCSE, MCT System Builders Kft.
Nagy Levente Szoftverfejlesztési Szakértő Microsoft Magyarország Munkafolyamatok a 2007-es Office Rendszerben.
Egy ISA szerver naplója Sárosi György Terméktámogatási Tanácsadó Microsoft Magyarország.
Nagy Levente Microsoft Magyarország
Google earth és a térinformatika kapcsolata
Szülői feladatok és eszközök a mai internetes és mobil fenyegetések világában Rakoncza Zsolt Norton lakossági és kisvállalati üzletágvezető.
A felhő az üzleti vezető, a fejlesztő és az üzemeltető szemével A vállalati számító- központ kiterjesztése a felhőbe Biztonság és üzemeltetés a felhőben.
Lync 2010 újdonságok Microsoft Solution Partner Klub 2011 február 17 Szaniszló Tibor Termékmenedzser – Egységes Kommunikáció.
Ittzés Zsigmond Budapest Airport IT Infrastruktúra manager
Microsoft CRM online Strén András
Taletovics Márk Microsoft Magyarország. Mi van a csomagban?
Kőnig Tibor főmérnök Microsoft Magyarország
Bátyai Krisztián NetAcademia Oktatóközpont oktató, fejlesztő MCT, MCPD
Egy GAZDAG HIBAJELENTÉS elég információt tartalmaz ahhoz, hogy AZONNALI LÉPÉSEKET lehessen tenni, a javítás érdekében.
Rendelkezésre álló erőforrások pontos ismerete Kiosztott feladatok közel „valósidejű” követése Átláthatóság Tervezési folyamatok támogatása.
© 2008 IBM Corporation Költség csökkentés az IBM Cognos 8.4 BI csomagjának új funkcióival Lengyel Kornél.
Budai Péter Szakmai és biztonsági vezető Microsoft Magyarország.
Visual Basic 2008 Express Edition
Rugalmas, moduláris felépítés Rugalmas telepítés Jól tervezhető szerepkörök Folyamatos rendelkezésre állás Egyszerű felügyelet Elérés bárhonnan Postafiók.
A Microsoft Üzleti Intelligencia megoldása és platformja
Blog Fülöp Dávid MCT, MCPD Egy blog sémája Use Case-ek – Blog áttekintése – Egy blogpost megtekintése – Blogpost írása – Blogpost.
Webes alkalmazásfejlesztés
Egy évtized eredményei - avagy mit adhat nekünk egy új platform?
Christopher Chapman | MCT Content PM, Microsoft Learning, PDG Planning, Microsoft.
Ismerkedés az Active Directory-val
Vállalati infrastruktúra, mely minden igényt kielégít Felhasználóbarát eszközök és élmények.
IVSZ Konferencia 2006.december 1. Veres Zsolt KKV Kereskedelmi Igazgató SAP Közép Európa.
The information contained in this document represents the current view of Microsoft Corp on the issues discussed as of the date of publication. Because.
Kiss Tibor System Administrator (MCP) ISA Server 2006.
Farkas Bálint | Technical Evangelist | Microsoft.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
Az {SQL Server 2008} Integration Services és Analysis Services újdonságai
Híd a Windows folyón Balint Farkas Technical Evangelist Microsoft
EX-LH, Ex Libris bemutatkozás
Skype for Business bevezetés és alközponti összeköttetés kialakítása
Az Ön weboldala már Windows 10-kompatibilis?
Farkas Bálint | Technical Evangelist | Microsoft
TechReady 22 6/25/2018 © 2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Blockchain…de mi hajtja?
WS16 TP4 újdonságok Gál Tamás Budapest Sysadmin Meetup
Tömegközlekedés, közszállítás Nagyváradon
A nagyváradi villamoshálózat modernizációjának finanszírozása
A nagyváradi villamoshálózat modernizációjáról
Microsoft Azure Marketplace & Microsoft Azure Certified program
9/8/2018 9:39 PM Despre modernizarea sistemului de transport public urban cu tractiune electrica Csuzi István director general ORADEA TRANSPORT LOCAL.
A nagyváradi villamosok megbízhatósági modellezése
Többplatformos appfejlesztés Xamarinnal és Visual Studióval
„Agilis-e vagy?” – egy váltókezelő naplója
HWSW Meetup – Felhő és ami mögötte van
Microsoft eszközpályázat
Build /24/2019 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION.
Előadás másolata:

Angular 2: Mi van a csokoládésdobozban? 6/26/2018 Angular 2: Mi van a csokoládésdobozban? István Novák Agile coach, architect Adaptive Consulting www.adaptiveconsulting.hu, istvannovak.net A webes technológiákra épülő alkalmazások építése népszerű, a fejlesztők tömegeit vonzza. Az elmúlt néhány évben számtalan technológia, könyvtár, keretrendszer megjelent, és ezek a hozzájuk kapcsolódó közösségek munkájának köszönhetően fejlődnek. A Google egyik ilyen technológiája az Angular, amely 1.x változatát sokat használják. Az elmúlt közel három évben a Google sok energiát ölt a keretrendszer egy új változatának kidolgozásba. Ebben az előadásban azokra dolgokra fókuszálok, amelyek segítenek megérteni, hogy mit kínál az Angular újabb változata, és hogyan tudjátok a képességeit használatba venni. © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Novák István Agilis fejlesztőcsapatok fejlesztője Microsoft MVP, Angular 2 Core Documentation Team member Hosszútávfutó, a könnyűbúvárkodás megszállottja Az Unraveling Series (Kindle Books) sorozat szerzője Novák István vagyok, örülök, hogy itt lehetek közöttetek. Munkám jelentős részében az agilis fejlesztés értékeit adom át azoknak a csapatoknak, akikkel együtt dolgozom, vagyis fejlesztőket fejlesztek. Tizedik éve vagyok Microsoft MVP. Három éve publikálok webes technológiákkal foglalkozó könyveket az Amazonon. Ennek kapcsán az elmúlt évben négy hónapig az Angular 2-es csapat tagja is voltam – a Core Documentation teamben dolgoztam.

Angular 2 – „State of Union” Jelenlegi változat: 2.2.0 Rendering: ötször gyorsabb, mint az Angular 1 Letöltött scriptek mérete (45K) < Angular 1 TypeScripttel fejlesztve Az Angular 2 végleges változata idén szeptember 14-én jelent meg, jelenleg a 2.2.0 változatnál járunk. A Google ezzel az új változattal áttért a szemantikus verziószámozásra: az első szám változása komolyabb bővülést, akár képességtöréseket is bevezető újításokat jelez. A második szám változása képességekkel való bővülésre utal, a harmadik számjegy pedig a patchek, karbantartások eredményét jelzi. Az Angular 2 egyik fontos célkitűzése volt a teljesítmény növelése, ennek legfontosabb eredményeit számokba öntve láthatjátok a dián. Számunkra fejlesztőként az egyik legfontosabb dolog, hogy az Angular csapat a TypeScripttel fejleszti termékét. Ez a programozási nyelv egyszerűvé teszi az ES6 képességek alkalmazását, könnyebbé, simábbá téve az alkalmazások készítését.

Egy Angular 2 alkalmazás anatómiája Adatot ad át a HTML elemeknek A komponens nézetét definiálja (HTML) Template Event Binding Property Binding Az interakciókat műveletekre és adatmódosításra fordítja Service Metadata Az Angular előző változata alapvetően az MVC modellre épülve segítette a webes alkalmazások készítését, Azért, hogy egy darabka UI és a hozzátartozó logika megvalósítását kézben tarthassa, több alapelemmel dolgozott, mint például a „directive”, „controller”, „scope”. Az Angular új változata a fejlesztőre bízza, hogy milyen architekturális modellt használ, legyen az továbbra is az MVC vagy akár reaktív megközelítés, flux, redux, és így tovább. A korábbi alapelemek egy jelentős része szükségtelenné vált. Az Angular 2 központi fogalma a komponens. Egy komponens azért felelős, hogy a felhasználói felület egy részét (ezt a saját terminológiájában „view”-nak nevezzük) megvalósítsa, vezérelje. Egy komponenst egy ES6 osztály definiál. A komponensek megjelenését template-ek definiálják. Ezek általában HTML markupot jelentenek. Az Angular 2 építőelemeit ES6 class-ok reprezentálják a kódban. Ezeket az osztályokat soha nem kell a fejlesztőnek példányosítania, ezt a szerepet az Angular magára vállalja. Azért, hogy a keretrendszer tisztában legyen az egyes osztályok szerepével és a megfelelő módon használja azokat az alkalmazásban, az osztályokat metaadatokkal látjuk el. A keretrendszer az ún. „property binding” mechanizmust használja arra a célra, hogy a UI modelljében lévő véltozások eljussanak a felhasználói felületre. Ennek a mechanizmusnak a párja az „event binding”, amely a rendszereseményeket és a felhasználói akciókat a modell állapotának megváltoztatására használja fel. Az általános célú értékeket, műveleteket szolgáltatásokba zárhatjuk és azokat kívülről, deklaratív módon injektálhatjuk az azokat használó komponensekbe. Meghatározza a class feldolgozásának módját Component A UI egy részét vezérli, egy ES6 class reprezentálja Egy class jól körülhatárolt funkcionalitással Dependency Injection

Angular modulok (NgModule) Az alkalmazások modulárisak Module → összetartozó alkalmazáselemek Imports → felhasznált modulok Exports → külső elérhetőség definiálása Declarations → Belső összefüggések Alkalmazás Root Module Feature Module Shared Module <<Lazy>> Module Szoftvereink méretének növekedését a modularizálás segítségével tudjuk követhetővé tenni: egy nagy alkalmazást önmagukban értelmes egészként kezelhető, tesztelhető modulokból komponáljuk. Ezt a megközelítést használja az Angular maga is. Egy Angular modul (NgModule) az összetartozó alkalmazáselemeket (ES6 osztályok) írja le, definiálva a függőségeket és a külvilág számára felkínált építőelemeket. Minden alkalmazás rendelkezik egy ún. „root module”-lal, amely az alkalmazás indításához szükséges elemeket tartalmazza. A modularizálás lehetővé teszi, hogy termékképességek szerint definiáljunk modulokat, illetve megosztott modulokat és készíthessünk, amelyeket akár az alkalmazáson belül használhatunk fel, akár third-party modulként kínálhatunk fel más alkalmazások számára. A keretrendszer lehetővé teszi a modulok „lusta”, vagyis csak első használatkor való betöltését. A TypeScript egyszerűvé teszi ezek használatát

AppComponent DiveLogComponent DiveFilterPipe CardComponent

Default route („/”) „/add” route „/divelogs” route EditDiveComponent 6/26/2018 Default route („/”) „/add” route „/divelogs” route EditDiveComponent „/edit/:id” route © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

card.component.ts @Component({ selector: 'card', templateUrl: 'app/divelog/card.component.html', styleUrls: ['app/divelog/card.styles.css'] }) export class CardComponent { @Input() entry:DiveLogEntry; @Output() onSelect = new EventEmitter<DiveLogEntry>(); selectEntry(event: MouseEvent) { event.preventDefault(); event.cancelBubble = true; this.onSelect.emit(this.entry); }

6/26/2018 card.component.html <a [routerLink]="['/edit', entry._id]" class="hidelink"> <div class="card"> <button class="btn btn-small pull-right" (click)="selectEntry($event)"> Select </button> <h3>{{entry.site}}</h3> <h4>{{entry.location}}</h4> <h2>{{entry.depth}} meters | {{entry.time}} min</h2> <h4>{{entry.date}}</h4> </div> </a> © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

6/26/2018 dive-log.component.html <div class="row" style="margin-top: 12px;"> <div class="col-sm-4" *ngFor="let dive of dives | diveFilter:searchBox.value"> <card [entry]="dive" (onSelect)="displaySelected($event)"> </card> </div> © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

dive-log.module.ts import ... @NgModule({ imports: [ 6/26/2018 dive-log.module.ts import ... @NgModule({ imports: [ BrowserModule, HttpModule, RouterModule, ReactiveFormsModule ], declarations: [ DiveLogComponent, CardComponent, DiveFilterPipe, DiveEditComponent providers: [LogbookService] }) export class DiveLogModule { } © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

app.routes.ts import ... const routes: Routes = [ 6/26/2018 app.routes.ts import ... const routes: Routes = [ { path: 'divelogs', component: DiveLogComponent }, { path: 'edit/:id', component: DiveEditComponent}, { path: 'add', component: DiveEditComponent}, { path: '', pathMatch: 'full', component: WelcomeComponent } ]; export const routingModule = RouterModule.forRoot(routes); © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

logbook.service.ts @Injectable() export class LogbookService{ 6/26/2018 logbook.service.ts @Injectable() export class LogbookService{ private BACKEND_URL = 'http://localhost:3000/api/dives'; constructor(private _http: Http) { } getDives(onSuccess: (data: DiveLogEntry[]) => void, onError? : (error: any) => void) { this.executeAsync( this._http.get(this.BACKEND_URL), onSuccess, onError); // ... © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Az Angular 1 célkitűzései Keretrendszer, mely egyszerűbbé teszi a fejlesztést Alkalmazások létrehozása rövidebb idő alatt Négy évvel ezelőtt az Angulae 1 tervezőcsapatának fókuszában egy olyan keretrendszer létrehozása állt, amely egyszerűbbé teszi a webes alkalmazások fejlesztését, és jelentősen rövidíti a létrehozásukhoz szükséges időt.

Teljes alkalmazásfejlesztési platform kiépítése Az Angular 2 küldetése Teljes alkalmazásfejlesztési platform kiépítése Az Angular 2 ennél sokkal messzebbre kíván menni! A csapat nem egyszerűen egy új keretrendszert igyekszik alkotni, hanem az Angular 2-t egy teljes fejlesztési platformmá kívánja alakítani. Ahhoz, hogy megérthessük, mit is jelent a „platform”, nézzük meg annak alapvető építőelemeit!

Metaadatokat ad a JavaScript/TypeScript kódhoz A platform építőkövei Segítségével az Angular hatékonyabban tudja a változásokat érzékelni és a UI-t újrafesteni. Metaadatokat ad a JavaScript/TypeScript kódhoz Egyszerűbben használható mint az Angular 1-ben, engedélyezi a„lazy loading” használatát Az Angular alapját három építőelem jelenti. A Dependency Injection – amelyet már a demóban is megmutattam, sokkal egyszerűbben, intuitívabban használható, mint az előző Angular változatban. A dekorátorok biztosítják, hogy a keretrendszer metadatok segítségével kapcsolja össze az egymással együttműködő ES6 osztályokat. Már korábban is említettem, hogy a felhasználói felület megjelenítése kb. ötszörösére gyorsult. Ez a „zones” modul érdeme. A „zones” egy olyan alacsony szintű modul, amely lehetővé teszi, hogy az Angular felismerhesse a felhasználói felület mögött lévő adatok változását, és ezeknek megfelelően hatékony módon ütemezze a UI frissítését. Dependency Injection Decorators Zones

A platform építőkövei i18n Angular CLI Language Services Augury (Chrome Plugin az Angular nyomon követéséhez) Animation Angular Material Mobile Toolkit Angular Universal (Angular a szerveren) Ezekre az alapvető komponensekre építi az Angular a működését alapvetően meghatározó modulokat. Az egyik legfontosabb a compiler, amely az offline fordítást is lehetővé teszi. Ez az építőkő biztosítja, hogy a keretrendszer eredeti, kb. 170KByte-os méretét kb. 50KByte-ra sikerült redukálni. A „zones”-nak köszönhetően a változások észlelése kb. tízszer gyorsabb lett, mint a korábbi Angular változatban. Az új rendering engine nemcsak hogy ötször gyorsabb az elődjénél, de előzetes (pl. szerveroldali) renderinget is engedélyez. A felületet nemcsak HTML-ként képes létrehozni, de pluginek segítségével akár natív mobilos felületet vagy pl. XAML-t is képes kibocsátani. A csapat sok könyvtárat és eszközt épített ezekre az alapvető komponensekre; ezekből a dián hatot helyeztem el, és háromról szeretnék külön is említést tenni. Az Angular Universal lehetővé teszi, hogy a megjelenítendő UI első renderelését a szerver oldalon végezzük el. Az Augury segítségével az Angular alkalmazást a böngészőben követhetjük nyomon. Sok más keretrendszerhez hasonlóan az Angularnak is van saját parancssoros eszköze. Az Angular története nem lehetne teljes az 1.x-ről a 2-es változatra átállás nélkül. Az ngUpgrade modullal lehetőség van arra, hogy ugyanazon az alkalmazáson belül vegyesen használjuk az Angular 1.x és 2 komponenseket. Így módunk nyílik arra, hogy lépésekben migráljuk az alkalmazásainkat. Az upgrade egyszerűsítése érdekében az Angular 2 moduljai úgy épülnek fel, hogy azok egyszerűen használhatók legyene az Angular 1-ből is. Ilyen modulok például a Router, Animations vagy az Internationalization. Router Improved Compiler (Offline fordítás) Change Detection (10x gyorsabb) Pluggable Rendering (5x gyorsabb) ngUpgrade Dependency Injection Decorators Zones

Könnyű elindulni! Minden egy helyen: https://angular.io 6/26/2018 Könnyű elindulni! Minden egy helyen: https://angular.io Teljes build környezetek kiépítése: angular/angular-cli angular/universal AngularClass/angular2-webpack-starter © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Unraveling Angular 2 A mai napon ingyen elérhető: https://www.amazon.com/dp/B01IR7M4EM

Kérdések? Novák István dotneteer@hotmail.com