Prototype Javascript Framework
Prototype Javascript Framework är ett Javascript-ramverk som skapats av Sam Stephenson som ger ett Ajax-ramverk och andra verktyg. Det är implementerat som en enda fil av Javascript-kod, som vanligtvis kallas för Prototype.js. Prototype distribueras fristående, men också som en del av större projekt, såsom Ruby on Rails, script.aculo.us och Rico. FunktionerPrototype tillhandahåller olika funktioner för att utveckla Javascriptapplikationer. Funktionerna sträcker sig allt från programmersgenvägar till avancerade funktioner för hantering av XMLHttpRequest. Prototype tillhandahåller även biblioteksfunktioner för att stödja klasser och klassbaserade objekt[1], något Javascript-språket inte har inbyggdt[2][3]. I Javascript, är skapelsen av objekt prototyp-baserat istället; en objektskapande funktion kan ha en prototyp-egenskap, och varje objekt som tilldelas denna egenskap kommer att användas som en prototyp för de objekt som skapats med denna funktion. Prototype-ramverket ska inte att förväxlas med denna språkfunktion. Exempel på nyttiga funktioner$()-funktionenDen så kallade dollarfunktionen , $(), kan användas som en kortform för getElementById -funktionen. För att hänvisa till ett element i DOM:en av ett HTML-dokument, den vanliga funktionen för att identifiera ett element är: document.getElementById("id_of_element").style.color = "#ffffff";
$()-funktionen reducerar koden till: $("Id_of_element").SetStyle({color:"#ffffff'});
$()-funktionen kan även anropas med ett element som parameter och kommer att returnera, som i föregående exempel, ett prototype-uppgraderat objekt. var element_js = document.getElementById("id_of_element"); // vanlig objektreferens returnerad
var element_pt = $(element_js); // prototype-uppgraderad objektreferens
$F()-funktionenDen bygger på $F("id_of_input_element")
$$()-funktionenDollar dollar-funktionen är prototypes "CSS-Selector Engine ". Den returnerar alla matchande element, efter samma regler som en "selector" i en CSS-stilmall. Till exempel, om du vill få alla $$("A.pulsera")
Detta returnerar en samling av element. Om du använder Script.aculo.us, en påbyggnation av Prototypes grundbibliotek, kan du använda en "pulsera"-effekt (blinka) enligt följande: $$("A.pulsera").each(Effect.Pulsate);
Ajax-objektetI ett försök att minska den mängd kod som behövs för att köra en var url = "http://www.example.com/path/server_script";
var myAjax = new Ajax.Request(url, {
parameters: {
value1: $F("name_of_id_1"),
value2: $F("name_of_id_2")
},
onSuccess: showResponse,
onFailure: showError
});
Objektorienterad programmeringPrototype lägger även till stöd för mer traditionell objektorienterad programmering. var FirstClass = Class.create({
// Initierngsmetoden fungerar som en konstruktör
initialize: function (){
this.data = "Hello World";
}
});
Uppgradering av en annan klass: Ajax.Request= Class.create( Ajax.Base, {
// Skriv över initierngsmetoden
initialize: function( url, options ){
this.transport = Ajax.getTransport();
this.setOptions(options);
this.request(url);
},
// ... Tillägg fler metoder ...
});
Ramverks-funktionen ProblemI motsats till andra Javascript-bibliotek så som jQuery, gjorde Prototype beslutet att bygga ut DOM, men det finns planer på att åtgärda det i nästa stora version av biblioteket[4]. I april 2010, bloggaren "kangax" (tillhörande Prototype Core) beskriver utförligt de problem som kan följa av att lägga till nya metoder och egenskaper till objekten definieras av W3C DOM[4]. Dessa idéer avbildar tankar publicerade i mars 2010 med Yahoo!-utvecklaren Nicholas C. Zakas[5], De har sammanfattas på följande sätt[6]:
Vid 2008, vissa specifika problem med hjälp av DOM-uppgraderade metoder i äldre versioner av Prototype, i kombination med nyare versioner av dagens webbläsare fanns redan dokumenterade[7]. Snarare än att lägga till nya metoder och egenskaper till redan existerande "värd" DOM-objekt som Det är nu allmänt förväntat att flertalet av dessa idéer och frågor kommer att behandlas i samband med frisläppandet av Prototype 2.0, men Prototype utvecklare måste lära sig att arbeta med en annorlunda syntax och mycket befintlig Prototype-kod kommer att bli föråldrad[6]. Se ävenReferenser
Noter
Källor
Externa länkar
|