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



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é aplikace

Vývojařská Plzeň AngularJS

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í.

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

AJAX. Dynamické změny obsahu stránek

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

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

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

RESTful API TAMZ 1. Cvičení 11

Část 1 Moderní JavaScript

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

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

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

NSWI142 Webové aplikace Zkouškový test

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

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

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

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

INFORMAČNÍ SYSTÉMY NA WEBU

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Programování v jazyce JavaScript

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

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

MVVM pro desktop i web

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

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

HMI * nad webovými technologiemi

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika

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

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

VIVO: NOVINKY NA FRONT-ENDU LUNDEGAARD Zdeněk Staněk

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

AngularJS. framework pro moderní webové aplikace. 24.března CZJUG Brno. Milan Víťa

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

HTML - Úvod. Zpracoval: Petr Lasák

(X)HTML, CSS a jquery

Relační vrstva SMB-Síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům.

MODERNÍ WEB SNADNO A RYCHLE

JavaScript 101. "Trocha života do statických stránek"

Úvodem Seznámení s HTML Rozhraní Canvas... 47

MBI - technologická realizace modelu

Vývoj Internetových Aplikací

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Platformy / technologie. Jaroslav Žáček

Web Services na SOAP

Informatika pro moderní fyziky (8) Javascript, CSS - stylování dokumentů, SVG - tvorba obrázků, složitější interaktivní dokument

Tvorba webových stránek

Formuláře. Internetové publikování. Formuláře - příklad

Obsah. SEZNÁMENÍ S HRAMI V HTML Nové funkce HTML Nové funkce CSS

CineStar Černý Most Praha

První kapitola úvod do problematiky

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Kapitola 1 První kroky v tvorbě miniaplikací 11

TNPW1 Cvičení aneta.bartuskova@uhk.cz

Moderní webové aplikace AngularJS

Programování v jazyce JavaScript

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

SUTOL Symposium 2014

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

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

Content Security Policy

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

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

Tvorba webových stránek

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

ZÁVĚREČNÁ STUDIJNÍ PRÁCE dokumentace

Formuláře. Internetové publikování

Úvod do Web Services

Vývoj Internetových Aplikací

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

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Obsah. Úvod Část I Praxí osvědčené postupy. KAPITOLA 1 Vybudování pevného základu Přehled praxí osvědčených postupů...

DEVFEST ANGULAR 2 WORKSHOP. angular.cz

Maturitní otázky z předmětu PROGRAMOVÁNÍ

ANGULAR 2 WORKSHOP. angular.cz

Instalace a konfigurace web serveru. WA1 Martin Klíma

Plánování a vývoj základního frameworku

Informatika pro moderní fyziky (10) složitější interaktivní dokument, získávání informací z webu

Projekt JetConf REST API pro vzdálenou správu

Technologie Java. Jaroslav Žáček

Internetové služby isenzor

KIV/PIA 2013 Jan Tichava

Vývoj Internetových Aplikací

ZP API V1.0 Návod pro vývojáře SW

Knihovna jquery, technologie Ajax a datový formát HTML, XML, JSON a JSONP

CZ.1.07/1.5.00/

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

SYLABUS IT V. Jiří Kubica. Ostrava 2011

Tvorba webu v HTML. Redakční systém. CMS Joomla! Co je Joomla

Tvorba informačních systémů

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

NSWI096 - INTERNET. Úvod do HTML

Michal Augustýn Microsoft Most Valuable Professional

Mobile application developent

Transkript:

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13.5.2015 Webové technologie RIA, JSON, REST, AngularJS

strana 2 RIA - rich internet application chová se podobně jako desktopová aplikace velké množství logiky přeneseno na klienta pozor: nelze přenést vše využití moderních API nebo pluginů přenosy dat na pozadí možnost práce i offline

strana 3 Ukázka sreality.cz zbozi.cz

strana 4 JSON JavaScript Object Notation { nazev: hodnota, cislo: 123, retezec: "text", pole: ["a", "b", 1, 2, ], objekt: { }, }

strana 5 REST - Representational State Transfer čtení, zápis, mazání a aktualizace dat využívá přímo HTTP metody GET POST - vytvoření nové položky PUT - obvykle aktualizace DELETE bezstavový používá XML nebo JSON

