Podstawy programowania w języku JavaScript

Podobne dokumenty
Podstawy programowania w języku JavaScript

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

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

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

Zaawansowane aplikacje internetowe

TECHNIKI WWW (WFAIS.IF-C125) (zajęcia r.)

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

XML extensible Markup Language. część 5

Podstawy JavaScript ćwiczenia

Wykład 03 JavaScript. Michał Drabik

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

Bootstrap. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Paweł Rajba,

W ogólności znaczniki mogą również posiadać atrybuty które pozwalają wpływać i manipulować własnościami znaczników lub przenosić dodatkowe informacje:

Aplikacje WWW - laboratorium

TECHNOLOGIE SIECI WEB

Podstawy programowania w języku JavaScript

Języki programowania wysokiego poziomu WWW

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

Wybrane działy Informatyki Stosowanej

Zdarzenia Zdarzenia onload i onunload

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

Laboratorium 1 Wprowadzenie do PHP

Aplikacje internetowe

Laboratorium 7 Blog: dodawanie i edycja wpisów

Aplikacje WWW - laboratorium

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

XML extensible Markup Language. część 5

Specyfikacja techniczna dot. mailingów HTML

Tworzenie Stron Internetowych. odcinek 10

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Aplikacje WWW - laboratorium

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

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

PHP: bloki kodu, tablice, obiekty i formularze

Funkcje i instrukcje języka JavaScript

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Kompresja stron internetowych

Zajęcia 4 - Wprowadzenie do Javascript

Aplikacje WWW - laboratorium

Podstawy technologii WWW

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

Języki skryptowe w programie Plans

Programowanie internetowe

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Aplikacje internetowe - laboratorium

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Aplikacje WWW. Możliwość wykorzystania elementów interfejsu użytkownika znanych z aplikacji Windows tj. wskaźniki postępu.

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

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Mailingi HTML. Specyfikacja techniczna

Spis treści CZĘŚĆ I JĘZYK SIECI 17. Wstęp 13. Rozdział 1 Wprowadzenie do HTML5 19. Rozdział 2 Znajomość znaczników HTML5 37

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

Dokument hipertekstowy

PHP: bazy danych, SQL, AJAX i JSON

Dokumentacja imapliteapi

Bazy Danych i Usługi Sieciowe

Rys.2.1. Drzewo modelu DOM [1]

plansoft.org Zmiany w Plansoft.org

Tworzenie Stron Internetowych. odcinek 9

CZYM JEST JAVASCRIPT?

Wybrane działy Informatyki Stosowanej

Zaawansowane aplikacje internetowe AJAX. Wykład prowadzi: Marek Wojciechowski AJAX

Obiekt navigator. Dodał Administrator wtorek, 16 marzec :32

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Programowanie Komponentowe WebAPI

Wybrane działy Informatyki Stosowanej

Server setup. #include <SPI.h> #include <Ethernet.h> boolean incoming = 0;

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Wybrane działy Informatyki Stosowanej

Szybko, prosto i tanio - ale czy na pewno?

Dokumentacja Skryptu Mapy ver.1.1

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Aplikacje WWW - laboratorium

Podstawy programowania w języku C++

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Laboratorium 6 Tworzenie bloga w Zend Framework

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Udostępnianie obrazu z kamer Sanyo HD na stronach WWW PORADNIK

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Tablica zawierająca odniesienia do znajdujących się w dokumencie obiektów typu Anchor.

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

2 Podstawy tworzenia stron internetowych

Wybrane działy Informatyki Stosowanej

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

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Dokumentacja końcowa projektu z ZPR

JavaScript funkcyjność

O stronach www, html itp..

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

HTML (HyperText Markup Language) hipertekstowy język znaczników

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Transkrypt:

Podstawy programowania w języku JavaScript Część piąta BootStrap Autorzy Roman Simiński Tomasz Xięski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

