Czy termin „Front-End” jest synonimem „po stronie klienta”? Jeśli tak, czy zawsze tak jest?

18

Jako stosunkowo nowy (samouk) programista stron internetowych dość często słyszałem terminy front-end , po stronie klienta , back-end i po stronie serwera . Dla mnie front-end i back-end zawsze były synonimami odpowiednio po stronie klienta i po stronie serwera.

Ponieważ jednak zacząłem pracować z frameworkami MVC, takimi jak CodeIgniter, natknąłem się na kilka przypadków frontonu odnoszącego się do wszystkiego, co widzi użytkownik końcowy (w tym kodu po stronie serwera), podczas gdy zaplecze odnosiło się do czegokolwiek użytkownik końcowy nie widzi (w tym CMS). Po stronie klienta i po stronie serwera są dla mnie znacznie bardziej konkretne; mają bardzo wyraźną linię oddzielającą je. Z drugiej strony front-end i back-end nie.

W rozmowie, którą pamiętam z innym twórcą stron internetowych, on odniósł się do CodeIgniter (w całości) jako do interfejsu, co rzuciło mnie na pętlę. Nie byłem pewien, czy go poprawić i powiedzieć, że CodeIgniter był moim back-endem, czy też moje definicje tych dwóch terminów były całkowicie błędne.

Poszukiwanie definicji front-endu i back-endu nieco bardziej pomieszało mnie pod pewnymi względami, choć wyjaśniły kilka rzeczy. Chciałbym tylko wiedzieć, gdzie są rysowane linie między tymi czterema terminami i jak układają się one w kontekście tworzenia stron internetowych (szczególnie na stosie LAMP).

DC_
źródło
1
Pracowałem z jednym facetem, który używał „front end” i „back end” w znaczeniu „front front” i „tyłem do kierunku jazdy”. To, czy był „poprawny”, to kolejne pytanie.
user16764
Zamiast tego powinniśmy użyć słowa „posterior”. Żartuję. Chciałbym, żeby była na to inna fraza. Synonimy „Back end” nie są zachęcające.
Erik Aronesty,

Odpowiedzi:

17

Nie wierzę, że istnieje formalna definicja tych terminów, a jak zauważyłeś, w niektórych przypadkach nakładają się.

front-endi client-sidenakładają się.
server-sidea back-endtakże nakładają się.

Gdybym miał podzielić włosy, zaproponowałbym te szorstkie granice:

  • client-sideto aplikacja działająca na komputerze użytkownika. Może to być samodzielna aplikacja (częściej) lub może odnosić się do interfejsu opartego na przeglądarce internetowej (mniej prawdopodobne).
  • front-endskierowany jest również do użytkownika końcowego i zazwyczaj działa w interfejsie przeglądarki internetowej. Nie słyszałem o grubych klientach określanych jako front-end.
  • back-endodnosi się do procesów i usług działających na innym serwerze lub w tle komputera użytkownika. Najczęściej odnosi się do procesów, których nie ma na komputerze użytkownika końcowego. Ale kluczem, jak wspomniałeś, jest to, że użytkownik końcowy niekoniecznie jest świadomy uruchomionych procesów.
  • server-sidejest rozszerzeniem, back-endale wyraźnie wzmacnia fakt, że procesy działają gdzie indziej, a nie na komputerach użytkowników końcowych.

Tytułem przykładu, aby podkreślić zamieszanie między warunkami, wykorzystam Minecraft jako przykład.

Minecraft ma

  • client-side aplikacja, gdy pliki jar są uruchamiane lokalnie przy użyciu własnej maszyny JVM.
  • front-end jeśli zdecydujesz się uruchomić aplikację kliencką w przeglądarce internetowej
  • back-end proces, który może być uruchomiony lokalnie na twoim komputerze, jeśli jesteś w trybie autonomicznym
  • server-side proces, jeśli zdecydujesz się zalogować na serwerze obsługującym aplikację serwerową Minecraft.

Jeśli kopać w niektórych statystyk w Minecraft, zobaczysz, że one po prostu wyznaczyć clienti serverkomponent do gry; niekoniecznie dbają o to, gdzie te komponenty są uruchamiane.


Aby bezpośrednio odpowiedzieć na pytania:

Czy termin „Front-End” jest synonimem „po stronie klienta”?

W pewnym sensie, ale nie bardzo. Pomiędzy tymi warunkami występuje niuans, jeśli dyskutujesz o sprawach poza internetowym światem. Jeśli jesteś ściśle w świecie internetowym, to tak, są funkcjonalnie synonimami.

Jeśli tak, czy zawsze tak jest?

W świecie internetowym powiedziałbym tak. W innych królestwach powiedziałbym „nie”, jak wyjaśniono w przybliżonych definicjach, które zaoferowałem.


źródło
Właśnie o tym myślałem. Dzięki, że pomogłeś mi to wyjaśnić.
DC_
2
Backend jest często używany do oznaczenia części strony internetowej / aplikacji po stronie klienta.
Florian Margaine
19

Po stronie serwera działa na serwerze. Po stronie klienta działa na kliencie. Back-end przeskakuje dane. Front-end go wyświetla.

