Do tej pory używałem własnych bibliotek JS: http://skocz.pl/_js1, http://skocz.pl/_js2, http://skocz.pl/_js3. Trzeba je jeszcze dopracować i zoptymalizować. Zacząłem znów zastanawiać się nad gotowymi rozwiązaniami, które mogą skrócić czas potrzebny do osiągnięcia ciekawych efektów.
Efekty, które muszę uzyskać:
1. AJAX - pobieranie i wysyłanie danych, przechwytywanie formularzy
2. Okienka (warstwy) z możliwością wyświetlenia obok kursora, na środku bądź równo z przyciskiem
3. Kalendarz - wybór daty i godziny
Przydatne, ale niekonieczne:
1. Sortowanie danych w tabeli
2. Drag & Drop
3. Edytor WYSIWYG
4. Sprawdzanie danych w formularzu
5. Zakładki (np. przy edycji artykułu, który ma wiele stron)
Niestety, większość frameworków jest dość obszerna nawet po kompresji. Wydajność też pozostawia wiele do życzenia. W jednym z testów bada się tylko szybkość przemierzania drzewa przez funkcję $(). Tak naprawdę tylko niektóre jej możliwości są w większości przypadków wykorzystywane.
http://ferrante.pl/2007/12/27/o-frameworkach-i-javascript-slow-kilka
http://www.rockstarapps.com/samples/performance
Czy jest sens korzystać z frameworka + własnych rozszerzeń (bez nich się nie obejdzie), jeśli z większości jego ułatwień nie będziemy korzystać? Przecież gdy napiszemy własny kod, ładujemy tylko te funkcje, które są potrzebne w projekcie. Skrypt może stać się kilka razy szybszy. Z drugiej strony na wszystko trzeba czas, a nie zawsze własne rozwiązania są najlepsze. Ewentualnie: własne biblioteki + niezależne gotowe rozwiązania?
Moim zdaniem zawsze lepiej korzystać z gotowych rozwiązań, ponieważ ktoś nad tym cały czas pracuje, rozwija i pilnuje, by było wolne od błędów. Oczywiście własne biblioteki również mogą, a nawet powinny być używane, ale nie oszukujmy się. Nie ma potrzeby wymyślania koła od nowa.
Osobiście polecam jQuery - nie waży za wiele (~ 30 kb), do tego oferuje bardzo duże możliwości. Zaczynam też powoli się przekonywać do dojo.
A argument, że kilkadziesiąt kb to dużo i zamuli stronę, można włożyć między bajki. Obecnie łącza są coraz szybsze, więc dodatkowe kb nie wpłyną aż tak bardzo na wydajność. Czasy wdzwanianego internetu odeszły w niepamięć.
Temat zapowiada ciekawą dyskusję, przypinam.
Ja też ostatnimi czasy zacząłem pracować z jquery i muszę przyznać że jestem bardzo zadowolony.
Raz że to sprawdzony framework, dwa bardzo prosto się jej uzywa, wiele rzeczy potrzebnych do projektu można dzieki nej napisać w paru linijkach kodu no i jest do niego wiele przydatnych dodatkowych bibliotek.
Ogólnie jestem bardzo zadowolony i polecam
Tyle tylko, że wiele komponentów napisanych w jQuery (np. te z demo na oficjalnej stronie) nie działają pod Operę. Ja ze swojej strony polecam http://mootools.net. Nie miałem z nim żadnych problemów.
Tak, ja też miałem trochę problemów z jQuery i bynajmniej nie przez źle napisany kod.
Osobiście bardziej polecam Prototype.
Możesz skorzystać z niezależnych rozwiązań które dają ci prostego Ajax-a dzięki któremu napiszesz swoje funkcje i jest to bardzo lekkie. Zobacz bibliotekę MintAjax, sam obiekt Request wazy tylko 4 KB a daje prostą obłsugę Ajax.
http://mintajax.pl/Pobierz/
Do tej pory raczej nie mam problemów z jQuery (pod Operą również), ale z tego co tak ogólnie widzę bardziej "w cenie" jest Prototype (również po propozycjach pracy)
A ogólnie, jeśli chodzi o proste rzeczy, takie jak walidacja formularzy czy jakiś pojedynczy popup, to nie widzę sensu dołączać kobył skoro mogę to zrobić równie prosto w czystym js. Ale aktualnie nie wyobrażam sobie pisania bardziej zaawansowanych skryptów jak na przykład rotator zdjęć bez gotowego frameworka. Klientowi i tak to nie robi, byleby działało, a ja dzięki rozszerzeniom oszczędzam naprawdę dużo czasu.
Kłopoty w jQuery z Opera biora sie przewaznie z tego, ze developerzy frameworka nie palaja specjalnie miloscia do Opery. Jest to europejska przegladarka, majaca marginalne znaczenie w USA, skad pochodza tworcy.
Prototype w cenie? Prototype to dzisiaj przezytek, a ktos opierajacy swoj kod na Prototype ceni raczej duza objetosc kodu i mala jego czytelnosc.
jQuery nie jest idealny, ale z kazda wersja jego szybkosc wzrasta, a do wymagan wymienionych w 1. poscie nadaje sie znakomicie. Biorac pod uwage "fun" i szybkosc pisania, stawiam jQuery na 1. miejscu, przed mootools.
Pozdrawiam
Prowadzisz statystyki jakies? Wrecz przeciwnie, mam wrazenie, ze Prototype w wymaganiach pracodawcow widzialem bardzo dawno.
Pozdrawiam
Interesuję się tym, czego potencjalny pracodawca może ode mnie kiedyś chcieć. Wolę wcześniej mieć rozeznanie, niż w razie palącej potrzeby (zwłaszcza, że przy takiej potrzebie przeważnie bierze się pierwsze co przyjdzie) na hurra zapoznawać się z podstawami jakiejś techniki ^^
@Shili
Jeśli chcesz być cały czas na bieżąco ze wszystkim, to nie tędy droga. Bardzo dobrym wyjściem jest kompletne poznanie jednej biblioteki, dobre poznanie innej oraz znajomość podstaw pozostałych (oczywiście tych najpopularniejszych). Wówczas nawet jeśli nie będziesz wiedziała jak coś napisać, to będziesz miała na tyle pojęcie o problemie, że szybko znajdziesz rozwiązanie.
A wracając do tematu. Szkoda, że ZF ugadał się z dojo, a nie z jQuery. Z drugiej strony jest to motywacja do nauki dosyć ciekawej biblioteki. Szkoda tylko, że w dojo tworzy się kod, który nie waliduje się w3c.
@phpion: przykład z dokumentacji, Opera:
@Crozin:
Ja korzystam z 9.61*. Zdecydowanie wolę MooTools, z którym nie mam tego typu problemów.
* Zaktualizowałem do 9.63 - nadal kupiszon.
W Goldenline i innych związanych aplikacjach jest stosowane jQuery i problemów raczej nie ma, bo założeniem wyjściowym jest obsługa wszystkich kluczowych przeglądarek do IE 6 włącznie. Zgodność z przeglądarkami zależy od zastosowanych elementów jQuery (aptana chyba to ładnie pokazuje). Należy też uwzględnić że uzasadnione użycie tego typu frameworków to nie jest zrobienie tooltipa i lightboxa na stronce, ale znacznie więcej (gridy, obsługa SWF, generowanie danych z JSONów itd.)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <http://december.com/html/4/element/html.html> <http://december.com/html/4/element/head.html> <http://december.com/html/4/element/script.html src="jquery-1.2.6.js"></http://december.com/html/4/element/script.html> <http://december.com/html/4/element/script.html> $(document).ready(function(){ var iframe = document.createElement("iframe"); iframe.src = "test.html"; iframe.id = "hadzia"; iframe.width = "200"; iframe.height = "200"; iframe.style.border = "none"; $('div[id=test]').append( iframe ); var doc = iframe.contentDocument || document.frames['hadzia'].document; var source = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"+ "<http://december.com/html/4/element/html.html>"+ "<http://december.com/html/4/element/head.html>"+ "<http://december.com/html/4/element/script.html src=\"jquery-1.2.6.js\"><\/script>"+ "<http://december.com/html/4/element/script.html type=\"text/javascript\">"+ "$(document).ready(function(){"+ "$(document.body).click(function () {"+ "$(\"div:hidden:first\").fadeIn(\"slow\");"+ "});"+ "});"+ "<\/script>"+ "<http://december.com/html/4/element/style.html>"+ "span { color:red; cursor:pointer; }"+ "div { margin:3px; width:80px; display:none;"+ "height:80px; float:left; }"+ "div#one { background:#f00; }"+ "div#two { background:#0f0; }"+ "div#three { background:#00f; }"+ "</http://december.com/html/4/element/style.html>"+ "</http://december.com/html/4/element/head.html>"+ "<http://december.com/html/4/element/body.html>"+ "<http://december.com/html/4/element/span.html>Click here...</http://december.com/html/4/element/span.html>"+ "<http://december.com/html/4/element/div.html id=\"one\"></http://december.com/html/4/element/div.html>"+ "<http://december.com/html/4/element/div.html id=\"two\"></http://december.com/html/4/element/div.html>"+ "<http://december.com/html/4/element/div.html id=\"three\"></http://december.com/html/4/element/div.html>"+ "</http://december.com/html/4/element/body.html>"+ "</http://december.com/html/4/element/html.html>"; doc.open(); doc.write( source ); doc.close(); }); </http://december.com/html/4/element/script.html> </http://december.com/html/4/element/head.html> <http://december.com/html/4/element/body.html> <http://december.com/html/4/element/div.html style="display: block; width: 200px; height: 200px;" id="test"></http://december.com/html/4/element/div.html> </http://december.com/html/4/element/body.html> </http://december.com/html/4/element/html.html>
Tworzę nową platformę w XHTML + CSS + JavaScript dla gry logiczno-przygodowej (podobnej do gier escape lub np. MOTAS). Warto dodać jakieś efekty, aby zwiększyć doznania estetyczne. Czy warto stosować framework? Zależy mi na tym, aby nie było przycięć przeglądarki. Wszystko płynnie.
Jeśli w 2009/2010 roku user wyłączy sobie JS w przeglądarce, to jest kosmitą. Jeśli strona ma charakter stricte informacyjny - nie powinna mieć zależności od JS. Może używać, ale musi chodzić bez. Dla botów. Jeśli to interaktywna aplikacja - to może, a nawet powinna, zwyczajnie odmówić odpalenia bez JS i już.
Buduję teraz dość duży panel administracyjny:
ajax, framework,GoogleAPI -chodzi i nawet nieźle -dane są na bieżąco rozkodowywane
Korzystam z gotowego frameworku mooTools -MochaUi na stronie głównej, jQuery -do własnych skryptów działa na ramkach okien MochaUi. Google Api gdzie trzeba.
Chodzi coraz ładniej. Mieliśmy dylematy co robić, były próby przejścia tylko na jQuery, ale zdaje się, że tak jak jest teraz zostanie. MochaUI daje praktycznie wszystko co trzeba -oprócz przeciągania okien -gdy są ramki ukrywa ich zawartość -w przeciwnym razie kursor nie trzyma dobrze okna.
Chyba w pół roku byśmy tego ręcznie nie napisali
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)