Czemu SPA (Single Page Application) to zło?

Odpowiedz Nowy wątek
2019-04-10 21:32
1

Czytając wątek Przepiszmy 4programmers/coyote do .net core 4fun natknąłem się na opinie że SPA jest do niczego. Trend stosowania SPA na stronach WWW można zauważyć już od wielu lat. Weźmy na przykład systemy transakcyjne banków. Większość z nich (które widziałem) to SPA.

Nie mówię że SPA to coś złego, nie jestem ich przeciwnikiem. Jako osoba która pisze również w JS, muszę powiedzieć, ze frameworki takie jak Angular czy React zrewolucjonizowały rynek. Pamiętam jak wiele lat temu nowością był jQuery. Również była to swego rodzaju rewolucja, jednak porównując jQuery a obecne frameworki JS to jak niebo a ziemia.

Sporo obecnego kodu 4programmers.net to legacy code w jQuery. Kod jest niestety paskudny i ciężki w utrzymaniu. W SPA dostrzegam jedną wadę, a mianowicie gorsze indeksowanie przez boty i "lag" który jest zauważalny przez ładowanie strony. Jest jednak coś takiego jak SSR (Server Side Rendering), który eliminuje ten problem.

Jaka jest Wasza opinia w tej sprawie?

Pozostało 580 znaków

2019-04-12 18:30
1
WeiXiao napisał(a):

@czysteskarpety:

Podejście hybrydowe jest fajne i chyba wymagałoby najmniej pracy.

Ponadto 4p ma prawie 200 requestów (w tym z różnych portali, reklamy itp.), jest spory rozrzut co widać tutaj:
https://requestmap.herokuapp.[...]8064cec15911eb4744fdc17d1ff0/
więc cudu nie będzie, pewnie sporo też cache'uje cloudflare, więc ponownie nie ładuje się z 70-80% contentu, widać to nawet po navi, że nic nie "mruga" więc nie ma specjalnie jakiegoś "ciężkiego" przeładowania zasobów przy zmianie treści.


Pozostało 580 znaków

2019-04-14 16:53
0

Tu macie jeszcze jeden minus SPA. Otworzcie sobie agende konferencji: https://4developers.org.pl/warszawa/#agenda

I sprobojcie porownac godzina po godzinie ktory wyklad warto bylo wybrac albo na ktorym sie bylo. Az sie marzy zeby to bylo w statycznej tabelce.

Zdaje się, że SPA nie zabrania wykorzystywać tabelek - autor strony zwyczajnie podszedł do tematu akurat tak, a nie inaczej :-) - Patryk27 2019-04-14 16:58
ale to jest wordpress na motywie "mesmerize pro" - czysteskarpety 2019-04-14 17:00
@Patryk27: ale wlasnie autorzy stron SPA przewaznie podchodza tak ze ciezko sie nawiguje :) A w statecznych tabelkach nawet jak sie nie ma duzej wiedzy to nawigacje ciezko zepsuc :) - WhiteLightning 2019-04-14 17:00

Pozostało 580 znaków

2019-04-14 19:49
4

SPA to upodobnienie aplikacji przeglądarkowych do desktopu pod kątem interfejsu użytkownika (desktop nie przeładowuje strony).
SPA to odpowiedź na tendencję rynku do przechodzenia z aplikacji desktopowych do aplikacji odpalanych w przeglądarce.
Jeżeli ktoś twierdzi, że SPA jest złym rozwiązaniem to po prostu nie rozumie w jakim kierunku podążają aplikacje www i rynek it.

Strony, które wymagają indeksacji, nie potrzebują spa, bo to nie są aplikacje, tylko strony wyświetlające treść, aplikacja to coś bardziej zaawansowanego.
SPA to single page application, a nie single page website.
Nie ma potrzeby, żeby zawartość bloga wyświetlać w SPA, ale zarządzanie nim, można jak najbardziej zrobić w SPA.

Pozostało 580 znaków

2019-04-14 19:55
0
omenomn napisał(a):

Jeżeli ktoś twierdzi, że SPA jest złym rozwiązaniem to po prostu nie rozumie w jakim kierunku podążają aplikacje www i rynek it.

Nikt nie twierdzi, że SPA jest złym rozwiązaniem, tylko nie zawsze jest najlepszym.


Pozostało 580 znaków

2019-04-14 20:51
2

Do React jest nadbudówka: https://nextjs.org/ - ma specjalne wsparcie dla SSR, statycznych stron, automatic code splitting (a więc JS, CSS, etc jest podzielony na małe kawałki i dociągany w razie potrzeby), itd W praktyce prawdopodobnie i tak ktoś dorzuci gdzieś megabajtowy skrypt JS i cała magia kompaktowego kodu wynikowego pryśnie, ale te megabajtowe skrypty zdarzają się niezależnie od wybranego frameworka. Odpaliłem sobie Forum dyskusyjne w trybie incognito w Chrome i odświeżyłem stronę za pomocą opcji "opróżnij pamięć podręczną i wymuś ponowne załadowanie". Efekt? 984 KB transferred, 2.6 MB resources. Lekkie to to forum nie jest. Z drugiej strony, możliwe że większość transferu zjadły reklamy.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2019-04-15 11:20
0

Sprawdź http://dev.4programmers.info/Forum gdzie nie ma reklam żadnych. 30 req i 300 kB. Natomiast na produkcji 130 req :/

Pozostało 580 znaków

2019-04-15 11:40
0
Adam Boduch napisał(a):

Sprawdź http://dev.4programmers.info/Forum gdzie nie ma reklam żadnych. 30 req i 300 kB. Natomiast na produkcji 130 req :/

screenshot-20190415113334.png

