Czemu ludzie nie lubią Angulara?

Czemu ludzie nie lubią Angulara?
NO
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:165
6

Mam trzy projekty zrobione przy użyciu różnych narzędzi:

angular2+typescript

To szybkie i agresywne, a zarazem skuteczne rozwiązanie do prowadzenia małych projektów.

Osoby, które lepiej czują się w backendzie mogą w Angularze czuć się trochę jak ryba w wodzie, ponieważ angular spina wiele znanych technik w jedno. Mowa między innymi o wstrzykiwaniu, renderowaniu szablonów, podziału kodu na klas i to wszystko sprawia, że z miejsca uzyskuje się niezłe tempo.

Angular dodatkowo jest dobry dla osób początkujących z dwóch względów:

  • ma typescript, który pozwala wykryć większość prymitywnych błędów
  • jako framework oferuje pewne wzorce/build blocks do budowania apki dzięki czemu w głowie rodzi się większa świadomość

Tego typu struktura chroni początkujące osoby przed nieznanym, ale owszem utrudnia pracę osobom, które dużo płynniej poruszają się w javascripcie i dynamicznym programowaniu.

Tak osobiście to średnio lubię zaglądać do kodu gdzie jest Angular, ale nie ukrywam: pomógł mi parę lat temu zrealizować jeden projekt z jakiego do dziś korzystam.

To czy w angularze będziemy się dusić zależy też wiele od typu aplikacji. Jeśli aplikacja jest bardzo dynamiczna i wymaga więcej rozbijania na mniejsze komponenty to w takim starciu jednak lepiej wypada reactjs.

javascript es6 + reactjs

Po angularze to rozwiązanie nie powiedziałbym, że było łatwiejsze, ale prostsze zrozumieniu i dostosowaniu to moich własnych potrzeb. W javascript es6 + reactjs mam postawioną kolejną własną aplikacje, gdzie pary ludzi ze sobą pracują na pewnej przestrzeni, w trakcie ich pracy content ulega różnym przekształceniom, komunikacja jest po zdarzenia na websocketach.

Ogólnie sam reactjs to tylko biblioteka od widoku i poza tym resztę trzeba jakoś wypełnić. Nie jestem javascript developerem (chociaż lubię czytać o tym języku książki), dlatego praca z redux i podobnymi rozwiązaniami to dla mnie trochę rzeźnia. Redux fajnie wygląda jak jest goły, ale jak próbujesz to wszystko spiąć razem. To jest kilka rozkmin w stylu jak obsłużyć akcje z efektami ubocznymi, jak lepiej rozkładać stan na komponenty. Wiadomo doświadczony dev ma jakieś sprawdzone po latach rozwiązaniach, natomiast to był mój pierwszy większy projekt i byłem trochę w czarnej D.

Próbowałem też przejść na inny model i użyć to co proponuje Cycle.js (ala Rx), bo jak podkreśla André Staltz w reactjs bardziej opłaca się styl funkcyjny niż imperatywny. I w sumie ma rację skoro lepiej używać propsów jako immutable. Jednak przejście na operowanie samymi strumieniami to było trochę trudne i trochę przeinżynierowane podejście.

Ostatecznie dociągnąłem bez redux i cyclejs, rozwiązanie oparłem w dużym stopniu o własne klasy zarządzające stanem i <3 eventlistener. Całość chula już z półtora roku i ani razu nie było awarii w trakcie sesji :D

clojurescript + reactjs przez rum

