Nenametljiv JavaScriptNenametljiv Javaskript (енгл. Unobtrusive JavaScript ) je opšti pristup korišćenja Javaskripta za veb stranice. Iako termin nije formalno definisan, njegovi osnovni principi opšte prihvaćeno uključuju:
Nova jezička paradigmaJavaskript je istorijski imao lošu reputaciju nezgodnog jezika neupotrebljivog za ozbiljan razvoj aplikacija.[3][4] Loša reputacija je uglavnom poticala od implementacije samog jezika koja je bila nedosledna, kao i zbog širokog korišćenja lošeg copy-and-paste koda. Greške prilikom izvršavanja su bile uobičajene (i preteške da se otkriju i poprave), pa su neki programeri čak pokušavali da ih isprave, sve dok se skript ponašao manje-više onako kako je trebalo da se ponaša.[5] Skript često nije uopšte radio u nekim pregledačima. Neki veb programeri su promovisali elegantnu degradaciju od 1994.[6] Nedavna pojava Javaskript okruženja, visoko-kvalitetnih alata za debagovanje i pretraživača koji zadovoljavaju veb standarde je napravila mogućim organizovan, prilagodljiv Javaskript kod, kao i pojava Ajaks interfejsa koji ga je učinio poželjnim. Nekada, Javaskript je bio rezervisan za relativno jednostavne i nekritične zadatke, a sada se koristi za pisanje velikih, kompleksnih kodova koji su često deo osnovne funkcionalnosti sajta. Greške prilikom izvršavanja i napredviđeno ponašanje više nisu ne toliko bitne mane, sada su fatalne.
Drugi autori su pokušali da poboljšaju i definišu osnovne elemente nenametljive paradigme. U svojoj knjizi Javaskript: Sveobuhvatni vodič od Dejvida Flanagana (енгл. David Flanagan) kaže da sve dok ne postoji određena formula, postoje tri glavna cilja:
Projekat veb standarda opisuje četiri koristi nenametljivog DOM skriptinga u svom Javaskript Manifestu.
Za potrebe Veb konferencije u Parizu 2007. godine, Kristijan Hajlman (енгл. Christian Heilmann ) je uočio i izdvojio sedam zakonitosti nenametljivog Javaskripta.
Odvajanje ponašanja od obeležavanjaTradicionalno, Javaskript je često bio pisan odmah uz oznake nekog HTML dokumenta. Sledeći primer je tipičan primer implementacije Javaskript potvrde obrasca, kada je napisana unutar etiketa pri elementu: <input type="text" name="date" onchange="validateDate()" />
Pristalice "Nenametljivog Javaskripta" zastupaju mišljenje da je svrha oznaka da opiše strukturu dokumenta, a ne njegovo programsko ponašanje i da kombinovanje ova dva ima negativan uticaj na održavanje sajta, iz sličnih razloga iz kojih ima negativan uticaj i kombinovanje sadržaja i prezentacije. Oni takođe zastupaju da je linijsko upravljanje događajima(енгл. inline event handlers) teško za korišćenje i održavanje, kada neko na primer ima potrebe za postavljanjem upravljača za nekoliko događaja na jednom elementu ili kada neko želi da stavi istu obradu događaja na više elemenata, ili kada neko koristi odlaganje događaja(енгл. event). Ne mogu biti korišćeni ni sa nasumičnim događajima.
Nenametljivo rešenje je da programski unesemo neophodne izvršitelje događaja, pre nego linijski. Ovo je bolje nego da dodajemo <input type="text" name="date" id="date" />
Skript koji se izvršava kada se stranica prvi put učita u pregledač može da potraži bitne elemente i postavi ih prema tome: window.onload = function() {
document.getElementById('date').onchange = validateDate;
};
Imenski prostorNenametljiv Javaskript bi trebalo da doda što manje moguće globalnom objektu ili globalnom imenskom prostoru od okoline u kojoj se izvršava. Ostali skript jezici možda pređu preko nekih promenljivih ili funkcija koje su kreirane u globalnom imenskom prostoru, i to može dovesti do neočekivanih grešaka koje je teško debagovati. Javaskript nema ugrađen eksplicitni mehanizam za imenski prostor, ali željene efekte je lako proizvesti koristeći jezičke olakšice. Flanagan predlaže korišćenje domena imena programera, obrnutog tačkastog segmenta, kao jedinstvenim globalnim imenom za objavljivanje, u stilu razvijenom u Java jeziku.[12] var org;
if (!org) {
org = {};
} else if (typeof org != 'object') {
throw new Error("org already exists and is not an object.");
}
if (!org.example) {
org.example = {};
} else if (typeof org.example != 'object') {
throw new Error("org.example already exists and is not an object.");
}
Dok promenljive, funkcije i objekti svih vrsta mogu biti dalje definisani unutar takvih objekata imenskog prostora, obično je preporučeno da se koriste closures unutar imenskog prostora kako bi dalje izolovali šta će postati privatne promenljive i funkcije, takođe i export koji određuje šta će biti javni interfejs svakog modula funkcionalnosti. Kod iznad može pratiti sledeće:[13] org.example.Highlight = function() {
// Define private data and functions
var highlightId = 'x';
function setHighlight(color) {
document.getElementById(highlightId).style.color = color;
}
// Return public pointers to functions or properties
// that are to be public.
return {
goGreen: function() { setHighlight('green'); },
goBlue: function() { setHighlight('blue'); }
}
}(); //End closure definition and invoke it.
Iz bilo kog drugog modula, ovi javni metodi mogu biti pozivani na neki od sledećih načina: org.example.Highlight.goBlue();
var h = org.example.Highlight;
h.goGreen();
Elegantna degradacijaPisanje jednog osluškivača događaja (енгл. event listener) koji detektuje učitavanje HTML stranice i onda dodaju bitne osluškivače drugim događajima na stranici, kao i druga ponašanja koja su tražena, on može rešiti problem razdvajanja funkcionalnosti Javaskripta od HTML oznaka. Korišćenje sa klijentske strane Javaskript biblioteka kao što su jQuery, MooTools ili Prototype može olakšati ovaj proces i pomoći oko osiguravanja individualnih pregledača, tj. da njihovi implementacioni detalji budu skriveni i zadovoljeni. Držanjem većeg dela Javaskripta izvan predviđenog imenskog prostora pomaže pri osiguravanju nenametljivosti u ovom smislu. Druga obeležja nenametljivog Javaskripta koja su često pominjana su sigurnost da dodata dešavanja elegantno degradiraju na pregledačima sa neočekivanom konfiguracijom, i onima na kojima postoji mogućnost da je korisnik isključio Javaskript.[14] Ovaj zahtev je baza mrežne pristupačnosti, da bi osigurali da veb sajtove osnažene Javaskriptom mogu koristiti svi ljudi -nevezano za platformu koju koriste- i dobiju jednak pristup svim informacijama i funkcionalnostima sajta. Ponekad je potreban dodatni posao kako bi ovo omogućili. Na primer u Engleskoj, енгл. the Equality Act 2010, govori o tome da je ilegalno diskriminasati ljude sa invaliditetom i odnosi se na bilo koga ko obezbeđuje bilo koje javne usluge, privatne i volonterske sektore.[15] Iako je dosta napora uloženo u dizajniranje i implementiranje glatke klijent-strane korisničkog interfejsa u nenametljivom Javaskriptu, on neće ostati nenametljiv korisniku bez klijentske-strane skripta, ako uvide da oni ne mogu pristupiti objavljenim informacijama. Kako bi se uspostavio ovaj cilj, obično je potrebno implementirati ekvivalent, funkcionalnost serverske-strane koja će biti dostupna bez imalo korišćenja Javaskripta. Uzmimo za primer veb stranicu gde prikazanim slikama trebaju ponašanja u Javaskriptu kako bi se pojavila slika u punoj veličini kada se mišem pređe preko nje ili klikne. Prvo, server-strana oznaka treba da se postara da se bitne slike pune veličine prikazuju korisniku bez Javaskripta koji klikne na njihov umanjeni prikaz. U ovom slučaju HTML oznake mogu izgledati ovako: <a href="fullsize-image-001.png" class="manual-link" title="Click for full-size image">
<img src="image-001-thumb.png" class="thumb" width="50" height="50" alt="Image 1 shows... etc">
</a>
Ovo će raditi bez Javaskripta. Nenametljiv Javaskript, u ovom slučaju, tokom učitavanja stranice, može naći sve Najbolja praksaIako je suština nenametljivog Javaskripta koncept dodatnog sloja ponašanja, zagovornici ove paradigme slažu se u osnovi i sa brojnim povezanim principima, kao što su:
Референце
|
Portal di Ensiklopedia Dunia