Czy możliwe i sensowne jest jednoczesne używanie AngularJS i jQuery

0

Witam,
zacząłem bawić się angularem i wiem, że łączenie ich nie jest do końca dobrym rozwiązaniem, ale bardzo chcę zastosować jakieś fajne animacje i pytanie moje brzmi -> czy wewnątrz funkcji angulara można dodać jakieś dyrektywy z jQuery?

np.: http://jqueryui.com/effect/ (tak wiem, że to jQuery UI)

Druga sprawa: Jeżeli angular tak dobrze zastępuje jQuery to jest sens używać ich razem?

0

Angular i jQuery to nie są biblioteki, które mają to samo zadanie!
Częściowo mogą duplikować swoje funkcjonalności (choć w zupełnie innym zapisie), a częściowo mogą się uzupełniać. Świadczyć o tym może choćby ta strona dokumentacji angulara: https://docs.angularjs.org/api/ng/function/angular.element

Druga rzecz: "angular i jquery" to beznadziejny temat na wątek. Taki temat powinien się znaleźć w koszu, ale tym razem poprawiłem go za Ciebie. Przeczytaj regulamin forum oraz Jak dobrze zatytułować wątek?

0

Jeśli używasz Angulara i nie potrzebujesz korzystać z pluginów w jQuery, to nie ma sensu używanie jednego i drugiego. Osobiście jestem przeciwny łączeniu tych dwóch narzędzi - inna filozofia, inne podejście, a mieszanie takich rzeczy ma swoje konsekwencje w postaci bugów czy problemów z wydajnością aplikacji. Kiedyś ktoś tam napisał, że jQuery dostarcza szereg dodatkowych helperów, które ułatwiają pisanie dyrektyw. Zgoda, ale pytanie jak często tego używasz i czy nie warto napisać ich własnoręcznie, zamiast włączać kolejny kombajn (khym, przy okazji: http://youmightnotneedjquery.com/). Animacje możesz realizować w CSS jeśli są one proste i nie potrzebujesz w nich logiki. Moduł ngAnimate dostarcza wystarczająco dużo mechanizmów potrzebnych do napisania całkiem sensownych animacji. Jeśli Cię to ogranicza, to może GSAP jest jakimś rozwiązaniem (https://greensock.com/gsap).

A z gotowców zerknij na Angular UI.

I jeśli bardzo chcesz użyć jQuery, to opakuj to w dyrektywę, a zewnętrzne pluginy w serwis. I tak, "można dodać jakieś dyrektywy z jQuery", jeśli dobrze Cię rozumiem.

0

Dzięki za odpowiedzi.

**To w takim razie kiedy używać Angulara a kiedy jQuery? **

jQuery znam dobrze, natomiast bardzo spodobał mi się Angular. Problem tkwi w tym, że mam już część kodu w jQuery (pisaną przez kumpla) i przepisywanie go do Angulara może mi trochę zająć. A jak wygląda trudność napisania takiego RWD w Angularze?

0

P.S. Pogrubione pytanie dotyczy zastosowania, a nie różnic między nimi - wiem, że angular "działa" na html, a jQuery to rozszerzenie JS. Czyli kiedy lepiej stosować Angular a kiedy jQuery? A może jQuery staje się przeżytkiem lub zabawką dla początkujących?

0

**To w takim razie kiedy używać Angulara a kiedy jQuery? **

Jeśli nie widzisz potrzeby używania Angulara, to może go nie potrzebujesz. :) jQuery przydaje się w małych projektach, najlepiej takich, w których nie kosztuje Cię później wieloletnie utrzymanie. Idealnie nadaje się do małych stron, gdzie kilka efektów zadowoli klienta. Problem pojawia się jak kod się rozrasta i robi się syf. Pamiętaj, że jQuery to tylko "mała" biblioteka. Dużym kosztem jest zaimplementowanie odpowiednich wzorców i zorganizowanie kodu. Czasami jest to po prostu nieopłacalne. W dodatku niektóre mechanizmy pisze się szybciej w Angularze, szczególnie te dotyczące formularzy czy transformacji danych z RESTa, bo w tym sobie dobrze radzi.