Mój kolejny projekt oparłem na clojurescript (z biblioteką rum). ClojureScript to lisp (inaczej mówiąc to tona tęczowych nawiasów), a mimo to w porównaniu do dwóch poprzednich środowisk jest dużo prościej.

  1. rum pozwala szybciej i łatwiej tworzyć własne komponenty, wynika to trochę z uproszczonego zapisu i tego, że widoki opisuje się poprzez wyrażenia; nawet nie wiem czy to możliwe w JS, ale tutaj jako propsy przekazuje funkcje, czy inne komponenty, co znacznie ułatwia mi podział pewnych zadań
  2. clojurescript ma wbudowane niemodyfikowalne typy - niesamowita sprawa w połączeniu z react
  3. clojurescript oferuje narzędzia do zarządzania stanem w współbieżnym kodzie jednym z nich jest atom w którym najczęściej trzyma się stan całej apki (znika potrzeba korzystania z redux i innych protez)
  4. poza atomami jest tu dostępny styl goroutines w bibliotece async.core; chociaż w prostszych apkach bardziej mi podchodzą obietnice
  5. clojurescript świetnie integruje się z bibliotekami pisanymi w js, ostatnio miłem sporo frajdy piszę kod pod draftjs i rzeczami typu drag and drop
  6. są dodatkowe narzędzie, które dają lepszy feedback ze strony kodu np. hotreloading (figwheel) fajna rzecz gdy chcesz podtrzymać stan w apce bez odświeżania projekty, by zaraz później ujrzeć zmiany jakie wywołał kod na twoim stanie
  7. no i REPL o którym kiedyś wspominałem, zmienia podejście do kodowania :)
  8. kończąc projekt widzę największą różnicę, wcześniej pewna znacząca część kodu odpowiadała za strukturę aplikacji, ale sama w sobie nie była logiką; a teraz prawie cały kod jaki mam to żywe mięso zero zbędnych abstrakcji, dla mnie to szok :D

EDIT:

Wymieniłem same plusy, a nic nie wspomniałem o minusach, a ich też jest trochę:

  1. Czasem przez niektóre wbudowane i podstawowe makra idzie dostać błąd który nic nie mówi. Jedynie wiadomo w którym pliku to się stało. Np. jak oznaczę, że wybrana nazwa jest funkcją a przypisze jej wartość jak do zmiennej to leżę. Wtedy mniej więcej na 5-10 min znikam a mój czas idzie do piachu.
  2. Trzeba mieć trochę doświadczenia z javascript. Niektóre błędy są na pograniczu js a clojurescript i wtedy przydaje się zarazem wiedza z javascript jak i clojure.
  3. Standardowa biblioteka w clojurescript dla wielu operacji zwraca nieszczęsne leniwe sekwencje. One są problematyczne jeśli wpuści sie ję do asynchroniczniego kodu, łatwo wtedy idzie zgubić kontekst wykonania i pojawiają się trudniejsze do wyłapania błędy. Dlatego przed opuszczeniem funkcji pilnuje, by zmarterializować sekwencję.
  4. Atomy są OK, ale trzeba mieć kilka dobrych pomysłów, aby napisać apkę podzieloną na moduły, która jest zależna od jednego atomu. To jest chyba najtrudniejszy element po którym pisanie apki idzie z góry.
  5. To nie jest tak, że clojurescript sam pisze Ci aplikacje i masz efekt wow. Ogólnie to jest tak, że jak nie dbasz o przestrzenie nazw, odpowiednie warstwy, składnie funkcji, układanie przepływu w funkcjach, podział funkcji na side effect i obliczenia to język sam Ciebie zjada, na wielu rzeczach się przejechałem nim zrozumiałem od której strony należy je podejść. No i w rezultacie refaktoring to chyba najmniej przyjemna rzecz.
edytowany 3x, ostatnio: nohtyp
mad_penguin
mad_penguin
W czystym jsie też można przecież przekazywać funkcje i całe komponenty jako propsy, a skrócona składnia tzn function components w praktyce umożliwia zapis komponentu jako wyrażenia (lambdę)
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 godzin
  • Postów:5106
0

@mr_jaro:

vue nie lubię za dużo nerwów mnie kosztował i te rąbnięte mieszanie css, js i html w jednym pliku, pfu, a gdy popatrzyłem na reacta to tak samo by mnie wk*****ł więc wole nie ruszać