strana 6 AngularJS Frontendový framework MVW model-view-whatever Aplikace běží na straně klienta Práce s modelem, šablony Komunikace s modelem pomocí AJAJ ideálně REST

strana 7 AngularJS - proč? nový přístup k tvorbě webových aplikací navržen pro dynamické změny HTML struktury šetří spoustu práce programátorovi je vhodný pro aplikace na statické prezentace je zbytečný (nevhodný)

Angular JS - motivační příklad - kalkulačka strana 8

Angular JS - motivační příklad - kalkulačka strana 9

strana 10 Angular JS - motivační příklad - kalkulačka věnujte pozornost tomu, jak je to napsané v celém kódu není jediný příkaz typu "teď překresli výsledek" vše se hlídá automaticky pokud dodržujeme určitá pravidla

strana 11 AngularJS - nevýhody větší zátěž klienta staré počítače mají problémy staré prohlížeče mají problémy nepodporují nové API (např. history) vyhledávače většinou neumí indexovat dynamický obsah Google ano site:informatika.mendelu.cz

strana 12 AngularJS Aplikace View Kontrolery Služby Direktivy Filtry

strana 13 Angular JS - Aplikace aplikace je kontejner, do kterého registrujeme jmenované komponenty může být složena z modulů var app = angular.module('app', ['modul1', 'modul2']); app.config([function() { }]); app.run([function() { }]);

strana 14 Angular JS - dependency injection každá komponenta aplikace deklaruje své závislosti, když je vytvářena její konkrétní instance, budou jí předány instance služeb apod. var app = angular.module('app', [ ]); app.controller('nazevctrl', ['zavislost', function(zavislost) { zavislost.metoda(); }]);

strana 15 Angular JS - View HTML šablona řídí, který kontroler se spustí obohacená o speciální atributy ng-* ng-app ng-controller, ng-model, ng-bind, ng-bind-html ng-if, ng-repeat ng-show, ng-hide ng-class, ng-style, ng-href, ng-src ng-click, ng-change, ng-submit

strana 16 Angular JS - View <!DOCTYPE html> <html ng-app="app"> <head> </head> <body> <div ng-controller="nazevctrl"> <p ng-repeat="person in people"> {{person.name}} </p> </div> </body> </html>

strana 17 Angular JS - Kontroler JS funkce načte obvykle data z REST API a zajistí jejich předání šabloně pomocí dependency injection získá reference na potřebné služby $scope $http $routeparams

strana 18 Angular JS - Kontroler app.controller('employeesctrl', ['$scope', '$http', function($scope, $http) { $http.get("url").success(function(data) { $scope.people = data.people; }); }]);

strana 19 Angular JS - $scope a $rootscope kontejner propojující kontroler a view $rootscope je v aplikace jen jeden $rootscope.nadpis = " "; $scope.text = " "; $rootscope <body ng-app="app"> {{nadpis}} <header ng-controller="headerctrl"> {{nadpis}} {{text}} </header> {{text}} <!-- nefunguje --> </body> $scope z HeaderCtrl

strana 20 Angular JS - zanoření kontrolerů <div ng-controller="firstctrl"> {{prom}} <div ng-controller="secondctrl"> {{prom}} <div ng-controller="thirdctrl"> {{prom}} </div> </div> </div>

strana 21 Angular JS - Služby singleton pro komunikaci mezi kontrolery pro uložení globálních dat zpřístupnění vlastních knihoven

strana 22 Angular JS - služba $http komunikace pomocí JSON (obousměrně) formát odesílaných dat lze přepnout: app.config(['$httpprovider', function($httpprovider) { $httpprovider.defaults.headers.post["content-type"] = "application/x-www-form-urlencoded"; }]); $http.get(), $http.post(), $http.get( ).success(function() { }).error(function() { })

strana 23 Angular JS - Služby - vlastní app.factory("nazevsrvc",[" ", function( ) { return { vlastnost: [], metoda: function(p) { }, jinametoda: function(pp) { } }; }]);

strana 24 Angular JS - Direktivy stará se o modifikaci DOM využijeme, pokud chceme naprogramovat znovupoužitelnou funkcionalitu framework má mnoho direktiv (HTML atributy ng-*) vlastní direktivy nepojmenováváme ng-* asi nejsložitější část frameworku

