ROZSZERZENIA BIBLIOTEKI

Podobne dokumenty
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Paweł Rajba,

Szczegółowy opis zamówienia:

Programowanie obiektowe

Programowanie Komponentowe WebAPI

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

OpenLaszlo. OpenLaszlo

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

REFERAT O PRACY DYPLOMOWEJ

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Referat Pracy Dyplomowej

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Patryk Jar Meet.js, Gdańsk 11 marca 2013 r. MODULARNY JAVASCRIPT

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Automatyzacja Testowania w WEB 2.0

Analiza i projektowanie aplikacji Java

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

PRZEWODNIK PO PRZEDMIOCIE

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Wybrane działy Informatyki Stosowanej

Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

DOKUMENTY CYFROWE. Waldemar Korłub. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska

Wybrane działy Informatyki Stosowanej

Forum Client - Spring in Swing

I Podstawy Wprowadzenie do technologii Ajax Żądanie Odpowiedź XML 31 JSON 39

Szkolenie wycofane z oferty

Program szkolenia: JavaScript Craftsmanship

PRZEWODNIK PO PRZEDMIOCIE

Spis wzorców. Działania użytkownika Strona 147 Obsługa większości Działań użytkownika za pomocą kodu JavaScript przy użyciu metod obsługi zdarzeń.

Aplikacje WWW Wprowadzenie

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

O sobie. Adam Kowalski. Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes.

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

WebAii Automation Framework

Przesłanki powstania książki... xvi Dla kogo przeznaczona jest ta książka?... xvi Co znajdziemy wewnątrz książki?... xvii

Podstawy programowania w języku JavaScript

Aplikacja internetowa vs Strona Internetowa. Aplikacja internetowa, (ang.) web application zwana również aplikacją webową, to program komputerowy,

Specyfikacja implementacyjna aplikacji serwerowej

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

Paweł Rajba

PHP: bloki kodu, tablice, obiekty i formularze

Modele danych walidacja widoki zorientowane na model

VectraPortal. VectraPortal. wersja Instrukcja użytkownika Podstawowa funkcjonalność serwisu. [czerwiec 2016]

Aplikacje Internetowe

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Rok akademicki: 2030/2031 Kod: ZIE s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Imię, nazwisko i tytuł/stopień KOORDYNATORA (-ÓW) kursu/przedmiotu zatwierdzającego protokoły w systemie USOS Dr Adam Naumowicz

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Programowanie obiektowe

Dokumentacja Skryptu Mapy ver.1.1

Web frameworks do budowy aplikacji zgodnych z J2EE

Specyfikacja implementacyjna aplikacji mobilnej

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

CouchDB. Michał Nowikowski

Tworzenie Stron Internetowych. odcinek 10

Zaawansowane aplikacje internetowe

Tomasz Grześ. Systemy zarządzania treścią

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

W czystym JavaScripcie zasięgi zmiennych tworzone były poprzez funkcje anonimowe, w AngularJS posiadamy kontrolery, które także są funkcjami.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zagadnienia projektowania aplikacji J2EE

SZKOLENIE TWORZENIE SYSTEMÓW

Ruby i Ruby on Rails. Mateusz Drożdżyński

Jak okiełznać frontend w Django? Piotr Maliński

Pogadanka o czymś, co niektórzy nazywają AJAX

Transkrypt:

J A V A S C R I P T ROZSZERZENIA I BIBLIOTEKI Waldemar Korłub Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska

Dynamiczne strony Dynamika po stronie klienta przeglądarki Modyfikowanie treści, struktury, wyglądu dokumentu HTML już po jego załadowaniu w przeglądarce n Bez komunikacji z serwerem JavaScript Dynamika po stronie serwera Generowanie dokumentu HTML przez aplikację działającą po stronie serwera n Zamiast serwowania statycznego pliku HTML Serwowanie różnych treści, np. w zależności od: n Użytkownika: Masz 2 nowe zaproszenia n Dnia: Pogoda na dziś: PHP, Ruby on Rails, Python, ASP.NET MVC, Java ServerFaces

Dynamiczne strony Asynchroniczna komunikacja z serwerem Wykorzystanie dynamiki w przeglądarce do pobrania nowych treści z serwera, który może generować je dynamicznie Bez przeładowywania całej strony AJAX

AJAX Asynchronous JavaScript and XML Asynchroniczne pobieranie danych z serwera już po załadowaniu strony do przeglądarki Zamiast przeładowywać całą stronę, pobierany jest jedynie jej fragment, który zostaje wyświetlony w przeglądarce przy użyciu API DOM Powszechnie wykorzystywany na stronach internetowych (np. Moja PG, enauczanie) Różnice w API pomiędzy przeglądarkami Przykład przy okazji biblioteki jquery