Serwer WWW HTTP Geneza Dominującym trendem w budowaniu aplikacji internetowych były do niedawna aplikacje klient-serwer z tzw. cienkim klientem. W roli aplikacji klienckiej występowała zazwyczaj przeglądarka internetowa, jej rola sprowadzała się do prostej interakcji z użytkownikiem, przekazywaniem żądań HTTP do warstwy serwerowej, odbieranie i wizualizacja odpowiedzi. Przetwarzanie informacji po stronie klienckiej było minimalistyczne, przeglądarka jest zwykle pasywna. Serwer Stacja robocza: cienki klient Oprogramowanie warstwy serwerowej Żądania HTTP Przeglądarka WWW Serwer bazy danych HTML + CSS Wizualizacja Interakcja

Geneza, cd.... Serwisy internetowe zaczynają być coraz bardziej: dynamiczne w zakresie prezentowanych treści częste zmiany zawartości; interaktywne nie tylko klikanie w linki; społeczne nurt WEB 2.0 preferuje komunikację i interakcje on-line. Aktualizacja zawartości strony wymagała jej ponownego przesłania via sieć. Częsta aktualizacja wzmagała ruch sieciowy oraz wprowadzało denerwujące dla użytkownika opóźnienia. Wzrosło obciążenie serwerów, opracowanie aktualnego i kompletnego dokument HTML zaczęło być coraz bardziej skomplikowane i czasochłonne. Jednocześnie, często mocne sprzętowo klienckie stacje robocze czekają zwykle bezczynnie na kompletne dokumenty HTML.

Rozwiązanie reanimacja i rozwój programowania po stronie klienta Odejście od pasywności oraz aktualizacja wybranych elementów dokumentu HTML wymaga rozwoju technik programowania po stronie klienta. Większość elementów jest JavaScript, DOM, (X)HTML, XML, CSS. Brakuje możliwości dyskretnego łączenia się z serwerem z poziomu kodu w języku JavaScript. Pojawia się Asynchronous JavaScript + XML. to nie jest spójna technologia, to raczej koncepcja połączenia różnych technologii internetowych w celu uzyskania elastycznej, aktywnej i interaktywnej warstwy klienckiej aplikacji internetowych.

jako zlepek użytecznych narzędzi i technik Obiekt XMLHttpRequest (X)HTML + CSS XML/XSLT ECMAScript JavaScrip/JScript DOM Document Object Model

Serwer WWW HTTP XMLHttpRequest XMLHttpRequest obiekt reprezentujący engine XMLHttpRequest jest obiektem języka JavaScript służącym do pobierania danych przy użyciu protokołu HTTP. Może być stosowany do wymiany danych w wielu formatach: czysty tekst, XML, a także JSON. Obiekt XMLHttpRequestumożliwia generowanie żądań HTTP po załadowaniu się strony internetowej, w trakcie interakcji z użytkownikiem. Żądania są wykonywane w tle i nie przerywają interakcji użytkownika ze stroną. Oprogramowanie warstwy serwerowej Serwer Żądania HTTP Żądania HTTP Stacja robocza: cienki klient Przeglądarka WWW JavaScript Serwer bazy danych Dane HTML + CSS Wizualizacja Interakcja

XMLHttpRequest historia Obiekt XMLHttpRequestzostała zaimplementowany pierwotnie przez Microsoft w IE 5 jako obiekt ActiveX (2000 r.). Mógł być wykorzystywany z poziomu języków JScript i VBScript. Obiekt XMLHttpRequest pojawia się projekcie Mozilla Mozilla 1.0 w roku 2002 jako rdzenny obiekt silnika przeglądarki, potem pojawia się w Safari, Konqueror, Operze. W3C dąży do standaryzacji obiektu XMLHttpRequest i jego API, ostatnia proponowana wersja: kwiecień 2010, dostępna online: http://www.w3.org/tr/xmlhttprequest/

XMLHttpRequest koncepcja wykorzystania Komunikacja z użyciem obiektu XMLHttpRequestpolega na wykorzystaniu jego funkcji składowych oraz właściwości. Kolejne kroki wykorzystania obiektu: utworzenie instancji obiektu XMLHttpRequest, ustalenie funkcji nadsłuchującej i odbierającej dane, inicjalizacji (otwarcia żądania) HTTP adres, metoda, przesłaniu żądania HTTP. Po otrzymaniu odpowiedzi uaktywniana jest funkcja nasłuchująca, w której można sprawdzić status odpowiedzi i w przypadku poprawnego obsłużenia żądania można pobrać i odpowiednio wykorzystać przesłane dane.