?

masz dwa pliki:

  • plik vue z "code behind" (obliczanie/zaciąganie/mielenie)

  • oraz vue html z samymi v ifami, v loopami itd.

css masz osobno i oczywiście wszystko przerobione na componenty.

gdzie tu mieszanie? przecież to są same bindy do jakichś property lub innych computed things.

edytowany 2x, ostatnio: WeiXiao
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

@WeiXiao: może coś się zmieniło ale to musiało ostatnio, bo jeszcze rok temu twórcy się zapierali, że wsadzanie wszystkich 3 rzeczy do jednego pliku to najlepsze rozwiązanie i nie dodadzą wsparcia do dzielenia tego na pliki. Dało się dzielić zewnętrznymi dodatkami które twórcy uznawali za złe dlatego nikt tego nie robił.

Edit o tym mówie, to było jedyne rozwiązanie przez długi czas na komponenty https://vuejs.org/v2/guide/single-file-components.html


It's All About the Game.
edytowany 1x, ostatnio: mr_jaro
WeiXiao
templaty to się nazywa iirc.
marcio
ja tak szczerze lubie miec wszystko w jednym w pliku lub podzielone gdy pracuje w ng nie robi mi to zbytnio roznicy
SushiTrash
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:41
1

Jeszcze dochodzi domyślny framework do testowania: Jasmine... wieczne problemy z nim były bo do działania musi mieć przeglądarkę (nawet do testów jednostkowych), ciągłe problemy przez to z CI/CD bo a to testy nie przechodziły, a to headless browser się wywalał, same testy przez to trwały dłużej... może teraz się polepszył ale dla mnie ten jasmine w porównaniu do jest słabo wypadał.

Znam osoby którym się podobał angular ale one nigdy nie testowały swoich aplikacji, nie implementowały CI/CD, a same aplikacje które pisali były dość proste.

W Angularze jest też trudniej re-używać komponentów. Ogólnie kodu jest więcej a wynik taki sam jak nie gorszy. Lubię za to nestjs który jest takim "expressowym angularem" dla backendu (twórcom chyba przypadł do gustu angular). Ale to inna para kaloszy.

I ta biedna dokumentacja, niekompletna a w niektórych miejscach nieaktualna.

Generalnie to się zgadzam z wszystkimi uwagami powyżej.

mr_jaro
nestjs... omg 3 dni walczyłem z tym by cokolwiek ruszyć
SushiTrash
SushiTrash
ale jak piszesz mikroserwisy które później działają na jakimś k8s i każdy ma swoją bazę danych to rozwiązania nesta naprawdę to ułatwiają (finalnie w expresie mikroserwisy wygladaja podobnie)... jak piszesz monolit to express zdecydowanie góruje bo nie musisz projektować apki z myślą o jakiś event sourcingu, cqrs-ach i innych takich... poza tym w dokumentacji masz dużo fajnych przykładów jak coś zaimplementować i jak robisz według dokumentacji to moim zdaniem oszczędzasz sobie dużo czasu na konfigurowaniu podstaw projektu i późniejszym developmencie...
SushiTrash
SushiTrash
sam preferuje express ale dla tego, że go lepiej znam i pewniej się czuję niż dla tego, że uznaje jego wyższość... dla mnie oba są dobre ale jeden i drugi służy do rozwiązywania innych problemów.
N0
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Gdańsk
  • Postów:647
0

Czyli widzę, że 90% ludzi na forum woli Reacta.

Zobacz pozostały 1 komentarz
N0
Wątek jest na głównej, gdyby było więcej zwolenników, to by przyszli go [Angulara] bronić :D
Silv
Można i tak pomyśleć. Ale jednak od strony statystycznej byłbym bardziej rygorystyczny. :)
neves
To może czas na wątek dlaczego ludzie nie lubią reacta 😁? Reacta też mogę pohejtować 😂
marcio
czyli 90% to pospolitosc :) i nie wiedza co dobre :D
N0
@neves Już możesz pohejtować w wolnej chwili :D Co Ci się nie podoba w Reakcie?
M8
  • Rejestracja:prawie 14 lat
  • Ostatnio:około miesiąc
  • Postów:151