Żądania synchroniczne bez AJAXa Przeglądarka Kompletny dokument HTML Kompletny dokument HTML aktywność użytkownika żądanie HTTP oczekiwanie na załadowanie strony aktywność użytkownika żądanie HTTP oczekiwanie na załadowanie strony aktywność użytkownika odpowiedź HTTP odpowiedź HTTP Serwer przetwarzanie żądania przetwarzanie żądania

Żądania asynchroniczne: AJAX Przeglądarka aktywność użytkownika żądanie HTTP aktualizacja fragmentu strony z użyciem API DOM odpowiedź HTTP żądanie HTTP aktualizacja fragmentu strony odpowiedź HTTP Serwer przetwarzanie żądania przetwarzanie żądania

7 DOM: Document Object Model

DOM: Document Object Model DOM Obiektowy model dokumentu W postaci drzewa elementów API DOM zestaw interfejsów do operowania na drzewie dokumentu Pozwala na wyszukiwanie elementów dokumentu, ich modyfikację, usuwanie i dodawanie nowych

Wyszukiwanie elementów var divs = document.getelementsbytagname('div'); var age_inputs = document.getelementsbyname('age'); var posts = document.getelementsbyclassname('post'); //pojedynczy element: var header = document.getelementbyid('header'); //pojedynczy element: var post_title = document.queryselector('div#body div.post h1'); //zbiór elementów: var titles = document.queryselectorall('div#body div.post h1');

Usuwanie elementów //wyszukanie elementu do usunięcia: var header = document.getelementbyid('header'); //usunięcie elementu: header.parentnode.removechild(header);

Dodawanie elementów //nowy element <div>: var div = document.createelement('div'); //nowy element tekstowy: var text = document.createtextnode('abc'); //dodanie elementu tekstowego do elementu <div> div.appendchild(text); //dodanie elementu <div> do dokumentu document.body.appendchild(div);

Demo DOM Przykład 03-dom Narzędzia deweloperskie Drzewo dokumentu Debugger języka JavaScript

13 Web Storage API (HTML5)

Web Storage API (HTML5) Pozwala na zapisywanie danych po stronie przeglądarki Dane postaci: klucz (string) à wartość (string) Konieczność serializacji wszystkich przechowywanych wartości do postaci tekstowej Local Storage Dane utrzymywane pomiędzy kolejnymi uruchomieniami przeglądarki Session Storage Dane niszczone w chwili zamknięcia okna przeglądarki

Local storage function count_clicks() { if (localstorage.clickcount) { localstorage.click_count = Number(localStorage.click_count) + 1; } else { localstorage.click_count = 1; } var div = document.getelementbyid("result"); } div.innerhtml = "Licznik kliknięć: " + localstorage.click_count;

Local storage //w pliku HTML: <div id="result" onclick="count_clicks();"> Licznik kliknięć </div> Przykład 04-web-storage

Obiekty w Web Storage var student = { 'imie': 'Imiesław', 'nazwisko': 'Nazwiskowy', 'nr_albumu': 99999, }; //zapisanie reprezentacji tekstowej localstorage.student = JSON.stringify(student); //odczytanie danych i konwersja na obiekt var object = JSON.parse(localStorage.student); console.log(object.imie);

Usuwanie elementów //Local storage localstorage.removeitem("click_count"); //Session storage sessionstorage.removeitem("lastname");

19 Rozszerzenia i biblioteki

JavaScript 20 JavaScript nie jest idealnym językiem programowania Żaden język nie jest ale JavaScript wybitnie nie jest JavaScript był konstruowany z myślą o prostych zastosowaniach Brendan Eich miał opracować prototyp języka w ciągu 10 dni w maju 1995 roku JavaScript zaistniał na rynku, bo był jedynym językiem obsługiwanym przez przeglądarki JavaScript jest znany wielu deweloperom, bo nie mieli oni innego wyjścia

JavaScript 21 JavaScript nie posiada wielu mechanizmów przydatnych w dużych projektach Przestrzenie nazw/moduły na poziomie języka n Mogą być symulowane przy użyciu domknięć i anonimowych funkcji Klasy, interfejsy i związane z nimi mechanizmy obiektowe n Obiektowość oparta na koncepcji prototypów, dziedziczenie po obiektach nie po klasach Poziomy dostępu do składowych prywatne, publiczne, chronione Silne typowanie Rosnąca złożoność aplikacji internetowych prowadzi do dużych systemów działających w środowisku przeglądarki internetowej

Jak naprawić JavaScript? 22 Sam język rozwija się powoli Kolejne wersje w różnym tempie są implementowane przez przeglądarki Sytuacja znacząco poprawiła się w ostatnich latach à kolejny slajd Chcąc zapewnić kompatybilność należy wybierać najmniejszy wspólny mianownik

