Professional Documents
Culture Documents
Usmeni Web
Usmeni Web
HTTP je mrezni protocol koji sluzi za prenosenje informacija na webu. Osnovna namena ovog
protokola je isporucivanje html dokumenta. HTTP je protokol za komunikaciju izmedju klijenta I
servera, koji funkcionise na principu zahtev/odgovor.
HTML je jezik koji sluzi za kreiranje web strana. To nije pravi programski jezik vec je jezik za
oznacavanje. HTML jezik se sastoji od elemenata, atributa I komentara.
URL je jedinstvena adresa resursa koja sluzi za lociranje odredjenog dokumenta na webu. Url adrese
sadrze informacije o protokolu koji se koristi za dolazenje do informacije (FTP, HTTP, HTTPS), nazivu
domena I nazivu fajla kome se pristupa.
2. Veb aplikacije
-Veb aplikacija je aplikacija kojoj se pristupa pomocu web browsera koriscenjem interneta. Veb
aplikacije se najcesce pisu u Javascript jeziku. Veb aplikacije su veoma popularno zbog sveprisutnosti
web browsera I zbog toga sto ne moraju da se instaliraju na hiljadama klijentskih racunara vec im se
jednostavno pristupa pomocu web browsera. Uobicajene veb aplikacije ukljucuju slanje poste,
internet trgovinu, aukciju, I druge. Jasnu razliku izmedju veb sajta I bilo kog tipa veb aplikacije nije
moguce precizno definisatu, jedino se donekle po izgledu mogu razlikovati, jer veb aplikacije
podsecaju izgledom na desktop aplikacije.
<!DOCTYPE html>
<html>
<head>
<title>Naslov sajta</title>
</head>
<body>
<p>Neki tekst</p>
</body>
</html>
<head></head> - Zaglavlje strane. U njemu se pisu neke informacije o stranici koje nisu vidljive.
<span> takodje sluzi kao genericki kontejner. Jedina razlika od div-a je to sto <span> ima inline nacin
prikaza elemenata, sto znaci da ne pocinje novim redom, vec se nastavlja u istom redu.
U ranijim verzijama HTML-a, veb strane su se bazirale na div elementima kojima su dodavani atributi
tipa id=”nav” ili class=”header” kako bi se blize objasnilo cemu je namenjen taj div. HTML5 uvodi
novine u vidu semantickih elemenata. I time se smanjuje upotreba div elemenata. Sada svaki deo
veb strane ima svoj semanticki element koji jasno opisuje svoje znacenje.
<header> element obelezava zaglavlje veb strane. Nalazi se na samom pocetku strane I sadrzi
uglavnom naslov sajta, logo firme, formu za pretragu.
<footer> element obelezava poslednju sekciju na samom kraju veb strane. Uglavnom sadrzi
informacije o autoru, autorskim pravima, linkove ka stranama o politici privatnosti, cesto
postavljanim pitanjima…
<nav> element obelezava deo za navigaciju na veb strani. Sadrzi linkove ka stranama kao sto su “o
nama”, “kontakt”, “proizvodi”.
<article> element oznacava jednu nezavisnu celinu koja moze postojati sama za sebe, kao na primer
clanak u casopisu ili post na forumu.
<section> element oznacava jednu sekciju na veb strani koja je tematski definisana. Uglavnom sadrzi
naslov, tekst I slike.
7. CSS opste
- CSS je jezik koji opisuje stil veb strane. On sluzi za definisanje izgleda html elemenata. Pomocu CSS-
a mozemo da rasporedimo elemente na veb strani, menjamo boju, font teksta, itd. CSS moze da se
pise direktno u html dokumentu, ali je dobra praksa da se CSS pise u posebnom fajlu koji ce biti
povezan sa html dokumentom pomocu <link> elementa.
8. CSS selektori
- CSS selektori sluze da se definise na koje se delove dokumenta odnosi deklaracioni blok koji sledi,
odnosno koje delove zelimo da stilizujemo. Postoji vise nacina za selekciju elemenata:
- Selekcija tipova
-Selekcija klasa
-Selekcija ID-a
Selekcija tipova:
h1 { color: red; }
Selekcija klasa:
Svi elementi kojima je pridruzena klasa tekst imace tekst plave boje.
Selekcija ID-a
9. Progresivno poboljsanje
- Osnovni sadrzaj da radi u svim pretrazivacima
Javascript uz HTML i CSS predstavlja temelj za izgradnju veb strane. HTML i CSS opisuju sadrzaj I
izgled veb strane, dok javascript daje dinamiku I funkcionalnost veb stajtu. Javascript omogucava
dinamicko kreiranje ili menjanje elemenata. Vrsi obradu dogadjaja koji su nastali na primer klikom
na neko dugme, ucitavanjem stranice ili pokretom kursora misa.
Javascript je preporucljivo da se pise u zasebnom fajlu I kao takav treba da se poveze sa html fajlom
pomocu <script> elementa.
12. JS funkcije
Funkcije su jedan od najbitnijih koncepata programskog jezika Javascript. One predstavljaju deo
koda koji moze vise puta da se izvrsava. Funkcije se deklarisu koriscenjem kljucne reci function
nakon koje sledi ime funkcije a potom otvorena I zatvorena zagrada u okviru koje mogu da se napisu
parametri. Primer:
function max(x,y) {
if(x>y){
return x;
else {
return y;
}
Ovakvu funkciju mozemo da pozovemo sa max(2,4), gde su 2 i 4 vrednosti argumenata.
return x;
else {
return y;
max(2,4)
Deklaracija funkcije:
function square(a) {
return a*a;
Funkcijski izraz:
return a*a;
Razlika je u tome sto se deklaracije funkcija ucitavaju pre izvrsenja koda, pa je moguce pozvati
funkciju pre njene deklaracije. Na primer funkciju square mozemo da pozovemo pre njene
deklaracije,a funkciju square2 ne mozemo, odnosno prijavice nam gresku jer square2 nije ucitan.
14. JS Hoisting
- Hoisting je prirodno ponasanje Javascripta u kome se sve deklaracije pomeraju na pocetak,
odnosno ucitavaju se pre izvrsenja koda. Tako da mozemo koristiti neku promenljivu ili neku
funkciju pre nego sto ih deklarisemo.
Primer promenljive:
x=10;
console.log(x);
var x;
Primer funkcije:
square(2);
function square(a) {
return a*a;
Primer:
var a = [5,2,8,7,1];
var a2 = a.map(function(s){
return s+4;
})
Primer:
function counter() {
var count = 0;
return function() {
alert(count++);
}
}
Lambda funkcija se takodje koristi kada se definise funkcija preko funkcijskog izraza. Tada se
promenljivoj dodeli lambda funkcija.
16. JS Closure
- Closure je tehnika u programskom jeziku Javascript koja omogucava da unutrasnja funkcija koja je
kreirana u okviru neke roditeljske funkcije ima pristup promenljivama roditeljske funkcije. Sustina je
da kad se funkcija poziva ona osim liste parametara napravi I kontekst, tj. spisak promenljivih koje
funkcija koristi a koje su definisane izvan nje. Kontekst izvrsenja funkcije moze biti: globalni kad se
pokrene JS process, lokalni(kontekst funkcije) kad se pozove funkcija.
Primer:
function outer() {
console.log(a);
17. IIFE
- IIFE je mehanizam u jeziku Javascript koji predstavlja deklaraciju neke funkcije uz njen automatski
poziv nakon deklaracije.
Primer:
return function(x) {
})(2);
Preko literala:
Preko konstruktora:
niz[1] = 5;
console.log(niz.length);
niz.push(9);
voce.forEach(funkcija());
map:
19. Prototipi
- Javascript je objektno orjentisani jezik koji se u osnovi bazira na prototipovima. Svi objekti
nasledjuju attribute I metode iz prototipa. Svaki objekat u sebi sadrzi reference na svoj prototip, koji
u sebi sadrzi reference na svoj prototip, itd. Tako dobijamo lanac prototipova na cijem vrhu se nalazi
Object.prototype. Na primer svaki kreirani niz ce nasledjivati attribute I metode iz Array.prototype.
Slično, svaka funkcija će kao svoj prototip imati Function.prototype, kom je prototip Object.prototype:
nekaFunkcija → Function.prototype → Object.prototype → null
Funkcija Person igra ulogu konstruktora. Ako zelimo da za sve instancirane objekte tipa Person
inicijalizujemo novi atribut, to cemo uraditi preko prototipa:
Person.prototype.nationality = "English";
function Robot(name) {
this.name = name;
this.energy = 100;
this.charge = function() {
this.energy++;
Robot.prototype.charge = function() {
this.energy++;
Literali su skraceni nacin da se definise objekat u Javascript-u. Kako bi se kreirao prazan objekat
dovoljno je koristiti:
var o = {};
var apple = {
type: “macintosh”,
color: “red”,
getInfo: function() {
}
22. JS ES6 klase
- Nova verzija ECMAScript 2015 donosi puno novina koje olaksavaju programiranje I doprinose
preglednosti koda. Najvaznije stvari su kljucna rec class i constructor.
class Pravouganik {
constructor(visina,sirina) {
this.visina = visina;
this.sirina = sirina;
povrsina() {
Klase sada mogu da se napisu na prirodniji nacin kao I njeni metodi. Uvedena je kljucna rec
constructor za definisanje konstruktora.
class Animal {
constructor(name){
this.name = name;
speak(){
}
class Dog extends Animal {
speak(){
console.log(this.name + "barks");
document.getElementById(“nekiId”)
document.querySelectorAll(“input[type="checkbox’"]”)
document.querySelector(“input[type="checkbox’"]”)
document.createElement(“div”)
Menja sadrzaj elementa, odnosno izmedju pocetnog I krajnjeg taga upisuje “neki tekst”
element.style
Pristupa se CSS-u
document.body.innerHTML = greeter(user);
class Person {
constructor(name: string, age: number, salary: number) {
this.name = name;
this.age = age;
this.salary = salary;
}
}
class Animal {
move(meters: number) {
constructor(name: string) {
super(name);
move() {
console.log("Slithering...");
super.move(5);
}
27. Typescript, sabloni
class Greeter<T> {
greeting: T;
constructor(message: T){
this.greeting = message;
greet() {
return this.greeting;
console.log(gr1.greet());
Karakteri koji čine XML dokument se dele na znake za obeležavenje i sadržaj. Razlika između njih se
može veoma lako odrediti pomoću nekoliko jednostavnih sintaksnih pravila. U opštem slučaju, znak za
obeležavanje počinje znakom < i završava se znakom > (tagovi). Stringovi koji nisu znaci za obeležavanje
predstavljaju sadržaj.
Postoje tri vrste tagova: otvoren tag (na primer, <section>), zatvoren tag (na primer, </section>), tag
praznog elementa (na primer, <line-break/>).
Logička reprezentacija komponente koja se sastoji od otvorenog taga, sadržaja i zatvorenog taga naziva
se element. Ukoliko sadrzaj elementa sadrzi druge elemente, oni sa nazivaju potomci. U okviru
otvorenog taga mogu se napisati atributi, koji se sastoje od para “ime” – “vrednost”.
29. XML namespace
- XML nejmspejsovi se koriste kako bi XML dokumentu obezbedili elemente sa jedinstvenim imenom.
XML instanca može da sadrži element ili imena atributa iz više od jednog XML rečnika. Ako se svakom
rečniku dodeli nejmspejs, dvosmislenost između elemenata sa istim imenom se može rešiti. Jednostavan
primer je XML instanca koja ima podatke o kupcu i naručenom proizvodu. I element koji predstavlja
kupca i element koji predstavlja proizvod bi mogli da imaju element-dete sa imenom id. Reference na
element id bi stoga bile dvosmislene; ako se postave u druge nejmspejsove, dvosmislenost nestaje.
Koriscene navodnika (“) umesto apostrofa (‘) u radu sa stringovima dovodi do evaluiranje promenljivih,
pa tako ako napisemo:
$prom = “Marko”;
$a[0] = “Dragan”;
$a[1] = “Zoran”;
I asocijativni:
$boja[“crna”] = “FFFFFF”;
$_POST – Asocijativni niz koji sadrzi podatke poslate sa klijenta preko POST metode.
$_GET – Asocijativni niz koji sadrzi podatke poslate sa klijenta preko GET metode.
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
POST metodom mozemo preko <form> elementa poslati podatke sa klijenta na server:
<input type="submit">
</form>
Popunjavanjem input polja I klikom na dugme submit u superglobalni niz $_POST upisuju se podaci. U
$_POST[“ime”] upisuje se vrednost koju je uneo korisnik u polju za ime. U $_POST[“prezime”] upisuje se
vrednost koju je uneo korisnik u polju za prezime.
POST metodom se salju osetljivi podaci kao sto su sifre. Podaci koji se salju se ne vide u adresi.
GET metoda: Podaci su vidljivi u adresi. Na primer: www.nekidomen.com/search?sourceid=525
Konstante klase pocinju kljucnom reci const, naziv konstante ne sadrzi znak $. Pristup iz konteksta klase
self::konstanta.
Primer:
Nasleđeni atributi i metode se mogu preklopiti (override) u izvedenoj klasi tako što se deklarišu atributi i
metode koje imaju iste nazive kao i u osnovnoj klasi
Roditeljski konstruktori se ne zovu implicitno ako nasleđena klase definiše konstruktor. Potrebno je
načiniti eksplicitni poziv parent::__construct().
37. REST
- REST je arhitekturni stil. Koristi JSON za prenos podataka.
HTTP + URI
Sve moguce crud operacije se definisu pomocu HTTP request methoda (get, post, update, delete).
39. RPC
- RPC (Remote Procedure Call) je poziv udaljene procedure. To je mehanizam za poziv procedura na
udaljenim masinama. Ovo je primer klijent-server interakcije. Klijent poziva proceduru koja je
implementirana na udaljenoj masini (serveru). Klijent salje zahtev udaljenom server za izvrsenje
odredjene procedure. Server odgovara klijentu, i program nastavlja svoj process. Klijent je blokiran dok
ceka da mu server odgovori.
40. XML vs HTML
- XML sluzi za kreiranje I struktuiranje dokumenta. HTML sluzi za kreiranje strukturnih dokumenta koji
imaju semanticko znacenje. Ukratko XML je razvijen da opise podatke, a HTML da ih predstavi.
41. JSON
- JSON (JavaScript Object Notation) je lak format za razmenu podataka. Ljudima je lako da ga citaju I pisu
a racunarima da ga analiziraju. To je tekstualni format podataka koji je potpuno nezavistan od jezika.
JSON je format koji se najcesce koristi za asinhronu komunikaciju izmedju klijenta I servera.
{"employees": [
]}
XML objekat:
<employees>
<employee>
<firstName>John</firstName> <lastName>Smith</lastName>
</employee>
</employees>
43. AJAX
- AJAX (Asynchronous JavaScript and XML) je skup klijentskih tehnologija radi kreiranja asinhronih veb
aplikacija. Koristeci AJAX moguce je dinamicki menjati sadrzaj stranice bez ponovnog ucitavanja stranice.
Iako se naziva AJAX uglavnom se koristi JSON a ne XML. JavaScript i objekat XMLHttpRequest pružaju
metode za asinhronu razmenu podataka između klijenta i servera.