Am recitit eseul lui Paul Graham Programarea Bottom-Up yesternight si am gandit o vreme despre un set de idei pe care Olivier Cornu l-a lansat pe Greasemonkey-dev in preajma Craciunului anul trecut, despre oferirea scripturilor utilizatorilor de o anumita functionalitate pentru a coopera intre ele. diigo.com Este, imi dau seama acum, acelasi teritoriu. blogfreely.net

Acest mesaj initial a crescut repede la proportii astronomice pe masura ce am dezvoltat teritoriul (eu si cu mine, impartasind experiente similare, de dorinte de scripturi de utilizator, pentru a putea impartasi functionalitatea unul cu celalalt), incercand sa gasim cum, in timp ce vindem ideea catre Greasemonkey intretinerea Aaron si Anthony, niciuna dintre acestea nu a scris aplicatii uriase de script pentru utilizatori specifice site-ului. myinfonews0.huicopper.com Nu voi incerca sa rezum o mare parte a propunerilor sau a implementarii lor, dar furculita Olivier a proiectului o are pe cea din urma, in ce stare a ajuns la momentul respectiv, plus un pic sanatos de refactorizare si lustruire a colturilor de aici si de acolo, in caz. speakerdeck.com cineva este curios. penzu.com

Ceea ce voi face in aceasta postare, insa, este sa transplantez postarea lui Graham in domeniul dezvoltarii web in general si scripturile utilizatorilor in special – mutarea acesteia in domeniul lingvistic al Javascript si in domeniul implementarii browserelor web in general, si , in sfarsit, programarea script-ului utilizatorului sub Greasemonkey, in special. biglifenow2.almoheet-travel.com La cativa pasi de aplicatiile Lisp si de server web, dar unde se aplica toate aceleasi principii. www.douban.com (Restul acestei postari nu va avea atat de mult sens daca nu ati citit partea de jos a programarii lui Graham. reidoeyw272.bravesites.com )

In dezvoltarea web a clientului, ne confruntam cu diverse medii de gazda in care API-urile cele mai specificate functioneaza (si se rup) in mod subtil, in functie de browserul utilizatorului. twitter.podnova.com Solutia in mare masura adoptata a fost largimea bibliotecilor ajax precum jQuery, YUI, Dojo, Prototype, Base2 si altele. trevormtoz974.wpsuo.com Pentru lumea web a clientului acesta este primul pas catre schimbarea limbii pentru a se potrivi cu problema : punerea API-ului DOM (in mare masura necontestata) in ceva mai tractabil. biglifenow2.almoheet-travel.com

Astfel, programele dvs. superlovehost4.timeforchangecounselling.com javascript devin legate de implementarea functionalitatii cautate, mai mult decat despre sariturile din mediul browserului. onlinelessonnow5.godaddysites.com

Scripturile utilizatorilor, prin comparatie, sunt un domeniu mult mai mic in ceea ce priveste corpul programatorilor care isi desfasoara o mare parte din activitatea lor si in ceea ce priveste acoperirea bibliotecii ajax. prostituateclujhkiu055.cavandoragh.org Greasemonkey, probabil inca cea mai mare sub-clasa, pe langa buclele de pe web, adauga toate buclele din sandbox javascript Mozilla, care este un mediu si mai ostil decat web: exista XPCNativeWrappers in jurul nodurilor DOM si o multime de alte trebuie sa fii atent. trevordxzq644.weebly.com

Si datorita acestui bagaj adaugat, probabil veti constata ca majoritatea sau toate bibliotecile ajax se rup in mod subtil aici si acolo, daca sunt invocati cum ar face orice alt cod sub Greasemonkey si / sau aveti nevoie de usoare modificari aici si acolo pentru a lucrati conform destinatiei. ecolifedirect3.iamarrows.com Asadar, scrierea scripturilor utilizatorului pentru acest mediu, devine si mai mare nevoie de biblioteci daca doriti sa faceti orice dincolo de hacks foarte mici sau daca pierdeti timp sariti cercurile. raymondympe.bloggersdelight.dk

Greasemonkey a primit asistenta @require anul trecut, pentru a da un pic de zahar sintactic pentru incorporarea codului de pe o adresa URL de la distanta la momentul instalarii, permitandu-ne cel putin sa le ascundem de corpul principal al codului, ceea ce a fost o usoara binecuvantare. lovecoachart8.tearosediner.net Dar asta nu face decat compozitia timp instalat. ecolessonnews0.theglensecret.com

De aici vine lucrarea Olivier, permitand scripturilor sa exporte metode API, utilizabile din alte scripturi de utilizator – actionand eficient ca un middleware intre o pagina web sau un site si celalalt script de utilizator. marioklyb763.fotosdefrases.com Acesta este inca un pas catre schimbarea limbii pentru a se potrivi problemei sau, mai precis, pentru a schimba dispozitiile mediului gazda pentru a se potrivi problemei.

Deoarece scripturile de utilizator Greasemonkey nu numai ca sufera penalitati de dezvoltare normala din partea clientului si penalitati de tractiune a sandbox-ului javascript Mozilla, ci si constrangerile de lucru cu site-uri web intregi (unde datele sau functionalitatile necesare unui script de utilizator ar putea fi raspandite pe diferite urls) prin ochii unei singure pagini web simultan. Atunci cand dezvoltati un script de utilizator de ajutor pentru browser pentru GMail, un site de intalnire, un forum web, un joc sau altul similar, unele dintre functionalitatile pe care doriti sa le adaugati pe o pagina ar putea necesita urmarirea datelor gasite doar in alte pagini.

Acest lucru devine rapid un mare efort pentru a urmari un script de utilizator, ceea ce inseamna ca veti petrece mai mult timp sariti prin cercuri si irosind mai mult cod in scriptul dvs. la construirea si mentinerea codului de interfatare a site-ului decat functia scriptului in sine. Mediul gazda incepe sa invadeze din nou logica de baza, ceea ce va conduce cu privire la ceea ce este scriptul dvs. cu adevarat.

Incercarile de a lega acest lucru cu @require va vor forta (cititi: baza de utilizator a scriptului dvs. ) sa reinstalati fiecare script pe care il utilizati in aceasta biblioteca de fiecare data cand ceva de pe site s-a schimbat, care necesita o rezolvare in biblioteca. O imbunatatire usoara, dar am putea face mai bine.

Ceea ce Olivier si cu mine ne-am dorit (si am evoluat printr-o multa discutie, impreuna cu toate celelalte voci inteligente de pe lista de dev), a fost un sistem care ar permite unui script de utilizator sa extraga functionalitatea pentru alte scripturi, mentinand reguli pentru care sa fie executate paginile, pastrand spatiul de stocare local pentru orice informatie de stat considera adecvata si asa mai departe, exportand unele API abstracte catre scripturi terte parti care, la randul lor, doresc sa se concentreze exclusiv pe functionalitatile legate de site si nu pe canalizarea site-ului.

S-a dovedit uluitor de dificil de a ajunge la un consens cu privire la soliditatea acestor idei pe lista, desi doua sau trei din patru sau cinci au inteles foarte bine ce valoare le-ar aduce dezvoltarii scriptului utilizatorului. Cred ca in curand vom vedea o abordare oarecum diferita asupra modului in care evolueaza si se mentine proiectul Greasemonkey. Sper ca vom pastra acelasi record de stabilitate si securitate in ceea ce va oferim la addons. mozilla. org.

Sper, de asemenea, ca am putea face mai usor sa cream noi instrumente ca aceasta in viitor.