Rynek przeglądarek 23 W przeszłości nowe wersje przeglądarek wydawane były raz na rok lub raz na kilka lat Internet Explorer: 8 2009; 9 2011; 10 2012; 11 2013 Długi cykl wydawniczy opóźnia wprowadzanie nowych specyfikacji Google zapoczątkowało trend wydawania nowych wersji tak często, że nikogo to już nie obchodzi Google Chrome: 1.0 2008; 55 2016 (6,9 wydania/rok) Inkrementalne zmiany, szybkie wprowadzanie nowych funkcji Automatyczne instalowanie aktualizacji (przezroczyste dla użytkownika) Inne przeglądarki podążają za tym trendem: Firefox 50, Opera 42, Edge 14

Jak naprawić JavaScript? 24 Biblioteki 3rd party Biblioteki zewnętrznych deweloperów, nie stanowią części samego języka Rozwiązują typowe problemy występujące w codziennej pracy Oferują gotowe komponenty do zastosowania na stronie n Podobnie jak biblioteki CSS takie, jak Bootstrap Bibliotek 3rd party dla języka JavaScript nie brakuje

25 Biblioteki i rozszerzenia

Jak naprawić JavaScript? 26 JavaScript można naprawiać na wiele sposobów bo jest popsuty na wielu poziomach

Biblioteki narzędziowe 27 Dostarczają przydatne funkcje do realizacji typowych niewielkich zadań programistycznych np. Underscore.js, Lodash Operacja na kolekcjach _.each iterowanie _.map mapowanie wartości n _.map([1, 2, 3], function(num){ return num * 3; }); => [3, 6, 9] _.reduce redukcja kolekcji do wartości skalarnej n var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); _.contains([1, 2, 3], 3); - wyszukiwanie

Biblioteki narzędziowe 28 Operacja na tablicach _.flatten([1, [2], [3, [[4]]]]); => [1, 2, 3, 4]; _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); => [1, 2] _.difference([1, 2, 3, 4, 5], [5, 2, 10]); => [1, 3, 4] _.uniq([1, 2, 1, 4, 1, 3]); => [1, 2, 4, 3]

Biblioteki bazowe/ 29 Operacje na modelu DOM Ukrywają różnice pomiędzy przeglądarkami Dostarczają spójne API do realizacji typowych operacji na drzewie dokumentu Przydatne do modyfikacji stylów CSS, obsługi zdarzeń, animacji, obsługi AJAXa Nie oferują mechanizmów do organizacji struktury kodu aplikacji np. jquery, mootools, prototype

Biblioteki widgetów 30 Dostarczają gotowe komponenty (wraz z zachowaniami) do wykorzystania w interfejsie aplikacji np. jquery UI, dojo toolkit, PrimeNG http://jqueryui.com/demos/ https://dojotoolkit.org/documentation/#widgets http://www.primefaces.org/primeng/#/

Biblioteki MV* 31 Dostarczają mechanizmy do organizacji struktury aplikacji i zarządzania przepływem sterowania Umożliwiają modularyzację, wydzielenie komponentów np. Angular, Backbone.js, ember

MVC: Model View Controller Wzorzec architektoniczny modelujący przepływ sterowania w interfejsie użytkownika Oryginalnie zaproponowany przez Trygve Reenskaug w latach 70. dla graficznych interfejsów użytkownika Dzieli kod aplikacji na trzy części w celu oddzielenia wewnętrznych reprezentacji danych od sposobu, w jaki są one przedstawiane użytkownikowi

MVC wykorzystuje Controller manipuluje Użytkownik Model jest prezentowany View aktualizuje

MVC Kontroler aktualizuje model danych w odpowiedzi na akcje użytkownika podejmowane w interfejsie Model danych reprezentuje dane, na których operuje aplikacja Widok generuje reprezentację danych widoczną dla użytkownika

MVC co z logiką biznesową? Wzorzec MVC modeluje interakcje z użytkownikiem nie logikę biznesową aplikacji Kontroler manipuluje modelem (widoku) Logika biznesowa często wymaga czegoś więcej Modyfikacja bazy danych Wywołanie zewnętrznej usługi (np. płatności) Modyfikacja innych obiektów w modelu danych (np. stany magazynowe)

Narzędzia do zarządzania 36 zależnościami Zewnętrzne biblioteki mogą posiadać zależności Wymagają innych bibliotek do prawidłowego działania Te inne biblioteki mogą mieć własne zależności itd. Ręczne zarządzanie zależnościami i ich aktualizowanie jest trudne i podatne na błędy Zaniechanie aktualizowania zależności może otworzyć luki bezpieczeństwa w aplikacji Narzędzia takie jak bower i npm zarządzają zależnościami w sposób automatyczny

Frameworki full stack 37 Framework łączy wiele bibliotek i narzędzi tworząc pojedynczą spójną platformę do budowania aplikacji np. Ext JS