XMLHttpRequest uproszczony przykład poglądowy, cel Tutaj ma pojawić się zawartość pliku 1.txt zapisanego na serwerze, w katalogu macierzystym strony <html> <head> </head> <body> <h2>pobranie informacji z serwera</h2> <input type="button" value="pobierz" onclick="loadtext()"/> <p id="w"></p> </body> </html> Paragraf na zawartość pliku pobieranego z serwera po naciśnięciu przycisku Pobierz

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); Utworzenie obiektu realizującego komunikację via HTTP

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.open( "GET", "1.txt", true ); Określenie typu żądania (GET, POST), adresu URL którego żądanie będzie dotyczyć, oraz czy żądanie będzie wykonywane asynchronicznie (true), czy synchronicznie (false). Uwaga wywołanie open tak naprawdę nie powoduje ruchu sieciowego. Jest to po prostu skonfigurowanie parametrów żądania. Uwaga w trybie synchronicznym po wysłaniu żądania trwa oczekiwanie, inne akcje są wstrzymane. == wywołania asynchroniczne

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.open( "GET", "1.txt", true ); requester.send(); Wysłanie żądania, dla żądań GET funkcja nie otrzymuje parametrów. Funkcja send otrzymuje parametr w postaci łańcucha znaków dla żądań POST. Spotyka się wywołania w postaci: requester.send( null );

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.open( "GET", "1.txt", true ); requester.send(); No i co teraz? żądanie wysłane, a kto sprawdzi czy się udało i odbierze odpowiedź?

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.onreadystatechange =??? requester.open( "GET", "1.txt", true ); Ustalenie funkcji nasłuchującej będzie ona wywoływana po każdej zmianie statusu obsługi żądania, w tym jego zakończeniu (odebraniu danych). requester.send();

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.onreadystatechange = function() requester.open( "GET", "1.txt", true ); requester.send(); Anonimowa funkcja wywoływana po zmianie statusu żądania. Jest to funkcja typu callback. Oczywiście nie musi to być funkcja anonimowa, to tylko prosty przykład. Uwaga funkcja nasłuchująca jest bezparamterowa!

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.onreadystatechange = function() if( requester.readystate == 4 ) requester.open( "GET", "1.txt", true ); requester.send(); Wlaściwość readystate obiektu klasy XMLHttpRequest zawiera informację o jego stanie w trakcie obsługi żądania. Znaczenie wartości w readystate: 0 niezainicjowany (zapewne przed open) 1 zainicjowany (po open a przed send) 2 żądanie wysłane, w trakcie przetwarzania, 3 odbieranie danych 4 zakończono obsługę żądania Uwaga readystate == 4 oznacza że serwer zakończył obsługę żądania. Ale to nie znaczy, że żądany zasób został dostarczony! Przeglądarki mogą różnie ustawiać stan właściwości readystate.

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.onreadystatechange = function() if( requester.readystate == 4 ) if( requester.status == 200 ) requester.open( "GET", "1.txt", true ); requester.send(); Wlaściwość status obiektu klasy XMLHttpRequest zawiera informację o kodzie statusu żądania HTTP. Znaczenie wartości w status, np: 200: OK 401: Unauthorized 403: Forbidden 404: Not Found Uwaga nie wystarczy tylko sprawdzenie czy readystate == 4 Kontrola czy status HTTP jest równy 200 jest konieczna

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); requester.onreadystatechange = function() if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); out.innerhtml += "<br \/> " + requester.responsetext; Odpowiedź serwera może być łańcuchem requester.open( "GET", "1.txt", true ); znaków, dostępnym poprzez właściwość requester.send(); responsetext. Odpowiedź serwera może być postać XML dostępą poprzez właściwość responsexml. Tak naprawdę o tym, to, co będzie odpowiedzią rozstrzyga się po stronie serwera i pracującego tam softu.

