Materiały dla studentów Informatyki WSZiB w Krakowie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Materiały dla studentów Informatyki WSZiB w Krakowie"

Transkrypt

1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Plan prezentacji Serwer Node.js Framework Express Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Serwer Node.js Serwer Node.js Node.js Ogólna charakterystyka Udostępnia JavaScript po stronie serwera Używa V8 JavaScript Engine System do tworzenia serwisów sieciowych z asynchronicznym WE/WY Wykorzystuje paradygmat programowania sterowanego zdarzeniami Nadaje się dobrze do pisania aplikacji, które wymagają komunikacji w czasie rzeczywistym pomiędzy przeglądarką a serwerem Pojedyncza instancja Node.js działa jako pojedynczy wątek Pętla zdarzeń podmiot, który obsługuje / przetwarza zdarzenia zewnętrzne i konwertuje je na wywołania funkcji zwrotnych. Rysunek: Schemat działania pętli zdarzeń w Node.js Przykład Hello World 1 #!/usr / bin / node console. log ( " Hello World " ) ; Uruchamianie skryptu $ node hello.js Hello World Uruchamianie trybu interaktywnego $ node > console.log("hello World") Hello World undefined > + > ^D $ hello.js Uruchamianie skryptu $ chmod 755 hello.js $./hello.js Hello World Dr inż. Stanisław Źródło: Polak 3 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe

2 Serwer Node.js Serwer Node.js Wprowadzanie i wyprowadzanie danych 1 process. stdout. write ( 1 ) ; process. stdout. write ( ) ; 3 console. log ( 3 ) 5 / 6 c o n s o l e. l o g = f u n c t i o n (d) { 7 p r o c e s s. s t d o u t. w r i t e ( d + \n ) ; 8 }; 9 / process. stdin. setencoding ( utf8 ) ; 1 process. stdout. write ( Wprowad ź dane - naci śnięcie ^D koń czy ich wprowadzanie \n ) ; 13 process. stdin. on ( readable, function ( ) { 1 var chunk = process. stdin. read ( ) ; 15 if ( chunk!== null ) { 16 process. stdout. write ( Wczytano : + chunk ) ; 17 } 18 }) ; 19 console.log(ósiągnięto koniec skryptu ) ; Uruchamianie $ node skrypt.js 13 Wprowadź dane - naciśnięcie ^D kończy ich wprowadzanie Osiągnięto koniec skryptu abc Wczytano: abc def Wczytano: def skrypt.js Dostęp do zmiennych środowiskowych, obsługa linii komend 1 // Odczyt warto ś c i zmiennej ś rodowiskowej HOME console. log ( "Twój katalog domowy to: "+process. env [ HOME ] ) ; 3 //Wyś w i e t l e n i e warto ś c i argument ów l i n i i komend 5 console. log ( " Argumenty linii komend to:" ) ; 6 process. argv. foreach ( function ( wartosc, indeks, tablica ) { 7 console. log ( \t +indeks + : + wartosc ) ; 8 }) ; Uruchamianie $ node skrypt.js 1 b= Twój katalog domowy to: /home/polak Argumenty linii komend to: 0: node 1: /home/polak/skrypt.js : 1 3: b= skrypt.js Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Serwer Node.js Serwer Node.js Moduł Tworzenie, korzystanie 1 var mymodule = require( mojmodul ) ; // za ł aduje node modules /mojmodul. js // v a r mymodule = require (. / mojmodul ) ; // za ł a d u j e. / mojmodul. j s 3 console. log ( mymodule. zmienna1 ) ; // u n d e f i n e d console. log ( mymodule. zmienna ) ; // 5 console. log ( mymodule. zmienna3 ) ; // u n d e f i n e d 6 console. log ( mymodule. zmienna ) ; // 7 console. log ( mymodule. fun1 ( ) ) ; // fun1 8 console. log ( mymodule. fun ( ) ) ; // TypeError : Object #<Object> has no method fun skrypt.js Obsługa pakietów $ npm install nazwa_pakietu # Moduły ->./node modules/ # Pliki wykonywalne ->./node modules/.bin/ # Manuale -> nie są instalowane 1 console. log ( require. main === module ) ; / Wypisze : true, je ż e l i skrypt uruchomimy bezpo ś r e d n i o ( z l i n i i komend ), t j $ node mojmodul. j s 3 Wypisze : false, je ż e l i go zaimportujemy z poziomu innego skryptu, t j. require ( mojmodul ) 5 / 6 zmienna1 = 1 ; 7 exports. zmienna = ; 8 var zmienna3 = 3 ; 9 var zmienna ; 10 exports. zmienna = ; 11 var exports. zmienna5 = 5 ; // SyntaxError : Unexpected token. 1 exports. fun1 = function ( ) { 13 return "fun1 " ; 1 }; 15 fun = function ( ) { 16 return "fun " ; 17 }; node modules/mojmodul.js $ npm install -g nazwa_pakietu Dr inż. Stanisław # Moduły Polak -> {prefix}/lib/node modules/ 7 Przedmiot: Aplikacje internetowe # Pliki wykonywalne -> {prefix}/bin/ # Manuale -> {prefix}/share/man/ Obsługa plików 1 var fs = require ( "fs" ) ; // Sprawd ź czy p l i k i s t n i e j e 3 try{ fs. accesssync( plik.txt ) ; } catch ( err ){ fs. writefilesync( plik.txt, 1 ) ; } 5 fs. readfile( plik.txt, utf -8, function ( error, data ) { 6 if ( error ) throw error ; 7 console. log ( " Odczytana wartość: "+ data ) ; 8 }) ; 9 10 fs. writefile( plik. txt,, function ( error ) { 11 if ( error ) throw error ; 1 console. log ( Zapisano wartość ) ; 13 }) ; Uruchamianie $ node skrypt1.js Zapisano wartość Odczytana wartość: Wersja nieprawidłowa 1 var fs = require ( "fs" ) ; try{ fs. accesssync ( plik.txt ) } 3 catch ( err ){ fs. writefilesync ( plik.txt, 1 ) ; } 5 fs. readfile ( plik. txt, utf -8, function ( error, data ) { 6 if ( error ) throw error ; 7 console. log ( " Odczytana wartość: "+data ) ; 8 9 fs. writefile ( plik. txt,, function ( error ) { 10 if ( error ) throw error ; 11 console. log ( Zapisano wartość ) ; 1 }) ; 13 }) ; Uruchamianie $ node skrypt.js Odczytana wartość: 1 Zapisano wartość Wersja prawidłowa Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe

3 Serwer Node.js Serwer Node.js Obsługa bazy danych SQLite 3 1 var sqlite3 = require ( sqlite3 ) ; 3 var db = new sqlite3. Database ( : memory : ) ; //Zwraca obiekt Database 5 db. serialize( function ( ) { 6 db. run( "CREATE TABLE products (info TEXT )" ) ; 7 var stmt = db. prepare( "INSERT INTO products VALUES (?) " ) ; //Zwraca obiekt Statement 8 for ( var i = 0 ; i < ; i++) { 9 stmt. run( " Produkt " + i ) ; 10 } 11 stmt. finalize ( ) ; 1 13 jsondata = { products : [ ] }; 1 db. each( "SELECT rowid AS id, info FROM products ", function ( err, row ) { 15 jsondata. products. push ({ id : row. id, info : row. info }) ; 16 }, function ( ) { 17 console. log ( JSON. stringify ( jsondata ) ) ; //JSON. s t r i n g i f y wbudowana f u n k c j a JS 18 } 19 ) ; 0 }) ; 1 db. close ( ) ; Instalacja i uruchamianie bd.js $ npm install sqlite3 $ node bd.js {"products":[{"id":1,"info":"produkt 0"},{"id":,"info":"Produkt 1"}]} Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Tworzenie dodatków (addons) w C++ Przykład Hello World 1 / Poniż szy program jest odpowiednikiem nast ę pującego kodu JS : 3 e x p o r t s. h e l l o = f u n c t i o n ( ) { r e t u r n world ; }; / 5 6 #include <node. h> 7 8 using namespace v8 ; 9 10 void Method ( const FunctionCallbackInfo<Value>& args ) { 11 Isolate isolate = Isolate : : GetCurrent ( ) ; 1 HandleScope scope ( isolate ) ; 13 args. GetReturnValue ( ). Set ( String : : NewFromUtf8 ( isolate, " world " ) ) ; 1 } void init ( Handle<Object> exports ) { 17 NODE_SET_METHOD ( exports, " hello ", Method ) ; 18 } 19 0 NODE_MODULE ( hello, init ) // t u t a j n i e ma ś r e d n i k a hello.cc Instalacja programu node-gyp $ npm install -g node-gyp 1 { " targets " : [ 3 { "target_name " : "hello ", 5 " sources " : [ " hello.cc" ] 6 } 7 ] 8 } binding.gyp 1 var addon = require (./ build / Release / hello ) ; console. log ( addon. hello ( ) ) ; hello.js Kompilacja i uruchomienie $ node-gyp configure $ node-gyp build $ node hello.js world Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 10 Przedmiot: Aplikacje internetowe Obsługa protokołu HTTP Serwer Node.js Obsługa protokołu HTTP Szkielet skryptu 1 var http = require ( " http " ) ; 3 function requestlistener (request, response) { console. log ( "Pojawi ło się żą danie od klienta " ) ; 5 response. writehead (00, {"Content -Type " : "text / plain "}) ; 6 response. write ( " Hello World " ) ; 7 response. end ( ) ; 8 } 9 var serwer = http. createserver ( requestlistener ) ; 10 serwer. listen (8080) ; 11 console. log ( "Uruchomiono serwer " ) ; serwer.js Sprawdzenie działania Z poziomu terminala $ node serwer.js & Uruchomiono serwer $ curl Pojawiło się żądanie od klienta Hello World 1 var http = require ( " http " ) ; 3 http. createserver ( function ( request, response ) { console. log ( "Pojawi ło się żą danie od klienta " ) ; 5 response. writehead ( 00, {"Content -Type " : "text / plain "}) ; 6 response. write ( " Hello World " ) ; 7 response. end ( ) ; 8 }). listen (8080) ; 9 console. log ( "Uruchomiono serwer " ) ; Wersja alternatywna Rysunek: Z poziomu przeglądarki WWW Obsługa protokołu HTTP Serwer Node.js Obsługa parametrów URL 1 var url = require ( " url " ) ;... 3 function requestlistener ( request, response ) { console. log ( "Pojawi ło się żą danie od klienta " ) ; 5 var url_parts = url. parse ( request. url, true ) ; // Pass t r u e as t h e second argument to a l s o p a r s e the query string using the querystring module. Defaults to f a l s e. 6 console. log ( url_parts ) ; 7 8 response. writehead ( 00, {"Content -Type " : "text /plain "}) ; 9 response. write ( \n ) ; 10 response. write ( url_parts. pathname+ \n ) ; 11 response. write ( Login : +url_parts. query [ login ]+ \n ) ; 1 response. write ( Has ło: +url_parts. query [ haslo ]+ \n ) ; 13 response. end ( ) ; 1 } Terminal 1 $ node serwer.js Uruchomiono serwer Pojawiło się żądanie od klienta {... search:?login=jan&haslo=kowalski+%8nowak%9, query: { login: Jan, haslo: Kowalski (Nowak) }, pathname: /abc, path: /abc?login=jan&haslo=kowalski+%8nowak%9, href: /abc?login=jan&haslo=kowalski+%8nowak%9 } serwer.js Terminal $ curl Kowalski+%8Nowak%9 /abc Jan Kowalski (Nowak) Dr inż. Stanisław Polak 11 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe

4 Obsługa protokołu HTTP Serwer Node.js Obsługa formularzy Kodowanie application/x-www-form-urlencoded 1 var qs = require ( querystring ) ;... 3 function requestlistener ( request, response ) { var url_parts = url. parse ( request. url, true ) ; 5 if ( url_parts. pathname == /form ){ // g e n e r o w a n i e f o r m u l a r z a 6 response. writehead (00, {"Content -Type " : "text /html "}) ; 7 response. write ( <form method ="POST " action ="/ submit "> ) ; 8 response. write ( <input name =" login " value =" Jan "> ) ; 9 response. write ( <input name =" haslo " value =" Kowalski ( Nowak ) ąę"> ) ; 10 response. write ( <input type =" submit "> ) ; 11 response. write ( </form > ) ; 1 response. end ( ) ; 13 } 1 if ( url_parts. pathname == /submit ) { // przetwarzanie zawarto ś ci formularza 15 if ( request. method== GET ) { 16 response. writehead ( 00, {"Content -Type " : "text /plain "}) ; 17 response. write ( url_parts. query [ login ]+ \n ) ; // przegl ądarka wypisze : Jan\n 18 response. write ( url_parts. query [ haslo ]+ \n ) ; // przegl ądarka wypisze : Kowalski (Nowak ) ąę \n 19 response. end ( ) ; 0 } 1 else if ( request. method== POST ) { var body= ; 3 request. on( data, function ( data ) { body +=data ; 5 }) ; 6 request. on( end, function ( ){ 7 var data = qs. parse( body ) ; //body z a w i e r a l o g i n=jan&h a s l o=k o w a l s k i+%8nowak%9+%c%85% C%99 8 response. writehead ( 00, {"Content -Type " : "text /plain "}) ; 9 response. write ( data [ login ]+ \n ) ; // przegl ądarka wypisze : Jan\n 30 response. write ( data [ haslo ]+ \n ) ; // przegl ądarka wypisze : Kowalski (Nowak ) ąę\n 31 response. end ( ) ; 3 }) ; 33 } 3 } 35 } Dr inż. 36 Stanisław... Polak 13 Przedmiot: Aplikacje internetowe Obsługa protokołu HTTP Serwer Node.js Obsługa protokołu CGI 1 #! / b i n / sh echo "Content -Type : text / plain " 3 echo echo " Skrypt CGI wywo ł ano z argumentem $QUERY_STRING " hello.cgi Instalacja i uruchamianie $ npm install cgi $ chmod 755 hello.cgi $ node skrypt.js & $ curl Skrypt CGI wywołano z argumentem $ curl Skrypt CGI wywołano z argumentem abc 1 var cgi = require ( cgi ) ; var http = require ( http ) ; 3 var path = require ( path ) ; 5 var script = path. resolve ( hello.cgi ) ; 6 7 http. createserver ( cgi ( script ) ). listen ( 8080) ; skrypt.js Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Obsługa protokołu HTTP Serwer Node.js Framework Express Wolnostojący serwer WWW Express Ogólna charakterystyka Instalacja i uruchamianie $ npm install http-server -g $ http-server -h usage: http-server [path] [options] options: -p Port to use [8080] -a Address to use [ ] -d Show directory listings [true] -i Display autoindex [true] -e --ext Default file extension if none supplied [none] -s --silent Suppress log messages from output -h --help Print this list and exit. -c Set cache time (in seconds). e.g. -c10 for 10 seconds. To disable caching, use -c-1. $ http-server Starting up http-server, serving./ on port: 8080 Hit CTRL-C to stop the server Najpopularniejszy framework do tworzenia aplikacji WWW Inspirowany projektem Ruby Sinatra Moduł node.js instalacja npm install -g express API oparte na JSON Dr inż. Stanisław Polak 15 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 16 Przedmiot: Aplikacje internetowe

5 Aplikacja Hello World 1 Framework Express Użyte narzędzia oraz języki Aplikacja Hello World 1 Framework Express Tworzenie szkieletu aplikacji 1 $ mkdir MySite $ cd MySite 3 $ vi package. json $ npm install #i n s t a l o w a n i e z a l e ż no ś c i Jade System szablonów Treść szablonu jest tłumaczona na HTML CSS 1 { " name " : " MySite ", 3 " version " : " ", " private " : " true ", 5 " dependencies " : { 6 " express " : "*", 7 " jade " : "*", 8 " morgan " : "*" 9 } 10 } package.json Dr inż. Stanisław Polak 17 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 18 Przedmiot: Aplikacje internetowe Aplikacja Hello World 1 Framework Express Główny plik aplikacji 1 var express = require ( express ), logger = require ( morgan ) ; 3 var app = express ( ) ; 5 var router = express. Router ( ) ; 6 app. set ( views, dirname + / views ) ; 7 app. set ( view engine, jade ) ; 8 app. use ( logger ( dev ) ) ; 9 app. use ( express. static ( dirname + / public ) ) ; 10 router. get ( /, function ( req, res ) { 11 res. render ( index, 1 { title : Home } 13 ) 1 }) ; 15 app. use ( /, router ) ; 16 app. listen (3000) ; app.js Dr inż. Stanisław Polak 19 Przedmiot: Aplikacje internetowe Aplikacja Hello World 1 Framework Express Pliki Jade 1 extend layout block content 3 p Witaj Świecie 5 Witaj Świecie 6 p 7 Witaj Świecie 8 block sidebar 9. widget 10 h1 Widget 11 p 1 Tre ś ć ramki views/index.jade 1 doctype html html 3 head title #{title} My Site 5 link ( rel= stylesheet, href= / stylesheets / style.css ) 6 body 7 header 8 h1 My Site 9. container 10. main content 11 block content 1. sidebar 13 block sidebar 1 footer 15 p Running on node with Express, Jade and Stylus views/layout.jade Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 0 Przedmiot: Aplikacje internetowe

6 Aplikacja Hello World 1 Framework Express Plik CSS Aplikacja Hello World 1 Framework Express Uruchamianie aplikacji 1 $ node app GET / ms b 3 GET / stylesheets / style. css ms.6 kb 1 body {... 3 }. widget { } 7... public/stylesheets/style.css Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Aplikacja Hello World Framework Express Polecenie express Aplikacja Hello World Framework Express Generowanie aplikacji Hello World Użycie polecenia express 1 $ npm install g express generator $ express help 3 Usage : express [ options ] [ dir ] 5 Options : 6 7 h, help output usage information 8 V, version output the version number 9 e, ejs add ejs engine support ( defaults to jade ) 10 hbs add handlebars engine support 11 H, hogan add hogan. js engine support 1 c, css <engine> add stylesheet <engine> support ( less stylus compass ) ( defaults to plain css ) 13 f, force force on non empty directory 1 $ express MySite create : MySite 3 create : MySite / package. json create : MySite / app. js 5 create : MySite / public 6 create : MySite / public / javascripts 7 create : MySite / public / images 8 create : MySite / public / stylesheets 9 create : MySite / public / stylesheets / style. css 10 create : MySite / routes 11 create : MySite / routes / index. js 1 create : MySite / routes / users. js 13 create : MySite / views 1 create : MySite / views / index. jade 15 create : MySite / views / layout. jade 16 create : MySite / views / error. jade 17 create : MySite / bin 18 create : MySite / bin / www 19 0 install dependencies : 1 $ cd MySite && npm install 3 run the app : $ DEBUG=MySite : npm start Dr inż. Stanisław Polak 3 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe

7 Aplikacja Hello World Framework Express Plik package.json Aplikacja Hello World Framework Express Główny plik aplikacji app.js 1 { " name " : " MySite ", 3 " version " : " ", " private " : true, 5 " scripts " : { 6 " start " : " node./ bin / www " 7 }, 8 " dependencies " : { 9 "body - parser " : " ~1.13. ", 10 " cookie - parser " : " ~1.3.5 ", 11 " debug " : " ~..0 ", 1 " express " : " ~.13.1 ", 13 " jade " : " ~ ", 1 " morgan " : " ~1.6.1 ", 15 "serve - favicon " : " ~.3.0 " 16 } 17 } var routes = require (./ routes / index ) ; 3 var users = require (./ routes / users ) ; 5 var app = express ( ) ; app. use ( /, routes ) ; 8 app. use ( / users, users ) ; 9... Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Aplikacja Hello World Framework Express Pliki z definicją tras Aplikacja Hello World Framework Express Pozostałe (wygenerowane) pliki 1 var express = require ( express ) ; var router = express. Router ( ) ; 3 / GET home page. / 5 router. get ( /, function ( req, res ) { 6 res. render ( index, { title : Express }) ; 7 }) ; 8 9 module. exports = router ; 1 extends layout 3 block content h1= title 5 p Welcome to #{title} views/index.jade 1 doctype html html 3 head title= title 5 link ( rel= stylesheet, href= / stylesheets / style.css ) 6 body 7 block content views/layout.jade 1 var express = require ( express ) ; var router = express. Router ( ) ; 3 / GET u s e r s l i s t i n g. / 5 router. get ( /, function ( req, res ) { 6 res. send ( respond with a resource ) ; 7 }) ; 8 9 module. exports = router ; routes/index.js routes/user.js 1 body { padding : 50 px ; 3 font : 1 px " Lucida Grande ", Helvetica, Arial, sans serif ; } 5 6 a { 7 color : #00B7FF ; 8 } 1 $ cd MySite && npm install $ npm start public/stylesheets/style.css Instalowanie zależności i uruchamianie aplikacji Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe

8 Aplikacja Hello World 3 Framework Express MongoDB Ogólna charakterystyka Nierelacyjna baza danych zorientowana dokumentowo Dobrze skalowana Szybka Nie posiada sztywnych schematów danych Podstawowe pojęcia Kolekcja odpowiednik tabeli w relacyjnej bazie danych Dokument odpowiednik wiersza w relacyjnej bazie danych Rysunek: Przykładowy dokument Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Aplikacja Hello World 3 Framework Express Model danych w MongoDB Referencje Osadzane dokumenty Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 30 Przedmiot: Aplikacje internetowe Aplikacja Hello World 3 Framework Express Instalowanie zależności Aplikacja Hello World 3 Framework Express Tworzenie zawartości bazy danych 1 $ vi package. json $ npm install #i n s t a l o w a n i e z a l e ż no ś c i " dependencies " : { 3... " monk " : "*" 5 } 6... package.json 1 $ mongo MongoDB shell version : connecting to : test > use bazatestowa1 5 switched to db bazatestowa1 6 > db. datacollection. insert ({ " title " : " Express & Mongo " }) 7 > db. datacollection. insert ({ " title " : " Express " }) 8 > db. datacollection. find ( ) 9 { " _id " : ObjectId ( "5 f8bb757bade7ec7171 " ), " title " : " Express & Mongo " } 10 { " _id " : ObjectId ( "5 f8bd07bade7ec717 " ), " title " : " Express " } 11 > db. datacollection. find ({ " title " : " Express " }) 1 { " _id " : ObjectId ( "5 f8bd07bade7ec717 " ), " title " : " Express " } Dr inż. Stanisław Polak 31 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 3 Przedmiot: Aplikacje internetowe

9 Aplikacja Hello World 3 Framework Express Modyfikacje var bodyparser = require ( body - parser ) ; 3 //Nowy kod var monk = require ( monk ) ; 5 var db = monk ( localhost :7017/ bazatestowa1 ) ; //Nowy kod 8 app. use ( function ( req, res, next ){ 9 req. db = db ; 10 next ( ) ; 11 }) ; 1 // I s t n i e j ą cy kod 13 app. use ( /, routes ) ; 1 app. use ( / users, users ) ; app.js router. get ( / titles, function ( req, res ) { 3 var db = req. db ; var collection = db. get ( datacollection ) ; 5 collection. find ({},{}, function ( e, docs ){ 6 res. render ( titlelist, { 7 " titlelist " : docs 8 }) ; 9 }) ; 10 }) ; 11 1 module. exports = router ; routes/index.js AngularJS Ogólna charakterystyka Wydajny, darmowy framework do tworzenia dynamicznych aplikacji WWW Korzysta z MVC Zgodność aplikacji AngulsJS z różnymi przeglądarkami Pozwala używać HTML jako język szablonów Rozszerza HTML o dodatkowe atrybuty i znaczniki 1 extends layout 3 block content h1 Tytu ł y 5 ul 6 each element in titlelist 7 li #{element. title} views/titlelist.jade Dr inż. Stanisław Polak 33 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 3 Przedmiot: Aplikacje internetowe Główne cechy Dwukierunkowe wiązanie danych Zasięgi Kontrolery Usługi Filtry Dyrektywy Szablony Routing Model View Whatever (MVW) Głębokie linkowanie Wstrzykiwanie zależności Dr inż. Stanisław Polak 35 Przedmiot: Aplikacje internetowe Zalety i wady AngularJS Zalety Zapewnia możliwość tworzenia pojedynczej strony aplikacji w bardzo zgrabny oraz kontrolowany sposób Zapewnia możliwość wiązania danych HTML, co wzbogaca doznania użytkownika serwisu Kod może być testowany w oparciu o mechanizm testów jednostkowych Wykorzystuje wstrzykiwanie zależności oraz pozwala na korzystanie z separacji zagadnień Zapewnia komponenty wielokrotnego użytku Deweloperzy mogą osiągnąć większą funkcjonalność z krótszego kodu Widoki są czystymi stronami HTML, a kontrolerzy napisane w JavaScript wykonują przetwarzania Wady Dr inż. Stanisław Polak 36 Przedmiot: Aplikacje internetowe Stworzone aplikacje nie są bezpieczne Nie działa gdy użytkownik wyłączy obsługę JS

10 Aplikacja Hello World Przykład użycia wzorca MVC 1 <! doctype html> <html> 3 <head> <meta charset="utf -8"> 5 <script src=" https :// ajax. googleapis. com / ajax / libs / angularjs /1..3/ angular.min.js"></ script> 6 </ head> 7 <body ng-app=" myapp "> 8 <! Widok > 9 <div ng-controller="hellocontroller " > 10 <h1>"{{message.hello}} {{message.world}}" mówi AngularJS</ h1> 11 </ div> 1 <! Kontroler > 13 <script> 1 angular. module ( " myapp ", [ ] ) 15. controller( " HelloController ", function ($scope) { 16 $scope.message = { 17 hello : " Witaj ", 18 world : "Ś wiecie " 19 }; 0 }) ; 1 </ script> </ body> 3 </ html> Witaj Świecie mówi AngularJS Etapy ładowania dokumentu HTML 1. Ewaluacja dokumentu HTML. Tworzonie obiektu globalnego angular 3. Rejestracja funkcji kontrolera. Skanowanie HTML 5. Łączenie widoku z odpowiednią funkcją kontrolera 6. Wykonywanie funkcji kontrolera 7. Renderowanie widoku Najważniejsze dyrektywy Przykład użycia wzorca MVVM <body> 3 <div ng-app=""> <p>wprowad ź swoje imi ę : <input type=" text " ng-model=" imie "></p> 5 <p>witaj <span ng-bind=" imie "></ span>!</p> 6 </ div> 7 </ body> 8... Wprowadź swoje imię: Stan Witaj Stan! Dr inż. Stanisław Polak 37 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 38 Przedmiot: Aplikacje internetowe Wyświetlanie danych złożonych <div ng app="" ng-init=" miasta =[{ kierunkowy :1, nazwa : Kraków },{ kierunkowy :, nazwa : Warszawa }] "> 3 <h1>lista numer ów kierunkowych</h1> <ul> 5 <li ng-repeat=" miasto in miasta "> 6 {{"Nr kierunkowy : "+miasto. kierunkowy+", miasto : "+ miasto. nazwa }} 7 </li> 8 </ul> 9 </ div> Lista numerów kierunkowych Nr kierunkowy: 1, miasto: Kraków Nr kierunkowy:, miasto: Warszawa Dr inż. Stanisław Polak 39 Przedmiot: Aplikacje internetowe Wyrażenia <div ng app="" ng i n i t=" ilosc=1; cena =30; student={ id :1, imie : Jan, nazwisko : Kowalski }; oceny =[3.5,.0,.5] "> 3 <! Korzystanie z napis ów > 5 Informacje nt. studenta {{student. imie + " " + student. nazwisko}} 6 <ul> 7 <! K o r z y s t a n i e z o b i e k t u > 8 <li>twój id : {{student. id}} 9 <! K o r z y s t a n i e z l i c z b > 10 <li>wydatki na książki : {{cena ilosc}} z ł 11 <! K o r z y s t a n i e z t a b l i c y > 1 <li>ocena z matematyki : {{oceny [ ] } } 13 </ul> 1 </ div> Informacje nt. studenta Jan Kowalski Twój id: 1 Wydatki na książki : 30 zł Ocena z matematyki:.5 Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 0 Przedmiot: Aplikacje internetowe

11 Kontrolery Moduły <div ng app=" myapp " ng-controller=" studentcontroller "> 3 Podaj imi ę : <input type=" text " ng model=" student. imie "><br><br> Podaj nazwisko : <input type=" text " ng model=" student. nazwisko "><br> 5 <br> 6 Wprowadzasz : {{student. pelnanazwa ( )}} 7 </ div> 8 <script> 9 angular. module ( " myapp ", [ ] ) 10. controller ( " studentcontroller ", function ($scope) { 11 $scope.student = { 1 imie : " Jan ", 13 nazwisko : " Kowalski ", 1 pelnanazwa : function ( ) { 15 var obiektstudent ; 16 obiektstudent = $scope. student ; 17 return obiektstudent. imie + " " + obiektstudent. nazwisko ; 18 } 19 }; 0 }) ; 1 </ script>... Podaj imię: Jan Podaj nazwisko: Kowalski Wprowadzasz: Jan Kowalski 1 var myapp = angular. module ( " myapp ", [ ] ) ; myapp.js Korzystanie z modułów 1 myapp. controller ( " studentcontroller ", function ( $scope ) { $scope. student = { 3 imie : " Jan ", nazwisko : " Kowalski ", 5 pelnanazwa : function ( ) { 6 var studentobject ; 7 studentobject = $scope. student ; 8 return studentobject. imie + " " + studentobject. nazwisko ; 9 } 10 }; 11 }) ; studentcontroller.js <script src="https ://ajax.googleapis.com /ajax /libs /angularjs /1..3/ angular.min.js"></ script> 3 <script src=" myapp.js"></ script> <script src=" studentcontroller.js"></ script> <div ng app=" myapp " ng c o n t r o l l e r=" studentcontroller "> 7 Podaj imi ę : <input type=" text " ng model=" student. imie "><br><br> 8 Podaj nazwisko : <input type=" text " ng model=" student. nazwisko "><br> 9 <br> 10 Wprowadzasz : {{student. pelnanazwa ( )}} 11 </ div> 1... index.html Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Filtry DOM <body ng app=""> 3 <div ng i n i t=" studenci = [{ imie : Jan, nazwisko : Kowalski }, { imie : Małgorzata, nazwisko : Nowak }, 5 { imie : Anna, nazwisko : Nowak }] "></ div> 6 <label>szukaj : <input ng model=" szukanytekst "></ label> 7 <ul> 8 <! szukanytekst j e s t,, zmienn ą p r z e c h o w u j ą c ą t r e ś ć wprowadzon ą w powy ż szym p o l u <input> > 9 <li ng r e p e a t=" student in studenci filter: szukanytekst ">{{student. nazwisko}} {{student. imie}}</li> 10 </ul> 11 </ body> 1... Szukaj: Kowalski Jan Nowak Małgorzata Nowak Anna index.html Szukaj: Now Nowak Małgorzata Nowak Anna <div ng app=" myapp " ng c o n t r o l l e r=" studentcontroller "> 3 Podaj imi ę : <input type="text " ng model=" student.imie " ng-disabled=" disabletextfield "><br> 5 Podaj nazwisko : 6 <input type="text " ng model=" student. nazwisko " ng-disabled=" disabletextfield "><br > 7 Wprowadzasz : {{student. pelnanazwa ( ) }} 8 <p> 9 <input type=" checkbox " ng model="disabletextfield">dezaktywuj pola tekstowe 10 </p> 11 </ div> 1... index.html Dr inż. Stanisław Polak 3 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe

12 Walidacja i wypełnianie formularza <div ng app=" myapp " ng c o n t r o l l e r=" studentcontroller "> 3 <form name=" formularz " novalidate> Podaj imi ę : <input name=" imie " type=" text " ng model=" student. imie " required> 5 <span style=" color : red " ng-show=" formularz. imie. $dirty && formularz. imie. $invalid "> 6 <span ng-show=" formularz. imie. $error. required ">Nie poda ł eś imienia</ span> 7 </ span> 8 <br> 9 Podaj nazwisko : <input name=" nazwisko " type=" text " ng model=" student. nazwisko " required> 10 <span style=" color : red " ng-show=" formularz. nazwisko. $dirty && formularz. nazwisko. $invalid "> 11 <span ng-show=" formularz. nazwisko. $error. required ">Nie poda ł eś nazwiska</ span> 1 </ span><br> 13 <button ng c l ic k=" reset ()">Kasuj</ button> 1 <button ng disabled=" formularz. imie. $dirty && formularz. imie. $invalid formularz. nazwisko. $dirty && formularz. nazwisko. $invalid " 15 ng-click=" submit ()">Wy ś lij</ button> 16 </ form> 17 </ div> index.html Wstawki <div ng app=" myapp " ng c o n t r o l l e r=" studentcontroller "> 3 <div ng-include=" imie.html "></ div> <div ng-include=" nazwisko.html "></ div> 5 </ div> 6... index.html 1 Podaj imi ę : <input name=" imie " type=" text " ng model=" student. imie "> imie.html 1 Podaj nazwisko : <input name=" nazwisko " type="text " ng model=" student. nazwisko "> 1 myapp. controller ( " studentcontroller ", function ( $scope ) { $scope. student = { 3 imie :, nazwisko : 5 }; 6 $scope. reset = function ( ) { 7 $scope. student. imie="jan " ; 8 $scope. student. nazwisko="kowalski " ; 9 }; 10 $scope. reset ( ) ; 11 }) ; studentcontroller.js Podaj imię: Podaj nazwisko: nazwisko.html Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Użycia technologii AJAX Przełączalne widoki <div ng app=" myapp " ng c o n t r o l l e r=" studentcontroller "> 3 <ol> <li ng r e p e a t=" student in students ">{{ student. nazwisko}} {{student. imie}}</ li> 5 </ol> 6 </ div> 7... index.html 1 [ { 3 " imie " : " Jan ", " nazwisko " : " Kowalski " 5 }, 6 { 7 " imie " : " Anna ", 8 " nazwisko " : " Nowak " 9 } 10 ] students.json 1 myapp. controller ( " studentcontroller ", function ( $scope, $http ) { $http. get ( "students.json " ). success ( function ( response ) { 3 $scope. students = response ; }) ; 5 }) ; 1. Kowalski Jan. Nowak Anna studentcontroller.js 1 <h>dodaj studenta</h> {{message}} addstudent.html 1 <h>wy ś wietl student ów</h> {{message}} viewstudents.html <script s r c=" https :// ajax. googleapis. com / ajax / libs /angularjs /1..3/ angular -route.min.js"></ script> 3... <div ng app=" myapp "> 5 <p><a href=" #addstudent ">Dodaj Studenta</a></p> 6 <p><a href=" #viewstudents ">Wy ś wietl student ów</a ></p> 7 <div ng-view></ div> 8 </ div> 9 <script> 10 var myapp = angular. module ( " myapp ", [ ngroute ] ) ; 11 1 myapp. config ( [ $routeprovider, 13 function ( $routeprovider ) { 1 $routeprovider. 15 when ( /addstudent, { 16 templateurl : addstudent. html, 17 controller : AddStudentController 18 }). 19 when ( /viewstudents, { 0 templateurl : viewstudents. html, 1 controller : ViewStudentsController }). 3 otherwise ({ redirectto : / addstudent 5 }) ; 6 }]) ; 7 8 myapp. controller ( AddStudentController, function ( $scope ) { 9 $scope. message = "Ta strona bę dzie uż ywana do wyś wietlenia formularza dodawania studenta " ; 30 }) ; 31 3 myapp. controller ( ViewStudentsController, function ( $scope ) { 33 $scope. message = "Ta strona bę dzie uż ywana do wyś wietlania wszystkich student ów" ; 3 }) ; 35 </ script> index.html Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe

13 Przełączalne widoki Szablon widoku inline 17 <script> 18 var myapp = angular. module ( " myapp ", [ ngroute ] ) ; 19 0 myapp. config ( [ $routeprovider, 1 function ( $routeprovider ) { $routeprovider. 3 when ( / addstudent, { <script src=" https :// ajax. googleapis. com / ajax / templateurl : addstudent. html, libs /angularjs /1..3/ angular -route.min.js 5 controller : AddStudentController "></ script> 6 }) when ( / viewstudents, { <div ng app=" myapp "> 8 templateurl : viewstudents. html, 5 <p><a href="# addstudent ">Dodaj Studenta</a></p 9 controller : ViewStudentsController > 30 }). 6 <p><a href="# viewstudents ">Wy ś wietl student ów< 31 otherwise ({ /a></p> 3 redirectto : / addstudent 7 <div ng view></ div> 33 }) ; 8 <script type=" text /ng-template" i d=" addstudent. 3 }]) ; html "> 35 9 <h>dodaj studenta</h> 36 myapp. controller ( AddStudentController, 10 {{message}} function ( $scope ) { 11 </ script> 37 $scope. message = "Ta strona bę dzie uż ywana do 1 <script type=" text /ng-template" i d=" viewstudents wyś wietlenia formularza dodawania. html "> studenta " ; 13 <h>wy ś wietl student ów</h> 38 }) ; 1 {{message}} </ script> 0 myapp. controller ( ViewStudentsController, 16 </ div> function ( $scope ) { 1 $scope. message = "Ta strona bę dzie uż ywana do wyś wietlania wszystkich student ów" ; }) ; 3 </ script> index.html Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Zasięgi <div ng app=" mainapp " ng controller=" shapecontroller "> 3 <! Widok > <p>{{message}} <br/> {{type}} </p> 5 <div ng controller=" circlecontroller "> 6 <p>{{message}} <br/> {{type}} </p> 7 </div> 8 <div ng controller=" squarecontroller "> 9 <p>{{message}} <br/> {{type}} </p> 10 </div> 11 </div> 1 <script> 13 var mainapp = angular. module ( " mainapp ", [ ] ) ; 1 mainapp. controller ( " shapecontroller ", function ($scope) { 15 $scope.message = "W kontrolerze kszta łtu" ; 16 $scope.type = "Kszta łt" ; 17 }) ; mainapp. controller ( " circlecontroller ", function ( $scope ) { 0 $scope.message = "W kontrolerze okr ęgu" ; 1 }) ; 3 mainapp. controller ( " squarecontroller ", function ( $scope ) { $scope.message = "W kontrolerze kwadratu " ; 5 $scope.type = "Kwadrat " ; 6 }) ; 7 </script> 8... W kontrolerze kształtu Kształt W kontrolerze okręgu Kształt W kontrolerze kwadratu Kwadrat Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 50 Przedmiot: Aplikacje internetowe Tworzenie własnych usług Kontrolery są tworzone w ramach tego jak są potrzebne i usuwane, gdy przestają być używane Usługa to zwykły obiekt, który ma za zadanie wykonać jakąś pracę Usługi są tworzone jednorazowo (jako singletony) i mogą być wstrzykiwane jako zależność do wielu kontrolerów Nazwy usług wbudowanych rozpoczynają się od znaku $ nazwy naszych własnych serwisów nie powinny rozpoczynać się od znaku $ Dlaczego warto używać własnych usług? Jesteśmy w stanie podzielić kod na mniejsze logiczne fragmenty Taki kod może być użyty wielokrotnie w naszej aplikacji Zasada pojedynczej odpowiedzialności nigdy nie powinno być więcej niż jednego powodu do modyfikacji klasy Wstrzykiwanie zależności usługi można wstrzykiwać do naszych kontrolerów lub innych usług Łatwiejsze testowanie mniejszy kod łatwiej się testuje Typy usług: Wartość Fabryka Serwis Dostawca Stała Dr inż. Stanisław Polak 51 Przedmiot: Aplikacje internetowe Tworzenie usługi typu Wartość 1 // Definiowanie warto ś c i var mymodule = angular. module ( " mymodule ", [ ] ) ; 3 mymodule. value( " numbervalue ", 999) ; mymodule. value( " stringvalue ", "abc " ) ; 5 mymodule. value( " objectvalue ", { val1 : 13, val : "abc "} ) ; 6 7 // W s t r z y k i w a n i e warto ś c i do k o n t r o l e r a 8 mymodule. controller ( " MyController ", function ( $scope, numbervalue ) { 9 console. log ( numbervalue ) ; // Wypisze : }) ; Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe

14 Tworzenie usługi typu Fabryka Tworzenie usługi typu Serwis 1 var mymodule = angular. module ( " mymodule ", [ ] ) ; 3 // Definiowanie warto ś c i mymodule. value ( " numbervalue ", 999) ; 5 6 // W s t r z y k i w a n i e warto ś c i do f a b r y k i 7 mymodule. factory( " myfactory ", function ( numbervalue ) { 8 return "a value : " + numbervalue ; 9 }) ; // W s t r z y k i w a n i e f a b r y k i do k o n t r o l e r a 1 mymodule. controller ( " MyController ", function ( $scope, myfactory ) { 13 console. log ( myfactory ) ; // Wypisze : a v a l u e }) ; 1 var mymodule = angular. module ( " mymodule ", [ ] ) ; 3 mymodule. value ( " myvalue ", " 135 " ) ; 5 // Wstrzykiwanie warto ś c i do serwisu 6 function MyService ( myvalue ) { 7 this. doit = function ( ) { 8 console. log ( " done : " + myvalue ) ; 9 } 10 } 11 1 mymodule. service( " myservice ", MyService ) ; 13 //Wewnę t r z n i e j e s t wykonywane : v a r t h e S e r v i c e = new MyService ( ) ; 1 15 // W s t r z y k i w a n i e s e r w i s u do k o n t r o l e r a 16 mymodule. controller ( " MyController ", function ( $scope, MyService ) { 17 myservice. doit ( ) ; // Wypisze : done : }) ; Dr inż. Stanisław Polak 53 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Tworzenie usługi typu Dostawca Tworzenie usługi typu Stała 1 var mymodule = angular. module ( " mymodule ", [ ] ) ; 3 mymodule. provider( " mysecondservice ", function ( ) { var provider = {}; 5 6 // D e f i n i o w a n i e dostawcy 7 provider. $get = function ( ) { 8 var service = {}; 9 10 service. doservice = function ( ) { 11 console. log ( " mysecondservice : Service Done!" ) ; 1 } 13 return service ; 1 } 15 return provider ; 16 }) ; // W s t r z y k i w a n i e dostawcy do k o n t r o l e r a 19 mymodule. controller ( " MyController ", function ( $scope, mysecondservice) { 0 mysecondservice. doservice ( ) ; // Wypisze : mysecondservice : Se r vi c e Done! 1 }) ; 1 var mymodule = angular. module ( " mymodule ", [ ] ) ; 3 mymodule. provider ( " mysecondservice ", function ( ) { var provider = {}; 5 var config = { configparam : " default " }; 6 7 provider. doconfig = function ( configparam ) { 8 config. configparam = configparam ; 9 } provider. $get = function ( ) { 1 var service = {}; 13 1 service. doservice = function ( ) { 15 console. log ( " mysecondservice : " + config. configparam ) ; 16 } return service ; 19 } 0 1 return provider ; }) ; 3 mymodule. constant( "configvalue ", "constant config value " ) ; 5 mymodule. config( function ( mysecondserviceprovider, configvalue ) { 6 mysecondserviceprovider. doconfig ( configvalue ) ; 7 }) ; 8 9 mymodule. controller ( " MyController ", function ( $scope, mysecondservice ) { 30 mysecondservice. doservice ( ) ; // Wypisze : mysecondservice : c o n s t a n t c o n f i g v a l u e 31 }) ; Dr inż. Stanisław Polak 55 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 56 Przedmiot: Aplikacje internetowe

15 Definiowanie własnej usługi Przykład Minimalizacja kodu JS a wstrzykiwanie zależności Wersja oryginalna 1 myapp. controller ( " studentcontroller ", function ( $scope, $http ) { $http. get ( "students.json " ). success ( function ( response ) { 3 $scope. students = response ; }) ; 5 }) ; Wersja zmodyfikowana studentcontroller.js 1 myapp. factory ( " studentsfactory ", function ( $http ) { return $http. get ( "students.json " ) ; 3 }) ; 5 myapp. controller ( " studentcontroller ", function ( $scope, studentsfactory ) { 6 $scope. students = studentsfactory. success ( function ( response ) { 7 $scope. students = response ; 8 }) ; 9 }) ; studentcontroller.js Wersja niezalecana 1 myapp. controller ( " studentcontroller ", function ( $scope, $http ) { $http. get ( " students.json " ). success ( function ( response ) { 3 $scope. students = response ; }) ; 5 }) ; 1 myapp. controller ( " studentcontroller ", function ( t, n ){n. get ( " students. json " ). success ( function ( n ){t. students= n }) }) ; Wersja zminimalizowana Wersja zalecana 1 myapp. controller ( " studentcontroller ", [ 3 $scope, $http, 5 function( $scope, $http ) { 6 $http. get ( " students.json " ). success ( function ( response ) { 7 $scope. students = response ; 8 }) ; 9 }]) ; 1 myapp. controller ( " studentcontroller ", [ " $scope ", " $http ", function ( t, n ){n. get ( " students. json " ). success ( function ( n ){t. students=n }) } ] ) ; Wersja zminimalizowana Dr inż. Stanisław Polak 57 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 58 Przedmiot: Aplikacje internetowe Definiowanie niestandardowych dyrektyw <div ng app=" myapp " ng c o n t r o l l e r=" StudentController "> 3 <s t u d e n t i n f o s t u d e n t=" kowalski "></ s t u d e n t i n f o> <s t u d e n t i n f o s t u d e n t=" nowak "></ s t u d e n t i n f o> 5 </ div> 6 7 <script> 8 myapp = angular. module ( " myapp ", [ ] ) ; 9 10 myapp. directive ( studentinfo, function ( ) { 11 var directive = {}; 1 13 directive. restrict = E ; 1 15 directive. template = "Student : <b >{{ student.imie }}</b> <b >{{ student.nazwisko }}</b>" ; directive.scope = { 18 student : "= student " 19 } 0 1 return directive ; }) ; 3 myapp. controller ( " StudentController ", function ( $scope, $http ) { 5 $scope. kowalski = {}; 6 $scope. kowalski. imie = "Jan " ; 7 $scope. kowalski. nazwisko = "Kowalski " ; 8 9 $scope. nowak = {}; 30 $scope. nowak. imie = " Anna " ; 31 $scope. nowak. nazwisko = "Nowak " ; 3 }) ; 33 </ script> 3... Dr inż. Stanisław Polak 59 Przedmiot: Aplikacje internetowe Umiędzynarodowienie <script src=" pl-pl.js"></ script> 3... <div ng app=" myapp " ng c o n t r o l l e r=" StudentController "> 5 {{fees currency }} <br/><br/> 6 {{admissiondate date }} <br/><br/> 7 {{rollno number }} 8 </ div> 9 10 <script> 11 var myapp = angular. module ( " myapp ", [ ] ) ; 1 myapp. controller ( StudentController, function ( $scope ) { 13 $scope. fees = ; 1 $scope. admissiondate = new Date ( ) ; 15 $scope. rollno = ; 16 }) ; 17 </ script> 100,00 zł 1 lut ,89 Materiały dla studentów Informatyki WSZiB w Krakowie Dr inż. Stanisław Polak 60 Przedmiot: Aplikacje internetowe

16 Źródła Źródła Źródła I Źródła II Acodemy. Serwisy angularjs. MongoDB Inc. The MongoDB Manual. Jakob Jenkov. AngularJS Tutorial. Joyent. Node.js Manual & Documentation. Maciej Rzepiński. Angularjs factory vs service vs provider. angularjs-8-factory-vs-service-vs-provider.html. Tutorialspoint. AngularJS Tutorial. Dr inż. Stanisław Polak 61 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe

Materiały dla studentów Informatyki WSZiB w Krakowie

Materiały dla studentów Informatyki WSZiB w Krakowie Tworzenie aplikacji w języku JavaScript Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Materiały dla studentów

Bardziej szczegółowo

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński rperlinski@icis.pcz.pl

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński rperlinski@icis.pcz.pl ngular, cz. II 1/24 Angular, cz. II Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 10 kwietnia 2015

Bardziej szczegółowo

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

WYKŁAD 1 ANGULARJS CZĘŚĆ 1 WYKŁAD 1 ANGULARJS CZĘŚĆ 1 DEFINICJA ANGULARJS Framework JavaScript na licencji open-source wykorzystywany do tworzenia aplikacji SPA (single page applications) w oparciu o wzorzec projektowy Model-View-Controler.

Bardziej szczegółowo

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 /

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Co to jest NODE.JS? Nowoczesne środowisko programistyczne Node.js Co to jest NODE.JS? Nowoczesne środowisko programistyczne Środowisko programistyczne w sensie zestawu gotowych klas i metod których można używać do przygotowania własnych skalowalnych i wydajnych

Bardziej szczegółowo

Framework Angular4. Alicja Frankowicz Weronika Węglińska

Framework Angular4. Alicja Frankowicz Weronika Węglińska Framework Angular4 Alicja Frankowicz Weronika Węglińska Angular Pierwszym wydaniem Angulara był Angular1, zwany także AngularJS. Opierał się on na języku JavaScript oraz na wzorcu MVC wdrożonego do aplikacji

Bardziej szczegółowo

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

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Konfiguracja i przygotowanie przykładowej aplikacji opartej o model Model-View- Controller Konfiguracja frameworka Zainstaluj na serwerze

Bardziej szczegółowo

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

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,

Bardziej szczegółowo

Laboratorium 1 Wprowadzenie do PHP

Laboratorium 1 Wprowadzenie do PHP Laboratorium 1 Wprowadzenie do PHP Ćwiczenie 1. Tworzenie i uruchamianie projektu PHP w Netbeans Tworzenie projektu Uruchom środowisko NetBeans. Stwórz nowy projekt typu PHP Application (File->New Project,

Bardziej szczegółowo

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 6 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Kontrola dostępu

Bardziej szczegółowo

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science Systemy internetowe Wykład 3 PHP PHP - cechy PHP (Hypertext Preprocessor) bardzo łatwy do opanowania, prosta składnia, obsługuje wymianę danych z różnymi systemami baz danych pozwala na dynamiczne generowanie

Bardziej szczegółowo

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki (AGH, KIS) PHP 23 października 2016 1 / 29 NoSQL Not Only SQL: CouchDB Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki Katedra Informatyki Stosowanej,

Bardziej szczegółowo

server.listen(port, hostname, () => { console.log(`server running at });

server.listen(port, hostname, () => { console.log(`server running at  }); TECHNIKI WWW (WFAIS.IF-C125) (zajęcia 04.01.2017 r. i 11.01.2017) Dla przypomnienia uruchamianie serwera http podającego statyczną treść polegało na stworzeniu skryptu wraz z osadzonym kodem statycznej

Bardziej szczegółowo

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI SPIS TREŚCI 1.Dwie metody przekazu danych do serwera 2 2.Metoda GET przykład 3 3.Metoda POST przykład 4 4.Kiedy GET a kiedy POST 5 5.Szablony po co je stosować 7 6.Realizacja szablonu własną funkcją 8

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 2

MVC w praktyce tworzymy system artykułów. cz. 2 MVC w praktyce tworzymy system artykułów. cz. 2 W drugiej części artykułu o wzorcu MVC stworzymy część skryptu, odpowiedzialną za obsługę kategorii. Tworzymy kontroler kategorii Na początek stwórzmy plik

Bardziej szczegółowo

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 6 Tworzenie bloga w Zend Framework Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 1

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

Quiz Aplikacja internetowa

Quiz Aplikacja internetowa - 1 - Quiz Aplikacja internetowa Opis: Realizacja aplikacji internetowej Quiz w oparciu o Python i framework Flask (wersja 0.10.1). Autorzy: Tomasz Nowacki, Robert Bednarz Czas realizacji: 90 min Poziom

Bardziej szczegółowo

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Aplikacje webowe z wykorzystaniem Node.js oraz Express Aplikacje webowe z wykorzystaniem Node.js oraz Express Adresaci szkolenia: Kurs przeznaczony jest dla programistów pragnących tworzyć skalowalne aplikacje z wykorzystaniem Node.js. Parametry szkolenia:

Bardziej szczegółowo

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

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery Łukasz Bartczuk Moduł 6 JavaScript w przeglądarce Agenda Skrypty na stronie internetowej Model DOM AJAX Skrypty na stronie

Bardziej szczegółowo

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Statyczne strony HTML Wczytanie statycznej strony HTML sprowadza się do odebrania żądania przez serwer, odnalezienia właściwego pliku

Bardziej szczegółowo

Zaawansowane aplikacje internetowe laboratorium REST

Zaawansowane aplikacje internetowe laboratorium REST Zaawansowane aplikacje internetowe laboratorium REST Pytka Bartosz, Drożdż Mateusz, Ejkszto Mateusz, Łozowski Marcin, Tański Mariusz Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne

Bardziej szczegółowo

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

O sobie. Adam Kowalski. Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes. Wstęp do Angulara O sobie Adam Kowalski Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes adam.kowalski@synergycodes.com https://www.synergycodes.com Plan wykładu

Bardziej szczegółowo

Wykład 5: PHP: praca z bazą danych MySQL

Wykład 5: PHP: praca z bazą danych MySQL Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Środowisko Django początki 10 stycznia 2014 Plan wykładu 1 2 Plan wykładu 1 2 Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych. Co to jest Django Oparty o Pythona framework

Bardziej szczegółowo

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

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS) Zaawansowane Techniki WWW (HTML, CSS i NODE.JS) Dr inż. Marcin Zieliński Środa 15:30-17:00 sala: A-1-04 WYKŁAD 8 Wykład dla kierunku: Informatyka Stosowana II rok Rok akademicki: 2014/2015 - semestr zimowy

Bardziej szczegółowo

Systemy internetowe Wykład 3 PHP

Systemy internetowe Wykład 3 PHP Systemy internetowe Wykład 3 PHP PHP - cechy PHP (Hypertext Preprocessor) bardzo łatwy do opanowania, prosta składnia, obsługuje wymianę danych z różnymi systemami baz danych pozwala na dynamiczne generowanie

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

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

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia Kod szkolenia: Tytuł szkolenia: DED/FSJS Full Stack JavaScript z Angular i Nest Dni: 5 Opis: Adresaci szkolenia Kurs przeznaczony jest dla programistów posiadających podstawową wiedzę w zakresie JavaScript,

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe CherryPy, Genshi Paweł Daniluk Wydział Fizyki Jesień 2016 P. Daniluk(Wydział Fizyki) PO w. IX Jesień 2016 1 / 20 Aplikacje webowe Podejście standardowe Serwer (np.

Bardziej szczegółowo

Express.js i własne API - pomoc do lab02

Express.js i własne API - pomoc do lab02 xpress.js i własne API - pomoc do lab02 1/27 Express.js i własne API - pomoc do lab02 Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Aplikacje WWW. Statyczne oraz dynamiczne strony WWW. Skrypty po stronie klienta. Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki

Bardziej szczegółowo

pawel.rajba@gmail.com, http://kursy24.eu/

pawel.rajba@gmail.com, http://kursy24.eu/ pawel.rajba@gmail.com, http://kursy24.eu/ Wprowadzenie, struktura Podstawy Twig Adres i nawigacja Request, Response i parametry Ciasta, sesje i flash messages Model i baza danych Formularze Security Ilustracje

Bardziej szczegółowo

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH szkolenie dla webdeveloperów ze znajomością przynajmniej podstaw HTML i JavaScript INFORMACJE PODSTAWOWE AngularJS to framework JavaScript stworzony przez inżynierów

Bardziej szczegółowo

Kurs języka Ruby. Ruby on Rails ActionPack

Kurs języka Ruby. Ruby on Rails ActionPack Kurs języka Ruby Ruby on Rails ActionPack Co to jest RoR: Środowisko do szybkiego tworzenia aplikacji webowych Garść informacji Stworzony przez Davida Heinemeiera Hanssona DRY Don't Repeat Yourself Mnóstwo

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje

Bardziej szczegółowo

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API OPT Open Power Template System szablonów OPT System szablonów PHP5 Niektóre możliwości: Cache Nagłówki HTTP oraz kompresja Rozszerzalność Struktury kontrolne Wysokopoziomowe struktury Ułatwienia Wysoka

Bardziej szczegółowo

Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę. Podstawy wzorca MVC MODEL KON- TROLER WIDOK Zawiera dane aplikacji oraz jej logikę. MODEL WIDOK Odpowiada za wyświetlenie danych użytkownikowi KON- TROLER KON- TROLER MODEL WIDOK Jedyna część aplikacji,

Bardziej szczegółowo

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak Wieloplatformowe aplikacje sieciowe dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak SOAP Serwer: Axis2 / Java Wbudowany komponent nasłuchujący, (Apache / Tomcat) Client Axis2 klient / XML Jeżyk programowania:

Bardziej szczegółowo

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2012. W ramach projektu budowana jest prosta

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Aplikacje WWW. Statyczne oraz dynamiczne strony WWW. Skrypty po stronie klienta. dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki

Bardziej szczegółowo

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

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne: Popularne dostępne rozwiązania Najpopularniejsze środowiska programistyczne: Popularne dostępne rozwiązania Najpopularniejsze środowiska programistyczne: oraz systemy CMS (Content Menager System): Dlaczego

Bardziej szczegółowo

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe Zaawansowane aplikacje internetowe AJAX 1 Celem tego laboratorium jest pokazanie moŝliwości technologii AJAX. W ramach ćwiczeń zostanie zbudowana prosta aplikacja, przechwytująca kliknięcia uŝytkownika

Bardziej szczegółowo

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz Walidacja po stronie klienta: - w MVC 3 i 4 domyślnie jest włączona także walidacja po stronie klienta - wykorzystuje ona JavaScript

Bardziej szczegółowo

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej

Bardziej szczegółowo

Dokumentacja Skryptu Mapy ver.1.1

Dokumentacja Skryptu Mapy ver.1.1 Dokumentacja Skryptu Mapy ver.1.1 2 Dokumentacja Skryptu Mapy ver.1.1 Spis treści Dokumentacja skryptu... 3 Dodatkowe informacje i kontakt... 7 3 Dokumentacja Skryptu Mapy ver.1.1 Dokumentacja skryptu

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych MySQL studia zaoczne II stopnia, sem. I Plan wykładu 1. MySQL: funkcje, procedury, wyzwalacze 2. HTML : tworzenie

Bardziej szczegółowo

Programowanie zorientowane obiektowo. Mateusz Kołecki

Programowanie zorientowane obiektowo. Mateusz Kołecki Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać

Bardziej szczegółowo

Wykład 03 JavaScript. Michał Drabik

Wykład 03 JavaScript. Michał Drabik Wykład 03 JavaScript Michał Drabik Język programowania wykorzystywany na stronach internetowych głównie w celu umożliwienia interakcji z użytkownikiem. Kod JavaScript może być umieszczany w kodzie XHTML

Bardziej szczegółowo

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny Scenariusz Web Design DHTML na 10 sesji L.p. Specyficzne detale 2.1 - Strony statyczne I dynamiczne - Dodawanie kodu VBScript do strony HTML doc w Rysunek nie jest potrzebny 2.1.1 Opcje w pisaniu skryptów

Bardziej szczegółowo

Bardzo szybkie wprowadzenie do Node.js

Bardzo szybkie wprowadzenie do Node.js ardzo szybkie wprowadzenie do Node.js 1/16 Bardzo szybkie wprowadzenie do Node.js Technologie zarządzania treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Język PHP Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) BDiUS w. VIII Jesień 2013 1 / 43 Plan wykładu 1 Język PHP 2 Składnia PHP 3 Dostęp do bazy danych

Bardziej szczegółowo

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

PROJEKTOWANIE APLIKACJI INTERNETOWYCH PROJEKTOWANIE APLIKACJI INTERNETOWYCH (WFAIS.IF-N016) dr inż. Marcin Zieliński Wykład dla kierunku: Informatyka Stosowana I rok, II stopień Rok akademicki: 2016/2017 - semestr letni WYKŁAD 6 Przypomnienie

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera

Bardziej szczegółowo

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

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski Uniwersytet Warszawski 6 kwiecień 2009 Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji

Bardziej szczegółowo

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

W czystym JavaScripcie zasięgi zmiennych tworzone były poprzez funkcje anonimowe, w AngularJS posiadamy kontrolery, które także są funkcjami. Zrozumienie tego artykułu jest kluczowe aby móc tworzyć aplikacje w AngularJS. Do tej pory powinieneś wiedzieć czym jest Angular, umieć utworzyć moduł główny aplikacji i podpiąć do niego kontroler. Zdefiniowany

Bardziej szczegółowo

1. Otwórz app_advanced.html i skopiuj i wklej następujący kod bezpośrednio w tagach <head>:

1. Otwórz app_advanced.html i skopiuj i wklej następujący kod bezpośrednio w tagach <head>: Rozszerzanie WordPressa do mobilnego świata W ostatniej części dowiedzieliśmy się, w jaki sposób możemy tworzyć aplikacje mobilne za pomocą PhoneGap. Teraz będziemy kontynuować budowanie aplikacji mobilnych

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

https://portal.clusterix.pl:8443 trainxx tramxx

https://portal.clusterix.pl:8443 trainxx tramxx Logowanie 1. Otworzyć w oknie przeglądarki adres: https://portal.clusterix.pl:8443 2. Zalogować się używając konta, użytkownik: trainxx, hasło: tramxx Delegacja certyfikatu proxy 1. Zalogować poprzez ssh

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

Lista ToDo Aplikacja internetowa

Lista ToDo Aplikacja internetowa - 1 - Lista ToDo Aplikacja internetowa Opis: Realizacja prostej listy ToDo (lista zadań do zrobienia), jako aplikacji internetowej, z wykorzystaniem Pythona i frameworka Flask w wersji 0.10.1. Autorzy:

Bardziej szczegółowo

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

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami. LABORATORIUM 5: WebRTC komunikacja między terminalami. Wprowadzenie Technika WebRTC (złożenie angielskiego słowa Web oraz akronimu RTC, pochodzącego od angielskiego Real-Time Communications, komunikacja

Bardziej szczegółowo

Umieszczanie kodu. kod skryptu

Umieszczanie kodu. kod skryptu PHP Definicja PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona

Bardziej szczegółowo

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

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX. Protokół HTTP 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX. 1 Usługi WWW WWW (World Wide Web) jest najpopularniejszym sposobem udostępniania

Bardziej szczegółowo

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

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

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 Spis treści Wstęp 5 Rozdział 1. Praca z AJAX-em 9 Pierwszy przykład 9 Obiekt XMLHttpRequest 12 Transmisja danych 21 Model DOM 34 Obsługa wielu żądań 45 Rozdział 2. Współpraca ze skryptami PHP 55 Odbieranie

Bardziej szczegółowo

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

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

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

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty Wybrane działy Informatyki Stosowanej Format HTML Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty dr hab. inż. Andrzej Czerepicki 2019 Definicja HTML HyperText Markup Language

Bardziej szczegółowo

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1 Przykład programu w PHP Wykład10.PHP ciągdalszy,str.1 Przykład programu w PHP Wykład10.PHP ciągdalszy,str.1 Przeliczanie dnia roku na dzień i miesiąc: function jaka data($dni) {... Przykład programu w

Bardziej szczegółowo

Jak okiełznać frontend w Django? Piotr Maliński www.python.rk.edu.pl

Jak okiełznać frontend w Django? Piotr Maliński www.python.rk.edu.pl Jak okiełznać frontend w Django? Piotr Maliński www.python.rk.edu.pl Problemy frontendu Trudne testowanie i debugowanie Różne przeglądarki Różne ustawienia przeglądarek Urządzenia dotykowe Przekazywanie

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie

Bardziej szczegółowo

Technologie internetowe ASP.NET Core. Paweł Rajba

Technologie internetowe ASP.NET Core. Paweł Rajba Technologie internetowe ASP.NET Core Paweł Rajba pawel@cs.uni.wroc.pl http://itcourses.eu/ Plan wykładu Wprowadzenie Podstawowa aplikacja Usługi i middleware Obsługa błędów Request, Response, ciastka i

Bardziej szczegółowo

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

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //... JQuery jquery (jquery.com) to jedna z najbardziej popularnych bibliotek/frameworków do javascript. Jej popularność oczywiście znikąd się nie bierze. Dzięki tej bibliotece jesteśmy w stanie o wiele szybciej

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07 PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się

Bardziej szczegółowo

Rys.2.1. Drzewo modelu DOM [1]

Rys.2.1. Drzewo modelu DOM [1] 1. CEL ĆWICZENIA Celem ćwiczenia jest przedstawienie możliwości wykorzystania języka JavaScript do tworzenia interaktywnych aplikacji działających po stronie klienta. 2. MATERIAŁ NAUCZANIA 2.1. DOM model

Bardziej szczegółowo

CouchDB. Michał Nowikowski

CouchDB. Michał Nowikowski CouchDB Michał Nowikowski Agenda Wprowadzenie do CouchDB Mój przypadek Wyniki i wnioski Dokumenty CouchDB Format JSON Pary nazwa wartość Możliwe tablice i struktury Załączniki Brak limitów na liczbę i

Bardziej szczegółowo

Źródła. cript/1.5/reference/ Ruby on Rails: http://www.rubyonrails.org/ AJAX: http://www.adaptivepath.com/publications/e ssays/archives/000385.

Źródła. cript/1.5/reference/ Ruby on Rails: http://www.rubyonrails.org/ AJAX: http://www.adaptivepath.com/publications/e ssays/archives/000385. Źródła CSS: http://www.csszengarden.com/ XHTML: http://www.xhtml.org/ XML: http://www.w3.org/xml/ PHP: http://www.php.net/ JavaScript: http://devedgetemp.mozilla.org/library/manuals/2000/javas cript/1.5/reference/

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Tworzenie Stron Internetowych. odcinek 10

Tworzenie Stron Internetowych. odcinek 10 Tworzenie Stron Internetowych odcinek 10 JavaScript JavaScript (ECMAScript) skryptowy język programowania powszechnie używany w Internecie. Skrypty JS dodają do stron www interaktywność i funkcjonalności,

Bardziej szczegółowo

Podstawy (X)HTML i CSS

Podstawy (X)HTML i CSS Inżynierskie podejście do budowania stron WWW momat@man.poznan.pl 2005-04-11 1 Hyper Text Markup Language Standardy W3C Przegląd znaczników Przegląd znaczników XHTML 2 Cascading Style Sheets Łączenie z

Bardziej szczegółowo

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript Kod szkolenia: Tytuł szkolenia: HTML5/ANG Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript Dni: 5 Opis: Adresaci szkolenia: Kurs przeznaczony jest dla programistów

Bardziej szczegółowo

Krótki kurs JavaScript

Krótki kurs JavaScript Krótki kurs JavaScript Java Script jest językiem wbudowanym w przeglądarkę. Gdy ma się podstawy nabyte w innych językach programowania jest dość łatwy do opanowania. JavaScript jest stosowany do powiększania

Bardziej szczegółowo

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5 Politechnika Wrocławska Wydział Podstawowych Problemów Techniki Technologie sieciowe Sprawozdanie z labolatorium Lista 5 Autor: Piotr Kosytorz IIrokInf. indeks: 166174 Prowadzący: dr inż. Łukasz Krzywiecki

Bardziej szczegółowo

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń. Cel: polecenia T-SQL Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS Authentication: SQL Server Authentication Username: student01,, student21 Password: student01,., student21

Bardziej szczegółowo

Aplikacje internetowe - laboratorium

Aplikacje internetowe - laboratorium Aplikacje internetowe - laboratorium PHP Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej opartej o język PHP. Aplikacja ilustruje takie mechanizmy jak: obsługa formularzy oraz obsługa

Bardziej szczegółowo

Kurs języka Python. Wykład 14. Marcin Młotkowski. 25 stycznia 2010. Python i Apache Pythonowe platformy aplikacyjne. Dystrybucja aplikacji w U*IX

Kurs języka Python. Wykład 14. Marcin Młotkowski. 25 stycznia 2010. Python i Apache Pythonowe platformy aplikacyjne. Dystrybucja aplikacji w U*IX Wykład 14. 25 stycznia 2010 1 2 Dystrybucja aplikacji w U*IX Python w aplikacjach serwerowych CGI; FastCGI, SCGI: ulepszone CGI; WSGI: Web Server Gateway Interface mod_python Moduł mod_python Moduł do

Bardziej szczegółowo

plansoft.org Zmiany w Plansoft.org

plansoft.org   Zmiany w Plansoft.org Zmiany w Plansoft.org Mapy Google... 1 Tworzenie mapy... 2 Wprowadzanie szerokości i długości geograficznej... 2 Tworzenie mapy... 2 Dostosowanie wyglądu mapy... 3 Ograniczanie liczby zasobów do wyświetlenia

Bardziej szczegółowo

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

Bardziej szczegółowo

ANGULAR 2+ Waldemar Korłub. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska

ANGULAR 2+ Waldemar Korłub. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska ANGULAR 2+ Waldemar Korłub Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska 2 Architektura MVC: Model View Controller 3 Wzorzec architektoniczny modelujący przepływ sterowania w interfejsie

Bardziej szczegółowo