Biblioteki polyfill 38 Emulują nowe API języka JavaScript w starszych przeglądarkach, które tych API nie obsługują Niektóre biblioteki tego typu nadpisują wadliwe implementacje API w przeglądarkach Modernizr Biblioteka wykrywające funkcjonalności oferowane przez przeglądarkę Ładuje biblioteki typu polyfill, jeśli nie wykryje obsługi wymaganych API

Biblioteki do testowania jednostkowego 39 Testy jednostkowe Zautomatyzowane testy badające poprawność działania poszczególnych komponentów w separacji od pozostałych elementów aplikacji Nie wymagają klikania w przeglądarce przez człowieka-testera Umożliwiają wykrywanie regresji w oprogramowaniu np. Mocha, Jasmine

40 jquery

https://w3techs.com/technologies/overview/javascript_library/all 41

jquery 42 Ujednolicone API dla wszystkich przeglądarek Ukrywa różnice pomiędzy rozwiązaniami różnych producentów Ułatwia pracę z modelem DOM dokumentu Ułatwia wykorzystywanie animacji Ułatwia obsługę zdarzeń Ułatwia obsługę technologii AJAX

Selektory 43 Pozwalają wybierać grupy elementów z drzewa DOM Opierają się na selektorach z CSS 1-3

Selektory 44 <div id="maindiv"> <div> Wewnętrzny div </div> <div class="poem-line"> Stylowy div </div> <div> <p title="tytuł">pierwszy akapit</p> <p>drugi akapit</p> <p>trzeci akapit</p> </div> </div>

45 Selektory

46 Selektory

47 Selektory

48 Selektory

Łańcuchy komend 49 <div id="maindiv"> <p> Litwo! Ojczyzno moja! ty jesteś jak zdrowie. <span style="display: none">komentarz 1</span></p> <p> Ile cię trzeba cenić, ten tylko się dowie, <span style="display: none">komentarz 2</span> </p> </div> $("#maindiv").addclass("poem-text").children("p").addclass("poem-line").children("span").addclass("poem-comment").toggle("fast");

Operacje na atrybutach i stylach 50.addClass(),.removeClass() oraz.toggleclass() dodawanie, usuwanie, przełączanie klas.css() dostęp do styli elementu.attr() dostęp do atrybutów.val() dostęp do wartości elementu (np. input).html() dostęp do treści elementu Umożliwia również zmianę zawartości

Trawersowanie drzewa DOM 51.add() dodaje zbiór elementów do zbioru bieżącego.children() wybiera dzieci każdego z elementów aktualnego zbioru.find(selektor) wybiera pasujących potomków każdego z elementów aktualnego zbioru.each() pozwala wywołać funkcje na każdym z elementów aktualnego zbioru

Obsługa zdarzeń 52 Zdarzenia na elementach dokumentu.focus().blur().change().click().keydown() /.keyup().mousemove()

Obsługa zdarzeń 53 Zdarzenia związane z załadowaniem drzewa DOM lub jego fragmentów: $(document).ready() n Po załadowaniu drzewa przed załadowaniem obrazków n Możliwość dodania wielu funkcji obsługi zdarzeń z różnych miejsc w aplikacji $(selektor).load() n Po załadowaniu elementu n Dopuszczalne elementy: Image, Script, Frame, Iframe, Window

Obsługa AJAXa 54 $.ajax() Wysyła asynchroniczne żądanie; umożliwia ustawienie wszystkich parametrów i typu żądania $.get() Wysyła żądanie metodą GET $.post() Wysyła żądanie metodą POST $(selektor).load(uri) Pobiera zawartość uri i umieszcza ją w elemencie wskazanym przez selektor

Plug-iny dla jquery 55 jquery.extend( { center: function($element) { $element.css("position", "relative"); var top = ($element.parent().height() - $element.height())/ 2-1; $element.css("top", top + "px"); var left = ($element.parent().width() - $element.width()) / 2; $element.css("left", left + "px"); } }); //$.center($(selektor)); jquery.fn.center = function () { jquery.center(this); return this; } //$(selektor).center() $("selektor1").load("uri").find("selektor2").center();

56 Poza językiem JavaScript

Inne języki w przeglądarce? 57 JavaScript jest jedynym językiem obsługiwanym powszechnie przez przeglądarki Istnieją rozwiązania umożliwiające implementację aplikacji w innych językach programowania Przed publikacją w Internecie są one tłumaczone na zrozumiały dla przeglądarek JavaScript n Transpilacja (w odróżnieniu od kompilacji) Przykładowe rozwiązania: GWT: Java à JavaScript (Google) CoffeScript à JavaScript Dart à JavaScript (Google) Kotlin à JavaScript (JetBrains) TypeScript à JavaScript (Microsoft)

58 Pytania?