Obecnie pracuję w projekcie Angularowym i mam też utrzymaniowy w jQuery. Projekt w jQuery jest malutki, rzędu 5-6k linii kodu JS, natomiast ten drugi znacznie większy i nie wyobrażam sobie pewnych rzeczy pisać w jQuery, bo po prostu trudno to ogarnąć. ;) Ponadto, esencja Angulara, czyli dyrektywy, potrafią drastycznie zwiększyć czytelność i reużywalność kodu. W jQuery często kończyliśmy z dużymi plikami HTML (tzn. ponad 100 linijek) z masą tagów, co było kompletnie nieczytelne po paru miesiącach (a to jest bardzo istotne, jeśli wprowadza się nowych programistów - po cholerę mają tracić nawet i pół godziny na wgryzanie się w kod i męczenie później z CSSem, który pewnie jest zorganizowany jeszcze gorzej niż HTML?). A plików takich może być kilkaset... W Angularze dzięki dyrektywom możesz odpowiednio podzielić ten plik i stworzyć pewną hierarchię, co zaowocuje czytelnością. Ba, bywa że jak napisze się raz x tagów dla dajmy na to accordiona, to developerzy kopiują kod do nowego widoku, jeśli potrzebują użyć ponownie. Stosowanie dyrektyw w Angularze pozwala przynajmniej zminimalizować pokusę takiego czegoś, bo wystarczy zastosować własny tag. :) I sprzyja to też modularyzacji, a warto pamiętać, że czasy, w których front-end to był jeden plik JS i kilkadziesiąt funkcji operujących na DOMie dawno minęły.

jQuery znam dobrze, natomiast bardzo spodobał mi się Angular. Problem tkwi w tym, że mam już część kodu w jQuery (pisaną przez kumpla) i przepisywanie go do Angulara może mi trochę zająć. A jak wygląda trudność napisania takiego RWD w Angularze?

Jeśli kodu nie jest dużo, to może warto przepisać. Pamiętaj, że jQuery i Angular razem jest możliwe, po prostu to koszt, jeśli aplikacja miałaby działać na produkcji, a nie jest tylko jakimś poligonem doświadczalnym. ;) Jeśli nie przeszkadzają Ci dodatkowe kilobajty i będziesz potrafił dobrze odseparować funkcjonalności w obu narzędziach, to możesz stosować oba. Zagrożeniem jest, że jeśli nie będziesz wiedział Ty czy kumpel jak zrobić coś w Angularze, to możesz zechcieć dopisać coś "na szybko" w jQuery i może zrobić się bałagan. Ale to już kwestia samodyscypliny. RWD nie ma raczej nic wspólnego z Angularem, to jest CSS głównie jakby nie patrzeć, więc nie wiem w czym problem? Może chodziło Ci o wsparcie dla urządzeń mobilnych ogółem? Wtedy tak, jest taka opcja (zerknij na ngTouch - da Ci to jakiś obraz początkowy).

Podsumowując, Angulara używałbym w większych projektach, które chciałbyś później łatwiej utrzymywać. Są aplikacje, gdzie front-end jest ogromny, a back-end sprowadza się głównie do usług REST - tam widziałbym Angulara. Jeśli masz projekty z wieloma formularzami, gdzie możesz skorzystać z bindingów, filtrów, dużo komponentów się powtarza - warto zastosować Angulara. Jeśli chcesz mieć aplikację typu SPA, wtedy na pewno trudniej będzie zastosować jQuery, bo po prostu w Angularze masz już jakiś szkielet komunikacji i architektury, a napisanie czegoś podobnego i zarazem intuicyjnego jest trudne i czasochłonne. Jeśli chciałbyś skupić się na dostarczaniu wrażeń użytkownikowi, dopieszczaniu interfejsu, zamiast męczeniu się z trywialnymi problemami, które piętrzą się w jQuery (nie dlatego, że jest złe samo w sobie, to po prostu nie jest framework), to zastosuj Angulara. Jeśli zależy Ci na łatwym w testowaniu kodzie (czy jednostkowo, czy E2E), to wybór jest prosty. Mi dużo Angular dał, ale gdybym miał wcześniej styczność z innym podobnym rozwiązaniem (np. ember), to nie wiem co bym wybrał. Natomiast miałem styczność z Backbone i Knockout, ale nie spełniły naszych potrzeb w firmie.

jQuery powoli odchodzi w zapomnienie, bo już nie ma takich problemów z różnicami między przeglądarkami, jak kiedyś, a to głównie z tego powodu jest używane. Bo reszta to tak naprawdę JS, więc nie widzę potrzeby stosowania, jeśli nie musisz wspierać starych wersji IE.

1 użytkowników online, w tym zalogowanych: 0, gości: 1