372 KB i to pewnie po kompresji, bo jest 880 KB resources.

Na pewno plus jest taki, że nie ma laga spowodowanego ładowaniem masy JavaScriptu na starcie. Z drugiej strony przy słabym necie ściąganie 372 KB danych trochę potrwa, a SPA niekoniecznie musi ważyć dużo więcej.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
400 KB = problem? z którego roku piszesz? 2012? :D - WeiXiao 2019-04-15 18:23
ale to piszesz o czystym react'cie bez dodatkowych zależności, komponentów itp. - czysteskarpety 2019-04-15 18:34
Dodatkowe zależności praktycznie zawsze masz. Nawet jak nie używasz Recta to i tak nie piszesz w vanilla.js - Wibowit 2019-04-15 18:37

Pozostało 580 znaków

2019-04-15 11:47
0
Wibowit napisał(a):

Z drugiej strony przy słabym necie ściąganie 372 KB danych trochę potrwa, a SPA niekoniecznie musi ważyć dużo więcej.

To zobacz np. justjoin.it 5-7MB i kilkadziesiąt sekund łącznie :)


Pokaż pozostałe 4 komentarze
Nie ma wyszukiwarki, a wszystko idzie znaleźć. Magia. :) - somekind 2019-04-17 19:56
Teoretycznie tak. W praktyce jak mam w jednej kategorii 200 ofert to nie chce mi się tego scrollować jak małpie. Są wygodniejsze rozwiązania patrz nofluffjobs. - Hispano-Suiza 2019-04-17 20:48
Ja jestem prosty chłopak, więc mam szczęście. Szukam w jednym mieście, w jednej technologii, z prostą stawką, to mam maks 10 ofert. Ale rozumiem, że w innych branżach/miastach będzie to niewygodne. Z drugiej strony nofluff wymaga nauczenia się pojebanej składni zapytań, której nie mogę zapamiętać i ma mniej ofert. - somekind 2019-04-17 20:58
nofluff jest na angie js :) plus mix 300 requestów z widżetami itp. chyba nawet momentami jquery widzę, ale działa - czysteskarpety 2019-04-17 21:03
@czysteskarpety: aspekt zakładki Network w konsoli przy wczytywaniu nofluff przemilczę. O działaniu na mobile to już nawet nie wspomnę. Nie będę kopać leżącego :-) - Hispano-Suiza 2019-04-17 21:35

Pozostało 580 znaków

2019-04-15 11:58
2

To jeszcze trochę zależy jak to SPA jest zrobione. Bo jeżeli mam przed sobą wynalazek, w którym:

  • nie da się otworzyć podstrony o nowej karcie,
  • nie działa "back",
  • nie da się zapisać adresu aktualnie przeglądanego miejsca, żeby tam wrócić,
  • strona doładowuje kolejne pozycje w nieskończonym ciągu, nie informując ile ich w sumie jest i nie posiadając przy tym żadnej paginacji.

To nie jest to żadne polepszenie, tylko zwyczajna tragedia.

Poza tym bywa, że chcę przeglądać jakąś stronę z wyłączonym JS i/lub CSS i efekty bywają wtedy dziwaczne do tragicznych.

Poza tym, jeśli dla wyświetlenia np. nowej podstrony forum czy listy produktów używa się JS, to bywa to dezorientujące, bo jeśli klikam w link, to oczekuję, że będzie zachowywał się jak link.

Poza tym (tak trochę na marginesie tematu) wk... animacje przed / zamiast treści. To akurat obecnie najczęściej nie wina SPA tylko gotowych (i nadużywanych) szablonów CSS/JS, które "ożywiają" strony, które później zamiast gotowej treści oferują mi "radosny kalejdoskop" przed jej wyświetleniem. Ale w przypadku SPA też bywa tak, że proste przeładowanie strony trwałoby krócej niż "kreatywna i ożywcza" animacja z dynamiczną podmianą treści.


edytowany 1x, ostatnio: Freja Draco, 2019-04-15 12:14
Pokaż pozostałe 2 komentarze
na wilu stronach wylaczam js i html5, po to by mozna bylo przejrzec te strone normalnie, bez latających dziwolagow, i bez przysloniecia jej plansza by wylaczyc adblocka. - kaczus 2019-04-17 10:14
@kaczus: Jak się wyłącza html5? - Freja Draco 2019-04-17 12:43
sa do tego wtyczki (wyłączają niektóre rozszerzenia, jak np obsluga plików multimedialnych) - kaczus 2019-04-17 12:44
@kaczus: znaczy się masz na myśli blokowanie obiektów "video html5"? - Freja Draco 2019-04-17 12:46
między innymi, nie pamiętam dokładnie które elementy są wtedy blokowane, ale dla mnie wszystkie video i audio są najważniejsze. Nie cierpię czytać jak włączają mi się różne filmy, animacje itp, że o dźwiękach nie wspomnę. Dlatego na stronach, jeśli nie wygodnie używa się adblockla, to wyłączam js i html5 (tak się wtyczka nazywa) - kaczus 2019-04-17 12:50

Pozostało 580 znaków

2019-04-15 12:19
1

Dla mnie SPA ma jedynie sens jeśli celem jest uzyskanie możliwości pracy w trybie offline. W przeciwnym razie wszystko to co oferuje SPA to przerost formy nad treścią.

Poza tym użycie React absolutnie nie oznacza, że właśnie tworzymy SPA. Co stoi na przeszkodzie, by mieć kilka widoków/stronek tak jak w tradycyjnym podejściu? React po prostu ułatwia renderowanie komponentów i tyle - aż tyle.

tryb offline oferuje też PWA bez SPA - czysteskarpety 2019-04-15 12:27

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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