Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie frameworków JS
Forum PHP.pl > Inne > Hydepark
230005
Fajnie by było, żeby wypowiedzieli się tu ludzie, którzy mogą coś powiedzieć o więcej niż jednym frameworku. Zacznę ja:

MooTools vs JQuery:

Jak dla mnie wygrywa jquery. Przede wszystkim łatwość nauki tego frameworka jest niespotykana. Sam byłem w stanie przy jego pomocy zaprogramować wiele nawet dosyć złożonych rzeczy tylko po przejrzeniu dokumentacji i oglądnięciu videotutoriala dla zielonych smile.gif. Na pierwszy (bo później już nie patrzyłem winksmiley.jpg) rzut oka ma więcej pluginów niż MooTools, co też jest zaletą, która jednak blednie przy "obejściach" tego frameworka - jak ktoś nie zna, to powiem, że twórcy zadbali żeby programista pisał kod zamiast łamać sobie głowę nad tym, dlaczego pod połową przeglądarek działa, a pod kolejną połową nie. Praca z Mootools pod tym względem była dla mnie raczej bolesna. Z każdym problemem można sobie poradzić, jednak zraziło mnie to do dalszego zgłębiania frameworka. Żeby było sprawiedliwie, to podoba mi się implementacja obiektowości w Mootools, zarówno na poziomie, że się tak wyrażę standardowym (np. obiekt koszyka na zakupy), jak i budowania elementów html. Dla przykładu:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. //mootools
  3.  
  4. var anchor = new Element('a', {
  5. 'href': 'http://mootools.net',
  6. 'class': 'myClass',
  7. 'html': 'Click me!',
  8. 'styles': {
  9. 'display': 'block',
  10. 'border': '1px solid black'
  11. });
  12.  
  13. //jquery
  14.  
  15. var anchor = $('<a href="http://jquery.com/" class="myClass" style="display: block; border: 1px solid black">Click me!</a>')
  16.  
[JAVASCRIPT] pobierz, plaintext


Oczywiście można sobie kod jquery sformatować, ale w gąszczu literek i cyferek i tak można go łatwo przeoczyć. Może to tylko kwestia estetyki, ale dla mnie to duży plus dla mootools (jednak nie na tyle żeby porzucić jquery winksmiley.jpg).

I jeszcze jedna rzecz - nie wiem czy taką opcję posiada mootools, ale jQuery.noConflict() jest ekstremalnie przydatna, kiedy na stronie używane są jeszcze jakieś biblioteki.
Crozin
jQuery udstoępnia takie metody jak: attr/css/text dzięki którym Twój kod będzie czytelny:
Kod
var anchor = $("<a />").attr({
  href: "/test",
  title: "test"
}).css({
  display: "block",
  border: "1px solid red"
}).text("click me!");


PS. O ile dobrze kojarzę to istnieją też pluginy udostępniające niemalże taką samą składnię
Kod
$.create("a", { atrybuty, styles: { style } }, "Click me")
Itp.
230005
Fakt, zapomniałem o tych metodach winksmiley.jpg
skowron-line
Warto rzucić okiem na http://mootools.net/slickspeed/ . No i @230005 argument
Cytat
tylko po przejrzeniu dokumentacji i oglądnięciu videotutoriala dla zielonych
smile.gif
Ja osobiście używam mootools -a z niewiadomych mi przyczyn przypadł mi do gustu bardziej niż jQuery.

Edit:
A co do noConflict to mootools ma
http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/
melkorm
Cytat
Warto rzucić okiem na http://mootools.net/slickspeed/ . No i @230005 argument


Z chęcią bym zobaczył aktualne porównanie smile.gif Ponieważ jQuery w wersji 1.4.x bardzo przyśpieszyło.
ShadowD
Za pomocą firebuga podmień link do biblioteki zawierający najnowszą wersję, wzrost w teście to ~10pkt. ;-)
230005
Cytat
No i @230005 argument (...)


No co smile.gif? W dosyć krótkim czasie mogłem zacząć się raczej bezproblemowo poruszać w tym fraweworku. Po przeznaczeniu mniej więcej takiej samej ilości czasu na mootools wciąż zdarzało mi się zacinać na jakichś pierdołach. Obsługa pierwszego jest dla mnie bardziej intuicyjna smile.gif.
erix
Przyznam, że nawet nie wiem, kiedy się jQuery nauczyłem, ale w porównaniu do innych bibliotek - wg mnie - ma dwie bezapelacyjne zalety:

  • chaining - nie trzeba korzystać z tymczasowych zmiennych, czy konstrukcji with
  • intuicyjność - nawet po baaardzo długiej przerwie w kodzeniu front-endu wystarczy pozgadywać nazwy metod, aby się okazało, że... to działa smile.gif