XMLHttpRequest uproszczony przykład poglądowy var requester = new XMLHttpRequest(); W naszym przypadku odpowiedzią ma być zawartość pliku 1.txt zapisanego requester.onreadystatechange = function() w katalogu macierzystym serwera. if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); out.innerhtml = requester.responsetext; requester.open( "GET", "1.txt", true ); requester.send();

XMLHttpRequest uproszczony przykład poglądowy kompletny <html> <head> <script type="text/javascript"> function loadtext() var requester; requester = new XMLHttpRequest(); requester.onreadystatechange = function() if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); out.innerhtml = requester.responsetext; requester.open( "GET", "1.txt", true ); requester.send( null ); </script> </head> <body> <h2>pobranie informacji z serwera</h2> <input type="button" value="pobierz" onclick="loadtext()"/> <p id="w"></p> </body> </html>

XMLHttpRequest uproszczony przykład poglądowy kompletny, wer. 2 <html> <head> <script type="text/javascript"> var requester; function processtext() if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); out.innerhtml = requester.responsetext; function loadtext() requester = new XMLHttpRequest(); requester.onreadystatechange=processtext; requester.open( "GET", "1.txt", true ); requester.send( null ); </script> </head> Globalny obiekt dostępny w całej sekcji sekcji script.

Funkcja nasłuchująca pod lupą var requester; function processtext() var out = document.getelementbyid( "w" ); out.innerhtml += "<br \/>Readystate " + requester.readystate; if( requester.readystate == 4 ) if( requester.status == 200 ) out.innerhtml += "<br out.innerhtml += "<br else out.innerhtml += "<br out.innerhtml += "<br requester.onreadystatechange \/>Status " + requester.status; \/> " + requester.responsetext; \/>Status " + requester.status; \/>Niepowodzenie!"; = processtext; Brak żądanego zasobu, mimo że właściwość readystate == 4 zasób na serwerze nie został znaleziony status HTTP == 404

Tworzenie obiektu XMLHttpRequest Wszystkie współczesne przeglądarki mają wbudowaną obsługę obiektu XMLHttRequest IE7+, Firefox, Chrome, Safari, Opera. Starsze wersje IE (IE5i IE6) implementowały XMLHttRequest jako obiekt ActiveX. W3C wskazuje, aby obiekt XMLHttRequest tworzyć w następujący sposób: var requester; if( window.xmlhttprequest ) // Wersja dla IE7+, Firefox, Chrome, Opera, Safari requester = new XMLHttpRequest(); else // Wersja dla IE6, IE5 requester = new ActiveXObject( "Microsoft.XMLHTTP" );

Tworzenie obiektu XMLHttpRequest W przypadku obiektu globalnego, wykorzystywanego we wielu funkcjach, pojawia się problem identyfikacji, czy tworzenie obiektu się powiodło: var requester = false; if( window.xmlhttprequest ) // Wersja requester else // Wersja requester dla IE7+, Firefox, Chrome, Opera, Safari = new XMLHttpRequest(); dla IE6, IE5 = new ActiveXObject( "Microsoft.XMLHTTP" ); if(!requester ) alert( " nie jest obsługiwany" );

Tworzenie obiektu XMLHttpRequest Inne podejście do tworzenia obiektu XMLHttpRequest: try // Wersja dla IE7+, Firefox, Chrome, Opera, Safari requester = new XMLHttpRequest(); catch( e ) // Dla starszych wersji IE Różne wersje obiektu ActiveX try requester = new ActiveXObject( "Msxml2.XMLHTTP" ); catch( e ) try requester = new ActiveXObject( "Microsoft.XMLHTTP" ); catch( e ) // nie będzie działał alert( " nie jest obsługiwany" );

Tworzenie obiektu XMLHttpRequest Podejście sugerowane przez developer.mozilla.org: var requester = false; if( window.xmlhttprequest ) // Wersja dla IE7+, Firefox, Chrome, Opera, Safari requester = new XMLHttpRequest(); else if( window.activexobject ) // Dla starszych wersji IE try requester = new ActiveXObject( "Msxml2.XMLHTTP" ); catch( e ) try requester = new ActiveXObject("Microsoft.XMLHTTP"); catch( e ) if(!requester alert( " ) nie jest obsługiwany" );

