Prototype - oficjalne API i dokumentacja
Posted by Jarosław Zabiełło Fri, 19 Jan 2007 15:53:00 GMT
Znana biblioteka Prototype doczekała się własnej dokumentacji, API oraz bloga: http://prototypejs.org. Prototype zapewnia lekkie, eleganckie API o składni wzorowanej na języku Ruby. Ta składnia jest tak ładna, że niektórzy nawet nie widzą potrzeby tworzenia dodatkowych helperów. W tej chwili to, moim zdaniem, najlepsza biblioteka do JavaScript i AJAX. Rails postawił zdecydowanie na dobrego konia. Pylons – niejako “z rozpędu”, bo skopiowali railsowe helpery – też. :)
Rozmawiałem niedawno na IRC’u (irc.freenode#pylons) z developerami Pylonsów. Mają rozszerzyć swoje helpery o dodatkowe funkcje, ale nie zaimplementują pętli które są w Prototype i railsowych RJS (szablonach generujących JavaScript w jęz. Ruby) Ograniczeniem jest tu składnia Pythona. Tzn. można by się pokusić o taką implementację, ale byłaby mało “pythonic”, tj. zgodna z filozofią i czytelnością języka Python. Więc raczej na RJS dla Pythona nie ma co liczyć.
Wg mnie te wszystkie helpery jakie ma RoR (i RJS w szczególności) to jedna z lepszych cech Railsów której brak u konkurencji. Nie zgodzę się tu z tymi, co uważają że lepiej w ogóle nie używać żadnych helperów i pisać w czystym JavaScript. Mimo ładnej składni Prototype, railsowe helpery i RJS dają znacznie większy komfort pracy. Np. weźmy taką konstrukcję w pliku RJS:
page.replace_html :my_id, :partial => 'podszablon'Co robi powyższa metoda? Buduje kod JavaScript który podmienia zawartość (innerHTML) dla tagu o id =’my_id’ zawartością szablonu RHTML (oczywiście jego zawartość jest automatycznie “escape’owana”, aby kod JS się nie wysypał). Trzeba się nieźle napracować aby uzyskać podobny efekt poza Railsami.
Trochę się dziwię, że Django myśli o dodaniu Dojo zamiast Prototype. Mamy w pracy raczej złe doświadczenie z Dojo. Jest ciężkie, zamotane, trudne do debugowania, modyfikacji. To po części efekt podejścia nastawionego na używanie złożonych komponentów (naśladują .NET?) Takie podejście (używanie zbyt wysokopoziomowych, złożonych komponentów) generalnie spotyka się z krytyką wielu programistów. Prościej operować elastycznym i przejrzystym kodem (takim jak w Prototype) niż gotowymi, zamkniętymi i trudnymi do debugowania komponentami Dojo.


Kanały IRC![[Dilber w Onecie]](/images/larry.png)


A ja najbardziej lubię jQuery. Podoba mi się składnia, IMHO najlepsza, w sumie w Dojo podobna.
Pomyłka, źle spojrzałem, Dojo podobnej składni raczej nie ma :) (przyznam szczerze, że nie używałem), ale z jQuery i Prototype wolę to pierwsze.
Tak, RJS znowu ratuje mi tyłek:) Z innych ciekawych bibliotek lubię jeszcze moo.fx – sporo ciekawych rozwiązań, np. dodawanie zdarzeń poprzez klasy css.
Przedwczoraj trafilem te ich nowa stronke, wreszcie jest gdzies dokumentacja API. jQuery jest swietne zwl. z dodatkami (Interface Elements , Greybox, ThickBox) ale z wygody uzywam Prototype i Aculo (zreszta sa one rownie dobre, mam po prostu takie wrazenie, ze efekty oparte na jQuery sa bardziej plynne i lekkie).
BTW. wlasnie wyszla nowa wersja aculo 1.7.0 i oczywiscie od razu jest w trunku railsow.
A myslalem, ze pythonowcy preferuja Mochikit :)
jQuery sypie się trochę pod Konquerorem ;)
Mi osobiście najbardziej podoba się YUI. Działa dobrze, jest przenośne, ma świetną dokumentację i nie udziwnia JavaScriptu próbując uczynić go czymś innym niż jest – bo tego dobrze zrobić się nie da.
Do Prototype zniechęca mnie na przykład błąd pod Konquerorem (Can’t find variable: HTMLFormElement). Dojo zaś kilkakrotnie przy ładowaniu (strona projektu->dema) zamroziło całą przeglądarkę – i to nie tylko Konquerora ale też Firefoxa.
YUI działa dobrze wszędzie. I dobrze współpracuje z Django, co można zobaczyć na przykładach w wiki djangowym (a także na Django Book).
Najlepiej gdyby Django umożliwiło współpracę z różnymi toolkitami AJAXowymi – zrobiło ogólne metody i ich implementacje dla głównych toolkitów.
Django nie zrobi czegoś ogólnego na różne biblioteki Ajaxa ;) Django lubi dziwne decyzje i “reinventing the wheel” ;)
mogli by to podpiąć na http://gotapi.com/...
>Ejże, ten tekst Jacoba to styczeń 2006 :) W międzyczasie plany uległy zmianie i Django, przynajmniej na razie, nie będzie ułatwiać połączenia z żadną konkretną biblioteką JS.
Tutaj można przeczytać bardziej aktualne wypowiedzi.