Jeśli chodzi o porównanie innych bibliotek - wolę jQuery również za szybkość, której ustępują praktycznie wszystkie frameworki oprócz Dojo (http://selectors.turnwheel.com/slickspeed.php - np. engine selektorów).

Pozostaje jeszcze kwestia wygody:
  • nie trzeba prawie zaglądać do dokumentacji przy pisaniu, całość jest dość dobrze ustandaryzowana
  • nie ma jakiegoś podziału na klasy/metody typu "sztuka-dla-sztuki", jak to ma np. miejsce w Prototype. Jedna funkcja $() i koder jest już szczęśliwy biggrin.gif


Cytat
Oczywiście można sobie kod jquery sformatować, ale w gąszczu literek i cyferek i tak można go łatwo przeoczyć. Może to tylko kwestia estetyki, ale dla mnie to duży plus dla mootools (jednak nie na tyle żeby porzucić jquery ).

A kto Ci broni użyć takiego potworka?

[JAVASCRIPT] pobierz, plaintext
  1. $('<a href="http://jquery.com/" class="myClass" style="display: block; border: 1px solid black">Click me!</a>')
  2.  
  3. $(document.createElement('a')).addClass('myClass').style({display: "block", border: "1px solid black"}).html('Click me!');
[JAVASCRIPT] pobierz, plaintext


Jak mało czytelne, to stosuję swój ulubiony sposób zapisu.

[JAVASCRIPT] pobierz, plaintext
  1. $(document.createElement('a'))
  2. .addClass('myClass')
  3. .style({
  4. display: "block",
  5. border: "1px solid black"
  6. })
  7. .html('Click me!');
[JAVASCRIPT] pobierz, plaintext


I po kiego grzyba jakieś wtyczki, które tylko zwiększają rozmiar pobieranych bibliotek? winksmiley.jpg

wszystko pisane z palca, jak nie działa, to przykro mi tongue.gif
230005
Cytat
chaining - nie trzeba korzystać z tymczasowych zmiennych, czy konstrukcji with


Akurat co do chainingu, to jestem raczej pewien, że przynajmniej część pozostałych bibliotek coś takiego wspiera. Na pewno Mootools.
erix
Pokaż, bo ja chyba ślepy jestem. winksmiley.jpg
230005
W mootoolsowym tutorialu to wyczytałem, ale teraz nie mogę znaleźć smile.gif. Nie zmyślam, ani nie mam zwidów, tylko nie mogę znaleźć! biggrin.gif Myślę że skowron-line mógłby coś powiedzieć na ten temat.
skowron-line
Cytat(230005 @ 14.04.2010, 22:09:06 ) *
Myślę że skowron-line mógłby coś powiedzieć na ten temat.

Tak potwierdzam twoje słowa smile.gif
http://jqueryvsmootools.com/ akapit "Chaining as a Design Pattern"
[JAVASCRIPT] pobierz, plaintext
  1. new Element('a').setProperty('href','http://mootools.net').set('html', 'mootools.net').inject($(document.body));
[JAVASCRIPT] pobierz, plaintext


+ mootools::chain class

Jedyną różnicą na jaką należy patrzeć w tych FW jest szybkość działania.

Edit:
http://ryanflorence.com/jquery-1-4-mootools-1-2-compared/
athabus
Mam wrodzoną niechęć do wszystkiego co jest związane z JS - może dlatego, że gdy pierwszy raz uczyłem się JS to cały kod trzeba było pisać do każdej przeglądarki osobno...

Obecnie w ogóle unikaj JS - robiłem wyjątek tylko dla aplikacji oparty o ajaxowy interfejs. Moje podejście zmienia właśnie jquery - bardzo łatwo można ją opanować. Jest wiele fajny pluginów i wszystko działa bardzo domyślnie. Dokumentacja jest całkiem niezła, więc łatwo się przebić i zacząć programować.

W niektórych miejscach trochę denerwuje mnie składnia, ale ogólnie bardzo przyjemne narzędzie dla kogoś, kto JS używa rzadko i często wraca po dłuższej przerwie. Bez tej biblioteki wiele rzeczy byłoby poza moim zasięgiem bo tak jak pisałem jestem niedzielnym javascriptowcem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.