Il termine "front-end" è sinonimo di "lato client"? Se è così, è sempre così?


18

Come sviluppatore web relativamente nuovo (autodidatta), ho sentito spesso i termini front-end , lato client , back-end e lato server . Per me front-end e back-end erano sempre sinonimo rispettivamente di lato client e lato server.

Tuttavia, dato che ho iniziato a lavorare con framework MVC come CodeIgniter, ho riscontrato alcuni esempi di front-end che si riferiscono sostanzialmente a tutto ciò che l'utente finale vede (incluso il codice lato server), mentre il back-end ha fatto riferimento a qualsiasi cosa l'utente finale non vede (compresi i CMS). Lato client e lato server, per me, sono molto più concreti nei loro significati; hanno una linea ben distinta che li separa. Front-end e back-end, d'altra parte, non lo fanno.

In una conversazione che ricordo di aver avuto con un altro sviluppatore web, ha fatto riferimento a CodeIgniter (nella sua interezza) come un front-end, e questo mi ha gettato per un ciclo. Non ero sicuro di correggerlo e dire che CodeIgniter era il mio back-end, o se le mie definizioni dei due termini erano completamente sbagliate.

La ricerca di definizioni di front-end e back-end mi ha confuso un po 'di più sotto alcuni aspetti, anche se hanno chiarito alcune cose. Vorrei solo sapere dove sono tracciate le linee tra questi quattro termini e come si uniscono nel contesto dello sviluppo web (in particolare su uno stack LAMP).


1
Ho lavorato con un ragazzo che ha usato "front-end" e "back-end" per indicare "fronte" e "fronte". Se fosse o meno "corretto" è un'altra domanda.
user16764,

Dovremmo usare invece la parola "posteriore". Prendere in giro. Vorrei che ci fosse un'altra frase per questo. I sinonimi di "Back-end" non sono incoraggianti.
Erik Aronesty,

Risposte:


17

Non credo che ci sia una definizione formale per quei termini e, come hai notato, in alcuni casi c'è sovrapposizione.

front-ende si client-sidesovrappongono.
server-sidee back-endanche si sovrappongono.

Se dovessi dividere i peli, offrirei questi confini grezzi:

  • client-sideè un'applicazione che viene eseguita sul computer degli utenti. Potrebbe essere un'applicazione autonoma (più spesso) o potrebbe riferirsi a un'interfaccia basata su browser Web (meno probabile).
  • front-endaffronta anche l'utente finale e generalmente viene eseguito in un'interfaccia basata su browser Web. Non ho mai sentito parlare di clienti spessi chiamati a front-end.
  • back-endsi riferisce a processi e servizi in esecuzione su un altro server o in background sul computer degli utenti. Più spesso, si riferisce a processi che non si trovano sul computer degli utenti finali. Ma la chiave, come hai detto, è che l'utente finale non è necessariamente a conoscenza dei processi in esecuzione.
  • server-sideè un'estensione back-endma rafforza esplicitamente il fatto che i processi sono in esecuzione altrove e non sui computer degli utenti finali.

A titolo di esempio, e per evidenziare la confusione tra i termini, userò Minecraft come esempio.

Minecraft ha un

  • client-side applicazione quando si eseguono i file jar localmente con la propria JVM.
  • front-end se si sceglie di eseguire l'applicazione client nel browser Web
  • back-end processo che può essere eseguito localmente sul computer se si è in modalità autonoma
  • server-side processo se si sceglie di accedere a un server che ospita l'applicazione server Minecraft.

Se approfondisci alcune delle statistiche di Minecraft, vedrai che designano semplicemente un cliente servercomponente del gioco; a loro non importa necessariamente dove vengono eseguiti quei componenti.


Per rispondere direttamente alle tue domande:

Il termine "front-end" è sinonimo di "lato client"?

In un certo senso, ma non proprio. C'è una sfumatura tra i termini se stai discutendo di cose al di fuori del mondo basato sul web. Se sei strettamente all'interno del mondo basato sul web, allora sì, sono anche funzionalmente.

Se è così, è sempre così?

Nel mondo web, direi di sì. In altri regni, direi di no come spiegato nelle definizioni approssimative che ho offerto.


Questo è quello che pensavo. Grazie per avermi aiutato a chiarire questo nella mia testa.
DC_

2
Backend viene spesso utilizzato per indicare la parte di amministrazione lato client di un sito Web / applicazione.
Florian Margaine,

19

Sul lato server viene eseguito sul server. Il lato client viene eseguito sul client. Il back-end sta analizzando i dati. Il front-end lo sta visualizzando.