strana 25 Angular JS - Direktivy app.directive("nazevdir", [" ", function( ) { return { two-way binding scope: { předání textu nazev: '=', jinynazev: '@', fce: '&' }, reference na funkci }; }]); link: function(scope, element, attrs) { element.addclass(" "); }, jqlite

strana 26 Angular JS - Direktivy - použití app.directive("nazevdir" scope: { nazev: '=', jinynazev: '@', fce: '&' } camelcase prefix data a - mezi slovy <div data-nazev-dir data-nazev="prom1" data-jiny-nazev="{{prom2}}" data-fce="fce1()"> </div>

strana 27 Angular JS - Direktivy můžou mít vlastní kontroler můžou mít vlastní šablonu (soubor) problém s kombinovanými direktivami je nutné napsat direktivu pro obal a pro následníky nastaví se nadřazená direktiva

strana 28 Angular JS - Direktivy a $scope transclude - propojení $scope direktivy a nadřazeného controlleru scope: {} izolovaná scope: true vytvoří vlastní, která dědí z nadřazené scope: false použije nadřazenou (kontroller nebo root)

strana 29 Angular JS - Direktivy a $scope izolovaná scope = - obousměrná synchronizace proměnné @ - pro předání textu & - pro předání funkce scope: { var1: '=', var2: '@', fce: '&' }, link: function(scope) { scope.var1 = "abc"; }, <div data-direktiva data-var1="promenna" data-var2="jen text" data-fce="callme()"> </div>

strana 30 Angular JS - Direktivy a $scope někdy je potřeba hlídat změny proměnné scope.$watch('prom', function(newvalue) { });

strana 31 Angular JS - Filtry pro úpravu výstupu {{'nazev_hlasky' translate}} {{cislo zaokrouhli}} app.filter('imagesmall', function() { return function(file) { return "small.php?&file="+file; }; }); <img ng-src="{{file.png imagesmall}}" />

strana 32 Angular JS - Routing dokáže pro různé URL vybrat odpovídající view a tím i kontroler(y) app.config(['$routeprovider', '$locationprovider', function($routeprovider, $locationprovider) { $routeprovider.when("/", { templateurl: "cesta/k/sablone.html", controller: "NazevCtrl" }); $routeprovider.otherwise({redirectto: "/"}); $locationprovider.html5mode(true); }]); použije history API pro změnu URL

strana 33 Angular JS - Routing - parametry do route je možné zadat i parametry, které předáme kontroleru pomocí $routeparams např. URL: /clanky/123 routa: /clanky/:idclanku /clanky/:idclanku?

strana 34 Angular JS - View s routerem <!DOCTYPE html> <html ng-app="app"> <head> </head> <body> <div ng-view></div> </body> </html>

strana 35 Angular JS - Routing app.config(['$routeprovider', function($routeprovider) { $routeprovider.when("/route/:param", { templateurl: "cesta/k/sablone.html", controller:, "paramctrl" }); $routeprovider.otherwise({redirectto: "/"}); }]); app.controller("paramctrl", ["$routeparams", function($routeparams) { console.log($routeparams.param); }]);

strana 36 Angular JS a knihovny Obsahuje jquery Lite použije se, pokud není dostupné jquery hlavní využití v direktivách nepodporuje CSS selektory moderní prohlížeče přes queryselector Příliš se nesnese s Bootsrapem, jquery UI apod. dynamické změny HTML kódu nejsou tyto knihovny schopné zpracovat

strana 37 Angular JS - události zachycení: $scope.$on("nazev", function(e, ) {}) vyslání směrem nahoru $scope.emit("nazev", ); vyslání směrem dolů $scope.broadcast("nazev", );

strana 38 Angular JS - časovač var delay = 1000; //v ms //jednou var timer = $timeout(function() { }, delay); //opakovane var timer = $interval(function() { }, delay);

strana 39 Angular JS - aktualizace dat po události vyvolané mimo ng-* domnode je napr. prvek mimo ng-app nebo mapa apod. domnode.onclick = function(event) { scope.$apply(function(newvalue) { }); };