Front-end scritto nelle lingue utilizzate per il back-end! [chiuso]

8

Dalla mia esperienza nello sviluppo web, so che linguaggi come PHP, Java, Python..etc sono usati per lo sviluppo di backend (software che gira su server), e per linguaggi front-end, JS / HTML / CSS sono usati .

Ma vedo molte aziende dire che usano, ad esempio, PHP per lo sviluppo front-end e python per il back-end.

Significa che PHP è front-end per chiamare altri servizi scritti in altre lingue tramite REST, RPC ..etc?

    
posta shox 27.09.2013 - 15:30
fonte

2 risposte

35

Hai confuso i termini "front-end" e "back-end" con "server-side" e "client-side". "Back-end" di solito si riferisce a sistemi che non sono direttamente esposti all'utente (server di database, middleware e così via), mentre "front-end" di solito si riferisce all'applicazione (nel caso del Web, questo normalmente significa statico e pagine web dinamiche) direttamente accessibili dal client.

In un'applicazione web, il client (il browser dell'utente) accede a pagine Web che vengono archiviate o generate dinamicamente "lato server" da tecnologie "front-end". Questi componenti front-end possono, a loro volta, estrarre dati o altre informazioni da componenti "back-end". Quindi un'applicazione web scritta in PHP sarebbe "front-end" ma "server-side". Tuttavia, se le pagine web contenevano javascript da eseguire dal browser dell'utente, tale codice javascript sarebbe eseguito "lato client".

Spero di aver rimosso qualche confusione, ma ora rischio di crearne altri.

Per prima cosa, abbiamo AJAX , che è codice (solitamente JavaScript) eseguito nel client (quindi lato client), per creare le pagine Web che vedi estraendo le informazioni dai servizi di Internet che non generano esse stesse pagine web. I servizi stanno generando le loro informazioni lato server sul front-end (dato che sono pubbliche e puoi puntare il browser direttamente su di loro se conosci l'URL).

In secondo luogo, JavaScript non è limitato all'utilizzo lato client, ovviamente. È diventato sempre più popolare come linguaggio "lato server" (vedi node.js per un esempio). Come tale, il suo uso più comune è proprio per il tipo di servizi di Internet che ho descritto nel paragrafo precedente.

Le cose erano molto più semplici prima di Web 2.0 . A quei tempi, nel contesto di applicazioni web , il front-end era il luogo in cui venivano generate le pagine web, mentre JavaScript eseguiva solo lato client e rendeva minori i cosmetici delle pagine web come immagini hi-lighting quando spostavi il mouse sopra di loro. Tuttavia, questa semplicità ha reso le persone pigre riguardo alle loro definizioni. Ora la situazione è più complessa, quindi è importante essere precisi su questi termini.

(Oh, e se hai per usare PHP, tienilo sul front-end. non è una buona tecnologia di back-end. mai trovare qualcuno che crea un browser che esegue PHP lato client, sparagli.)

    
risposta data 27.09.2013 - 15:46
fonte
7

Penso che la tua domanda potrebbe essere molto specifica per PHP, in quanto non riesco a vedere nessuna delle altre tecnologie di back-end che menzioni di essere usata in questo modo.

PHP è un esempio divertente in quanto può essere (in un modo piuttosto brutto che posso aggiungere) visto come un linguaggio all-in-one per quanto riguarda molti progetti web. Puoi eseguire le tradizionali attività " back-end ", ad esempio le operazioni su file e database, creando al contempo markup " front-end ".

Questo può chiaramente portare a un pasticcio di spaghetti in cui non esiste una vera separazione di preoccupazione, quindi nella mia mente dovrebbe essere davvero disapprovato. Per un ottimo esempio, se sfogli la fonte wordpress puoi spesso perderti - e questo è un progetto in cui incolpo la lingua, l'organizzazione della base di codice è in realtà molto buona.

Questo può essere risolto, in qualche modo, usando un " motore di template " (come Smarty ) ) - ma è ancora PHP che sta costruendo il "front-end" pur fornendo anche la funzionalità "back-end". Questa è stata una decisione intenzionale dietro il design di PHP, tuttavia è dopotutto un " processore ipertestuale "!

Quindi PHP può facilmente adattarsi agli usi " front-end " e " back-end ", che dovrebbero chiarire il tuo esempio. Quindi è molto probabile che PHP stia elaborando e costruendo tutto il mark-up per un front-end, ma effettuerà richieste da qualche altra parte per raccogliere i dati richiesti - molto probabilmente un servizio scritto in uno di questi le lingue di cui sopra.

Personalmente, ritengo che l'intera terminologia "back-end" e "front-end" sia un po 'obsoleta forse. Preferirei che le cose venissero semplicemente indirizzate lato client e lato server; quindi non c'è vera ambiguità. *

Di recente ho visto una specifica del client che richiedeva un sistema di back-end scritto in node.js e strumenti associati, ma volevo che la build front-end utilizzasse un framework PHP (Laravel). Questo si presenta con molti costi associati, e nella mia mente - non è una soluzione elegante e può causare alcuni problemi su tutta la linea.

Personalmente, questo tipo di configurazioni sembra che qualcuno abbia inutilmente caricato PHP in un altro stack - il che significa che sono necessarie più risorse di quelle effettivamente necessarie, il personale di manutenzione ha bisogno di esposizione a una più ampia gamma di tecnologie e ci sono più punti di errore .

Inoltre, penso anche che ci siano pochissimi scenari che giustificano questo tipo di stack intermedio; la maggior parte dei linguaggi / framework di back-end sono perfettamente in grado di generare il mark-up richiesto per il front-end. Anche se sto per essere corretto lì.

* Però, per trasformare la tua domanda in testa ... E i sistemi di back-end costruiti usando Javascript? (node.js;))

Modifica

Dopo aver letto un commento di @itsbruce, ho deciso di chiarire cosa intendo con l'ambiguità della mia terminologia "front-end" / "back-end".

Tradizionalmente questa terminologia sarebbe andata bene, architettonicamente le applicazioni web erano molto più semplici - e oserei dire, molto più scemo. Nella mia mente è molto più chiaro dire "Lato server" e "Lato client", e questo diventa sempre più chiaro mentre la tendenza attuale a spingere di più l'elaborazione e la logica nel client sta diventando comune.

È accettabile fare una discreta quantità di elaborazione dei dati lato client (basta guardare alcuni dei framework javascript attualmente in voga), ma è davvero un front-end? L'utente non lo vede, ne vede i risultati e con criteri tradizionali che generalmente vengono considerati come "back-end"; ma questo si sta verificando nel browser ora ..

Allo stesso modo, e incredibilmente rilevante per questa domanda, il markup in PHP è davvero un compito di front-end? Ne dubito, una rapida panoramica delle schede di lavoro mostra che poche posizioni di sviluppatori front-end si aspettano esperienza o conoscenza del PHP; tuttavia l'intuizione suggerirebbe che il mark-up per l'interfaccia sia intrinsecamente front-end.

Il fatto stesso che questa domanda esista è un esempio di come " front-end " e " back-end " sono intrinsecamente ambigui e continueranno a essere così.

Facendo riferimento alle attività come "lato server" o "lato client" che l'ambiguità viene persa, si sa dove si sta eseguendo il codice e quali lingue verranno utilizzate. Se hai detto " front-end " nell'esempio che l'OP ha fornito, dubito che molte persone farebbero " Oh, quindi PHP sul server giusto? ".

    
risposta data 27.09.2013 - 15:49
fonte

Leggi altre domande sui tag