Guarda questa pagina web. Estrarre tutti i commenti dal database è un lavoro di back-end lato server. Disporre i dati in un modello è un lavoro front-end, lato server. I widget di voto AJAX e la casella di input di testo di fantasia sono front-end, lato client.


4
+1 per evidenziare l'ortogonalità tra concetto front-end / back-end e concetto lato client / lato server
Francesco Feltrinelli,

1

In genere trovo che l'uso del lato client e lato server per descrivere lo sviluppo / gli sviluppatori sia meno vago. Quella parte del lato client in cui stiamo manipolando / formattando i dati può essere vista come un componente back-end. D'altra parte c'è tutto il modello che tende ad accadere sul back-end che essendo "per il front-end" tende a far parlare le persone di loro come sviluppo di front-end Java o C #. È raro, ma l'ho visto nelle descrizioni dei lavori.

Ma sì, in generale il front-end è la parte in cui avviene l'interazione. Il back-end è la parte in cui tutta questa interazione si trasforma in qualcosa di utile.


0

Questa domanda è un po 'più vecchia, ma vorrei aggiungere il mio 2c:

Nel mio sviluppo web, ho usato il termine "frontend" che significa codice - o altre risorse - che vengono elaborati nel browser per un po '. Ora, uso il termine "client", perché potrebbe confondere esp. quando si eseguono applicazioni Web. (App a pagina singola)

Semplicemente perché sul lato backend c'è anche un "frontend", che significa in generale la parte dell'applicazione che è responsabile dell'output (al browser). Quindi "frontend" può effettivamente significare due cose diverse. Il termine "client" tuttavia descrive più chiaramente qualcosa che è correlato al client effettivo (in questo caso, il browser).

PS: Beh, forse dovrei anche cambiare il mio nickname in "client_dev" ora;)


0

Il lato client in un'applicazione Web è sotto il controllo dell'utente / cliente, il lato server è sotto il controllo dello sviluppatore. Questo è uno dei motivi per cui si dovrebbe fare la validazione dei dati sul server.

I termini front-end e back-end sono spesso usati anche per lato client e lato server e in molti casi è ok. Tuttavia, ci sono anche importanti contro-esempi. Per me , il front-end è tutto ciò che mostra qualcosa all'utente.

Nell'immagine seguente, puoi vedere le tecnologie / i concetti tipici e come si adattano ai quadranti (front-end, back-end) / (lato client, lato server).

inserisci qui la descrizione dell'immagine

Sviluppatori front-end e back-end

Frontend e Backend developer sono due ruoli molto comuni. La linea diventa un po 'sfocata quando hai cose come React che può essere renderizzato sul lato server e Flask che include il motore di template jinja .

E anche se aggiungerei tecnologie come il database Web SQL e l' API del database indicizzato nel quadrante "back-end lato client", il ruolo che in genere conosce questo è il ruolo di sviluppatore front-end.

  • Gli sviluppatori di frontend dovrebbero conoscere HTML, CSS, il DOM e le funzionalità generali del browser (ad es. Caniuse ). In genere conoscono jQuery o React. Sebbene sia back-end secondo la mia definizione, mi aspetto che gli sviluppatori front - end siano a conoscenza dell'archiviazione sul lato client
  • Gli sviluppatori back-end dovrebbero conoscere i server Web come nginx, gunicorn, Apache o node.js. Dovrebbero conoscere almeno un database SQL (Postgres, MariaDB / MySQL, ...), archivi di valori-chiave (Redis), sviluppo API (REST e GraphQL). LAMPADA era uno stack tipico qualche tempo fa. NON mi aspetterei che uno sviluppatore di back-end sappia qualcosa sui browser!

UI Designer vs Front End Developer

Altri due ruoli sono il designer dell'interfaccia utente e lo sviluppatore del frontend. Quindi una differenza è che uno è un designer e uno è uno sviluppatore.

Obbiettivo:

  • I progettisti dell'interfaccia utente elaborano l'esperienza utente
  • Lo sviluppatore del front-end si assicura che appaia come previsto (costruendo la cosa reale dalla bozza)

Utensili:

  • I progettisti dell'interfaccia utente utilizzano principalmente Adobe Photoshop / Illustrator / Sketch / Balsamiq / Invision.
  • Gli sviluppatori di front-end utilizzano React, Vue, Angular

API: REST e GraphQL

Le API sono fornite dai team di back-end e sono utilizzate dai frontend per riempire l'app con i dati. Il backend è l'archiviazione persistente su tutti i dispositivi, il frontend è il livello di presentazione. L'API è il canale di comunicazione per entrambi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.