430 likes | 552 Views
Zašto JavaScript? Zašto danas?. JS zadovoljava potrebe današnjeg Interneta. JS je nastao u browseru. Kako funckionira web browser?. URL. HTML. GET CSS. GET IMAGE. GET JS. HTML stranica. HTML recept za izgradnju stranice CSS izgled JS dinamičnost. Event driven i asinkronost.
E N D
Kako funckionira web browser? URL HTML GET CSS GET IMAGE GET JS
HTML stranica HTML recept za izgradnju stranice CSS izgled JS dinamičnost
Event driven • Jedan event loop • Zaprimanje evenata • Akcije/odgovor na evente
Što znači sinkronost? • Sinkrono = blokirajuće SERVER Baza
Asinkronost • Asinkron = ne blokirajući = brz SERVER BAZA
Varijable su dinamičke var a = ‘neki string’; a = 3; var b = a + 5; a = [0, 2, 5];
Tipovi varijabli • Number • String • Boolean • Null • Undefined • Object • Function
Number var a = 3; var b = 5; var sum = a + b; console.log(sum); //8
string var a = „Sum is ”; var b = „8”; var sum = a + b; console.log(sum); //Sum is 8
Null, undefined var a = null; var b; console.log(a); //null console.log(b); //undefined console.log(c); //undefined
Objekt • Key – value var school = { name : „V.gimnazija”, numberOfStudents : 3000 }; school.address = „Klaićeva”; console.log(school[‘address’] ) // „Klaićeva”
funkcije function isprobajMe(unos) { console.log(unos); } isprobajMe(„lo12”); //lo12 isprobajMe(234); //234 console.log(isprobajMe.name); //isprobajMe
funkcije var isprobajMe = function (unos) { console.log(unos); } isprobajMe(„lo12”); //lo12 isprobajMe(234); //234 console.log(isprobajMe.name); //undefined
funkcije function zbroji(a, b) { var suma = a + b; return suma; } var suma = zbroji(4,7); console.log(suma); //11
funkcije function ispisi(unos) { console.log(unos); } function zbroji(a, b, funkcijaKaoArgument) { var zbroj = a + b; funkcijaKaoArgument(zbroj); } zbroji(2, 6, ispisi); //8
Callback funkcije function askDatabase(query, callback){..} function getActors(age, height, callback) { var query = {age: age, height: height}; askDatabase(query, callback); return „I don’t know yet”; } var result = getActors(45, 180, function (actors) { console.log(actors); //Nadan, Ivo, ... }); console.log(result); //I don’t know yet
Funkcijski jezici • funkcije : • samostalne • anonimne • mogu se proslijediti kao parametar
Funkcijsko vs objektno programiranje • Objektno – kopiraju se objekti iz realnog svijeta Java, C# • Funkcijsko – sustav se sastoji od servisa-matematičkih funkcija koje nemaju stanja Haskell • Što odabrati OVISI O ZADATKU
Demonstracija Meteor http://asc-demo.meteor.com/http://bit.ly/18LrBHr
JS je moćan • Zašto bi se koristio samo na frontendu?
NodeJS • Asinkron brz • Event driven sva logika kao odgovor na vanjske requestove • ima svoj „server” • demo u 30 sekundi
MongoDB • JSON u bazi • nema tablica i oganičenja • nema JOINa • čisti JSON
Mobilne aplikacije • 3 načina razvoja : • nativno (Android, iOS, WP) • frameworci (PhoneGap, Titanium, Xamarin) • hibridna aplikacija (nativni browser)
Hibridne aplikacije • JS, HTML, CSS • Cross platform
Web sockets • Browser backend = Api request • Backend browser= web socket • Svi novi browseri
Problemi u kodu • Nema standarda • Nema transakcija • Globalne varijable • Tipiziranje podataka • Teško je analizirati greške
Problemi odabiraNodeJSa / MongoDBa • Uska specijalizacija • Silver bullet za sve probleme • PAŽLJIVO BIRATI TEHNOLOGIJE • Cijepaj sustav
Alternative • NodeJS GoLang, Grails, ... • MongoDB PostgreSQL, Redis, Neo4J
Sažetak • JavaScript • dominantan jezik u browseru • razne metodologije -> zabavan • puno mogućnosti -> opasan • asinkron -> brz • sveprisutan -> cross platform