0

Hej. Kiedyś przy tworzeniu swojej aplikacji webowej sięgnąłem do angularjs, który znacznie uprościł mi renderowanie i pracę z danymi. Znając co nieco angularjs postanowiłem iść krok dalej, poznałem angular2+, obecnie robię małą aplikację w najnowszym angularze (obecnie wersja 8) Na początku nie mogłem przeskoczyć z angularjs do angular2, było tyle różnic, teraz po dłuższym czasie tworzenie aplikacji w angularze nie sprawia mi większych trudności
Angulara już znam, teraz powiedzcie co takiego lepszego react może mi zaoferować, czym moglibyście mnie zachęcić do poznania reacta.


GG: 28287812
Skype: marcinmn.s
edytowany 1x, ostatnio: marcin82w
MA
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 2 lata
  • Postów:337
0

Angulara już znam, teraz powiedzcie co takiego lepszego react może mi zaoferować, czym moglibyście mnie zachęcić do poznania reacta,
To, że to jest biblioteka a nie framework i idzie z wadami i korzyściami biblioteki. Będziesz mógł dowolnie sobie skonfigurować cały setup lub zostawić tylko renderowanie komponentów.

mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

@MuadibAtrides psssst angulara też tak się da


It's All About the Game.
MA
Jak skonfigurować angulara by był sam rendering komponentów?
mr_jaro
można użyć jak zwykłą bibliotekę, a nie pełny framework spa
VE
  • Rejestracja:około 9 lat
  • Ostatnio:około 17 godzin
  • Postów:160
0

ja wole Angulara (nie znaczy że Reacta nie trawię) bo w bibliotece od facebooka wkurza mnie:

  • JSX, ciężko się mi w tym było ogarnąć przy większych templatach z wieloma warunkami
  • deklaratywny styl, chociażby definowanie route'ów w JSX jakieś takie dziwne
  • co już zostało wcześniej wspomniane, właściwie kompletna dowolność w implementacji i strukturze apki, co może być zaletą ale póki co ja trafiałem na projekty gdzie wszystko było totalnie pogmatwane na różne sposoby
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0
nobody01 napisał(a):

@Wibowit: ? Hejt dotyczy Angulara, a to chyba Reacta się porównuje do PHP.

Niektórzy porównują Reacta do PHP patrząc powierzchownie na JSX vs PHP jako template language, ale poza tym pozornym podobieństwem to niewiele mają wspólnego.
Jak spojrzysz na sam paradygmat i używane techniki to Angularowi dużo bliżej do PHPowych frameworków - nacisk na OOP, kontener DI, serwisy itp.

edytowany 2x, ostatnio: Maciej Cąderek
M8
  • Rejestracja:prawie 14 lat
  • Ostatnio:około miesiąc
  • Postów:151
2

Brak jakiś konkretnych argumentów przekonujących mnie do choćby spróbowania reacta, sama aplikacja angularowa może jest kobyłą, ale to tylko jednokrotny problem przy tworzeniu projektu, trochę pakietów musi zaciągnąć z sieci. Potem sama praca w angularze to przyjemność,

Veox napisał(a):
  • JSX, ciężko się mi w tym było ogarnąć przy większych templatach z wieloma warunkami

w angularze sam html od logiki sensownie rozdzielony.

Veox napisał(a):
  • deklaratywny styl, chociażby definowanie route'ów w JSX jakieś takie dziwne

routing w angularze jest bajecznie prosty.

I wiele innych rzeczy można by tu przytoczyć.


GG: 28287812
Skype: marcinmn.s
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)