Spójrz na tę stronę internetową. Wyciąganie wszystkich komentarzy z bazy danych to praca po stronie serwera. Układanie tych danych w szablonie jest front-endem, po stronie serwera. Widżety do głosowania AJAX i fantazyjne pole do wprowadzania tekstu są dostępne po stronie klienta.

Sean McSomething
źródło
4
+1 za wskazanie ortogonalności między koncepcją front-end / back-end a koncepcją po stronie klienta / po stronie serwera
Francesco Feltrinelli
1

Generalnie uważam, że używanie po stronie klienta i po stronie serwera do opisywania rozwoju / programistów jest mniej niejasne. Ta część strony klienta, w której żonglujemy / formatujemy dane, może być postrzegana jako komponent zaplecza. Z drugiej strony jest wszystko szablonowanie, które zwykle dzieje się na zapleczu, a bycie „dla frontonu” powoduje, że ludzie mówią o nich jako o rozwoju Java lub C #. To rzadkie, ale widziałem to w opisach stanowisk.

Ale tak, ogólnie mówiąc, front to część, w której zachodzi interakcja. Zaplecze to część, w której cała ta interakcja zamienia się w coś użytecznego.

Erik Reppen
źródło
0

To pytanie jest nieco starsze, ale dodam moje 2c:

W moim własnym tworzeniu stron internetowych użyłem terminu „nakładka”, co oznacza kod - lub inne zasoby - które są przetwarzane w przeglądarce przez pewien czas. Teraz używam terminu „klient”, ponieważ może to być mylące esp. podczas tworzenia aplikacji internetowych. (Aplikacje jednostronicowe)

Po prostu dlatego, że po stronie zaplecza znajduje się również „frontend”, co ogólnie oznacza część aplikacji odpowiedzialną za dane wyjściowe (do przeglądarki). „Frontend” może więc oznaczać dwie różne rzeczy. Termin „klient” imho bardziej jednak opisuje coś, co jest powiązane z rzeczywistym klientem (w tym przypadku przeglądarką).

PS: Cóż, może powinienem teraz zmienić swój pseudonim na „client_dev”;)

frontend_dev
źródło
0

Strona klienta w aplikacji internetowej jest pod kontrolą użytkownika / klienta, strona serwera jest pod kontrolą programisty. Jest to jeden z powodów, dla których należy przeprowadzić sprawdzanie poprawności danych na serwerze.

Terminy front-end i back-end są często używane jako synonimy dla strony klienta i serwera, aw wielu przypadkach jest to w porządku. Istnieją jednak również ważne kontrprzykłady. Dla mnie frontend to wszystko, co pokazuje coś użytkownikowi.

Na poniższym obrazku można zobaczyć typowe technologie / koncepcje i sposób, w jaki pasują one do kwadrantów (front-end, back-end) / (po stronie klienta, po stronie serwera).

wprowadź opis zdjęcia tutaj

Programiści Front End i Back End

Frontend i Backend developer to dwie bardzo popularne role. Linia staje się nieco rozmyta, gdy masz rzeczy takie jak React, które mogą być renderowane po stronie serwera i Flask, który zawiera silnik szablonów jinja .

I chociaż umieściłem technologie takie jak baza danych Web SQL i API indeksowanej bazy danych w kwadrancie „zaplecza po stronie klienta”, rolą, która zazwyczaj o tym wie, jest rola programisty frontonu.

  • Programiści Frontend powinni wiedzieć o HTML, CSS, DOM i ogólnych możliwościach przeglądarki (np. Caniuse ). Zazwyczaj znają jQuery lub React. Chociaż zgodnie z moją definicją jest to backend, spodziewałbym się, że programiści frontendu będą wiedzieć o pamięci po stronie klienta
  • Programiści zaplecza powinni wiedzieć o serwerach sieciowych takich jak nginx, gunicorn, Apache lub node.js. Powinni znać przynajmniej jedną bazę danych SQL (Postgres, MariaDB / MySQL, ...), sklepy z kluczowymi wartościami (Redis), rozwój API (REST i GraphQL). LAMP był jakiś czas temu typowym stosem. NIE spodziewałbym się, że programista zaplecza będzie wiedział coś o przeglądarkach!

Projektant interfejsu użytkownika kontra programista Front End

Dwie inne role to projektant interfejsu użytkownika i programista interfejsu użytkownika. Jedną różnicą jest to, że jeden jest projektantem, a drugi programistą.

Cel:

  • Projektanci interfejsu użytkownika przygotowują doświadczenia użytkownika
  • Front End Developer upewnia się, że wygląda zgodnie z oczekiwaniami (budowanie prawdziwych rzeczy z projektu)

Przybory:

  • Projektanci interfejsów używają głównie Adobe Photoshop / Illustrator / Sketch / Balsamiq / Invision.
  • Programiści Front End używają React, Vue, Angular

Interfejsy API: REST i GraphQL

Interfejsy API są dostarczane przez zespoły zaplecza i są używane przez interfejsy użytkownika do wypełniania aplikacji danymi. Backend to trwałe miejsce do przechowywania na różnych urządzeniach, frontend to warstwa prezentacji. API jest kanałem komunikacji dla obu.

Martin Thoma
źródło