Filtracja danych po stronie frontendu

2017-12-14 17:48
Pijany Kret
0

Jeśli chcę przefiltrować dane po stronie frontendu to jak to zrobić? Jak później to wyświetlić w tabelce html? Bo będą zwracane różne ilości rekordów przecież.

Pozostało 580 znaków

2017-12-14 18:38
0

dlaczego front ma się tym zajmować? Po co cisnąć więcej danych po sieci?
A wracając do meritum to wyświetlić tylko te, które potrzebujesz. A jak to zrobić to zależy od tego jak to robisz teraz.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2017-12-14 18:51
Mistrzowski Polityk
0

Czyli takie rzeczy należy robić po stronie backendu? Nie obciążę wtedy zbytnio bazy? Robienie tego po stronie frontu nie było by bardziej wydajnościowe?

Pozostało 580 znaków

2017-12-14 19:23
1

teraz to sobie chyba żartujesz. Uważasz, że wydajniejsze będzie przeciągnąć przez sieć (nawet jeśli to będzie ta sama maszyna to pewnie dan będą przez gniazda ciągane) WSZYSTKIE dane z backendu do frontendu, tylko po to, żeby frontend wyfiltrował dane, które mu potrzebne a resztę olał? Mimo iż te dane zazwyczaj są w jakiejś bazie, której niejako głównym zadaniem jest filtrowanie danych i jest ona pisana pod kontem jak najszybszego dostępu (zwracania) danych, które potrzebujemy?
Oczywiście wiąże się to z odpowiednim zaprojektowaniem backendu, żeby można było pobierać dane, które chcemy. Czyli zamiast jednej metody GetContractors() wypadało by mieć jeszcze np. GetContractorById(id), GetContractorByName(name), GetContractorsByCity(city) itd


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2017-12-14 19:26
Mistrzowski Polityk
0

Czyli przeważnie do filtrowania używa się backendu? To kiedy należy używac filtrowania po stronie frontendu?

Pozostało 580 znaków

2017-12-14 19:36
0

a należy używać filtrowania po stronie frontendu? Nie wiem czy w aplikacjach webowych w ogóle występuje filtrowanie po stronie frontu. W desktopach to trochę inna bajka bo tam ciężko znaleźć prawdziwego cienkiego klienta


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2017-12-14 19:41
Mistrzowski Polityk
0

okej to dobrze wiedzieć. Bo ostatnio mi jedna osoba właśnie mówiła, że powinno filtrowanie się robić po stronie frontu.

Pozostało 580 znaków

2017-12-14 19:44
2

ludzi ty nie słuchaj, tylko ścieżką mocy podążaj


Pozostało 580 znaków

2017-12-14 19:44
0

W desktopach to trochę inna bajka bo tam ciężko znaleźć prawdziwego cienkiego klienta

Ty postulujesz raczej grubego klienta.

To kiedy należy używac filtrowania po stronie frontendu?

Z rozsądkiem i też patrząć na to, żeby użytkownik był zadowolony. Jeśli użytkownik wyszukał jakieś produkty, pobrałeś dane o tych produktach, wyświetliłeś je w liście. Użytkownik zawęził wyszukiwanie np. bluza i np. strona się wczytuje z 3 sekundy i pokazuje tylko produkty do 100zł. Wtedy mógłbyś przefiltrować dane, które już masz, bo już je pobrałeś, więc po co je pobierać? Zresztą przefiltrować po stronie frontendu możesz w ułamek sekundy, bo nie musisz walić zapytania do serwera, które trwałoby np. 3 sekundy (więc nie wkurzyłbyś użytkownika).

(Ale to tylko połowa prawdy, bo np. załóżmy, że pobrałeś tylko pierwszą stronę - załóżmy, że masz takie stronicowanie, że jedna strona to 10 wyników - użytkownik kliknął filtruj i zostały tylko 4 produkty. I w rezultacie i tak musisz pobrać brakujące produkty (żeby dorównać do 10 wyników), więc i tak musisz się połączyć z bazą. Po prostu użytkownik zobaczyłby najpierw 4 pobrane przefiltrowane produkty, a potem resztę).

Więc jak korzystasz z bazy danych do trzymania i wyszukiwania danych to i tak pewnie nie unikniesz odwoływania się do bazy danych (bo inaczej po co ci by była ona?).

Ale ogólnie o ile czasem faktycznie można wykorzystać frontend do zmniejszenia obciążenia bazy (albo do polepszenia doświadczeń użytkownika), to mam wrażenie, że to jeszcze nie ten etap. Że zadajesz pytania trochę na wyrost i idziesz w złą stronę jeśli chodzi o rozumowanie (że czuję się, że może lepiej jakbym tobie odpisał korzystaj z bazy danych, a olej frontend, mimo, że nie byłoby to dokładne).

Nie obciążę wtedy zbytnio bazy?

Jeśli nie chcesz obciążyć bazy to się poucz o tworzeniu zapytań SQL, o robieniu indeksów, cache czy ogólnie tego, co znajdziesz na temat optymalizacji bazy (sam nie ogarniam tych tematów specjalnie, ale umiem googlować, jak tego wymaga sytuacja).

Jak później to wyświetlić w tabelce html? Bo będą zwracane różne ilości rekordów przecież.

(możesz przecież przepuścić dane przez jakąś pętle czy podobny konstrukt, zależy w jaki sposób to renderujesz do HTMLa, czasem są jakieś systemy szablonów i one mają odpowiednie konstrukcje do iteracji)


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 2x, ostatnio: LukeJL, 2017-12-14 19:47

Pozostało 580 znaków

2017-12-14 19:49
Mistrzowski Polityk
0

Ok, bo właśnie przy renderowaniu strony i tak pobieram całą listę produktów. Potem natomiast chcę dodać filtr po nazwie i miejscowości i zastanawiałem się czy te filtrowanie robić za pomocą backendu czy frontendu.

Pozostało 580 znaków

2017-12-14 19:52
2

zapoznaj się z pojęciami cienki i gruby klient (thin/fat client). Większość aplikacji webowych jest cienkim klientem. Zauważ, że żeby zminimalizować ruch i obciążenie bazy dane masz stronnicowane (choćby na forum masz tylko x postów w wątku pokazywane, a jak jest więcej to trzeba sobie kliknąć dalej). Generalnie ciągnięcie wszystkich danych do klienta ma (w większości przypadków) same wady bo

  • przepychasz więcej danych ze źródła
  • potem te dane gdzieś trzeba trzymać po stronie frontu (znaczy zajmują pamięć)
  • trzeba te dane przefiltrować do czego zazwyczaj język, w którym front jest pisany, nie jest projektowany
    Generalnie trend jest taki, że przed pokazaniem danych userowi należy od niego pobrać warunki brzegowe. Dodatkowo domyślnie te warunki ustawia się takie, żeby z jednej strony danych wynikowych było jak najmniej a z drugiej strony, żeby pokrywały one jak największy procent życzeń usera. Jeśli user potrzebuje większy zakres to musi już wykonać dodatkową pracę aby zmienić warunki brzegowe. Jak to wygląda w praktyce? - np. możesz domyślnie pokazywać tylko faktury z dzisiaj, albo tylko np. 20 ostatnich postów, tylko 10 wyników wyszukiwania w google albo tylko 20 produktów na stronie sklepu.

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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