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).
Odpowiedzi:
Nie wierzę, że istnieje formalna definicja tych terminów, a jak zauważyłeś, w niektórych przypadkach nakładają się.
front-end
iclient-side
nakładają się.server-side
aback-end
także nakładają się.Gdybym miał podzielić włosy, zaproponowałbym te szorstkie granice:
client-side
to 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-end
skierowany 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 jakofront-end
.back-end
odnosi 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-side
jest rozszerzeniem,back-end
ale 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 internetowejback-end
proces, który może być uruchomiony lokalnie na twoim komputerze, jeśli jesteś w trybie autonomicznymserver-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ć
client
iserver
komponent do gry; niekoniecznie dbają o to, gdzie te komponenty są uruchamiane.Aby bezpośrednio odpowiedzieć na pytania:
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.
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
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.
źródło
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.
źródło
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”;)
źródło
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).
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.
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:
Przybory:
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.
źródło