Odbieranie danych XML prosty przykład Tutaj ma pojawić się zawartość znacznika <text> z pliku 1.xml, zapisanego na serwerze w katalogu macierzystym strony <html> <head> </head> <body> <h2>pobranie informacji z serwera</h2> <input type="button" value="pobierz" onclick="loadtext()"/> <p id="w"></p> </body> </html> Paragraf na zawartość pliku pobieranego z serwera po naciśnięciu przycisku Pobierz

Odbieranie danych XML prosty przykład var requester; function processtext() if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); Odpowiedzią serwera jest dokument XML pobrany z pliku 1.xml reprezentowany w postaci DOM var xmldoc = requester.responsexml; var node = xmldoc.getelementsbytagname('text').item( 0 ); out.innerhtml = node.firstchild.nodevalue; requester.onreadystatechange=processtext; requester.open( "GET", "1.xml", true ); requester.send( null );

Odbieranie danych XML prosty przykład, seria danych Chcemy pobrać listę ulubionych bohaterów z pliku 2.xml zapisanego na serwerze. Nazwa bohatera zapisana jest z wykorzystaniem znacznika <bohater>. <html> <body> <h2>lista ulubionych bohaterów</h2> <input type="button" value="pobierz" <p id="w"></p> </body> </html> onclick="loadtext()"/>

Odbieranie danych XML prosty przykład, seria danych function processtext() if( requester.readystate == 4 ) Odpowiedzią na żądanie jest dokument XML if( requester.status == 200 ) var out = document.getelementbyid( "w" ); var xmldoc = requester.responsexml; var heroes = xmldoc.getelementsbytagname( 'bohater' ); for( i = 0; i < heroes.length; ++i ) out.innerhtml += "<br />" + heroes[i].firstchild.nodevalue; function loadtext() Pobranie listy elementów o zadanym znaczniku Do tej listy będzie się można odwoływać jak do tablicy requester.onreadystatechange = processtext; requester.open( "GET", "2.xml", true ); requester.send( null );

Odbieranie danych XML prosty przykład, seria danych function processtext() if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); var xmldoc = requester.responsexml; var heroes = xmldoc.getelementsbytagname( 'bohater' ); for( i = 0; i < heroes.length; ++i ) out.innerhtml += "<br />" + heroes[i].firstchild.nodevalue; function loadtext() Pobranie kolejnych elementów requester.onreadystatechange = processtext; requester.open( "GET", "2.xml", true ); requester.send( null );

Odbieranie danych XML prosty przykład, seria danych function processtext() if( requester.readystate == 4 ) if( requester.status == 200 ) var out = document.getelementbyid( "w" ); var xmldoc = requester.responsexml; var heroes = xmldoc.getelementsbytagname( 'bohater' ); for( i = 0; i < heroes.length; ++i ) out.innerhtml += "<br />" + heroes[i].firstchild.nodevalue; function loadtext() Pobranie kolejnych elementów requester.onreadystatechange = processtext; requester.open( "GET", "2.xml", true ); requester.send( null );

Frontend Bootstrap Bootstrap Jest jednym z najpopularniejszych platform do tworzenia tzw. frontendu. Aby go wykorzystać należy ściągnąć odpowiednie skrypty js oraz style css i dołączyć do aktualnego projektu lub skorzystać z CDN. Można też ściągnąć wyłącznie indywidualne komponenty. <!DOCTYPE html> <html lang="en"> <head> <title>bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> </html>

Frontend Bootstrap Nowy projekt z Bootstrapem Dobre środowisko IDE (np. JetBrains PhpStorm, JetBrains WebStrom) znacząco wspiera pracę programisty.

Frontend Nowy projekt z Bootstrapem Bootstrap Dobre środowisko IDE (np. JetBrains PhpStorm, JetBrains WebStrom) znacząco wspiera pracę programisty. Po stworzeniu nowego projektu automatycznie dodały się katalogi css, fonts, js. Dobrą konwencją jest rozdzielanie plików na podkatalogi zgodnie z rysunkiem. Proszę pamiętać również o imporcie biblioteki jquery (bez tego Bootstrap nie będzie działał poprawnie).

Frontend Bootstrap Nowy projekt z Bootstrapem Dobre środowisko IDE (np. JetBrains PhpStorm, JetBrains WebStrom) znacząco wspiera pracę programisty. CSS z Bootstrapa Podstawowe skrypty

Frontend Bootstrap Minimalizacja (ang. minification) skryptów Bootstrap dostępny jest w dwóch wersjach: pełnej, po minifikacji. Minifikacja (ang. minification) proces mający na celu zmniejszenie kodu źródłowego poprzez usunięcie niepotrzebnych znaków bez zmieniania jego funkcjonalności. Minifikacja polega głównie na: Usunięciu tabulacji, spacji, znaków nowej linii (oraz innych białych znaków), Usunięciu komentarzy, Skracania do minimum nazw zmiennych, funkcji, bądź innych nazwanych bloków kodu.

Frontend Bootstrap Minimalizacja (ang. minification) skryptów Przed minifikacją: var a = []; for (var i = 0; i < 20; i++) a[i] = i; Po minifikacji: for(var i=0,a=[];i<20;i++)a[i]=i; Przed minifikacją: /* Inject state into document */ document.write("external " + state); // Then update it. state += 1; Minifikacja to nie to samo co proces kompresji. Szczególnie popularna jest dla języków interpretowalnych, ponieważ pozwala zaoszczędzić na kosztach transferu. Minifikacja nie jest ściśle związana z zaciemnianiem kodu (ang. obfuscation) Po minifikacji: document.write("external "+state);state+=1;

Frontend Bootstrap Proces tworzenia szablonu Korzystamy z gotowych rozwiązań np. http://getbootstrap.com/gettingstarted/#examples. Tworzymy szablon sami od początku. Korzystamy z generatora szablonów (http://mashable.com/2013/10/20/bootstrap-editors) np. LayoutIt.

Frontend Podział strony w Bootstrapie Bootstrap Strona jest podzielona na wiersze i kolumny. Wiersze muszą znajdować się w elemencie.container (stała szerokość) lub.container-fluid (zmienna szerokość). Wiersze grupują elementy znajdujące się obok siebie w kolumnach. Treść powinna być umieszczana w kolumnach, a kolumny to jedyni bezpośredni potomkowie wierszy. W CSSie mamy już zdefiniowane takie klasy jak.row czy.col-xs-4. Puste miejsca otrzymujemy za pomocą paddingów. Każdy wiersz powinien składać się z kolumn sumujących się do 12 (czyli np. 4-4-4 lub 6-6 albo 2-4-6) Każda kolumna oprócz rozmiaru ma informacje o minimalnej szerokości urządzenia przed osiągnięciem której się zawinie.

Frontend Podział strony w Bootstrapie Bootstrap Bootstrap dokonuję identyfikacji urządzenia (głównie na podstawie wymiarów ekranu) i odpowiednio dostosowuje wyświetlaną zawartość.

<!DOCTYPE html>... <body> <div class="jumbotron text-center"> <h1>my First Bootstrap Page</h1> <p>resize this responsive page to see the effect!</p> </div> <div class="container"> <div class="row"> <div class="col-sm-4"> <h3>column 1</h3> <p>lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> <div class="col-sm-4"> <h3>column 2</h3> <p>lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> <div class="col-sm-4"> <h3>column 3</h3> <p>lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> </div> </div> </body> </html>

Frontend Pierwsza strona w Bootstrapie Bootstrap W prezentowanej implementacji został wykorzystany schemat Jumbotron. Jumbotron to szary prostokąt z najczęściej zaokrąglonymi rogami. Celem schematu Jumbotron jest zwrócenie uwagi użytkownika na prezentowaną treść.

Frontend Komponenty, CSS, Javascript Bootstrap Warstwę widoku można w Bootstrapie łatwo modyfikować wykorzystując mechanizm skórek. Dostępne komponenty nie tylko zmieniają warstwę wizualną ale również mają wpływ na zachowanie danego elementu. Przykłady: http://www.w3schools.com/bootstrap/default.asp