Como desenvolvedor web relativamente novo (autodidata), ouvi os termos front-end , lado do cliente , back-end e servidor com bastante frequência. Para mim, front-end e back-end sempre foram sinônimos de cliente e servidor, respectivamente.
No entanto, quando comecei a trabalhar com estruturas MVC como o CodeIgniter, deparei-me com algumas instâncias de front-end que se referem basicamente a qualquer coisa que o usuário final vê (incluindo código do servidor), enquanto o back-end se refere a qualquer coisa o usuário final não vê (incluindo CMSs). Para mim, o lado do cliente e o servidor são muito mais concretos. eles têm uma linha muito distinta que os separa. Por outro lado, front-end e back-end não.
Em uma conversa que me lembro de ter com outro desenvolvedor da web, ele se referiu ao CodeIgniter (na íntegra) como um front-end, e isso me deixou louco. Eu não tinha certeza se deveria corrigi-lo e dizer que o CodeIgniter era meu back-end ou se minhas definições dos dois termos estavam completamente erradas.
A busca por definições de front-end e back-end me confundiu um pouco mais em alguns aspectos, embora eles tenham esclarecido algumas coisas. Gostaria apenas de saber onde as linhas são traçadas entre esses quatro termos e como elas se agrupam no contexto do desenvolvimento da Web (especificamente em uma pilha LAMP).
Respostas:
Não acredito que exista uma definição formal para esses termos e, como você observou, em alguns casos há sobreposição.
front-end
e seclient-side
sobrepõem.server-side
eback-end
também se sobrepõem.Se eu fosse dividir os cabelos, ofereceria esses limites ásperos:
client-side
é um aplicativo que é executado no computador dos usuários. Pode ser um aplicativo independente (com mais frequência) ou pode se referir a uma interface baseada em navegador da web (menos provável).front-end
também enfrenta o usuário final e geralmente é executado em uma interface baseada em navegador da web. Não ouvi falar de clientes grossos sendo referidos comofront-end
.back-end
refere-se a processos e serviços que estão sendo executados em outro servidor ou em segundo plano no computador dos usuários. Na maioria das vezes, refere-se a processos que não estão no computador do usuário final. Mas a chave, como você mencionou, é que o usuário final não está necessariamente ciente dos processos em execução.server-side
é uma extensão,back-end
mas reforça explicitamente o fato de que os processos estão sendo executados em outro lugar e não nos computadores dos usuários finais.A título de exemplo, e para destacar a confusão entre os termos, usarei o Minecraft como exemplo.
Minecraft tem um
client-side
aplicativo quando você executa os arquivos jar localmente com sua própria JVM.front-end
se você optar por executar o aplicativo cliente no seu navegador da webback-end
processo que pode ser executado localmente em sua máquina se você estiver no modo independenteserver-side
processo se você optar por fazer login em um servidor que hospeda o aplicativo de servidor Minecraft.Se você pesquisar algumas das estatísticas do Minecraft, verá que elas simplesmente designam um componente
client
eserver
para o jogo; eles não se importam necessariamente onde esses componentes são executados.Para responder diretamente às suas perguntas:
Mais ou menos, mas não realmente. Há uma nuance entre os termos se você estiver discutindo coisas fora do mundo baseado na web. Se você está estritamente dentro do mundo da Web, sim, eles são funcionalmente sinônimos.
No mundo da web, eu diria que sim. Em outros domínios, eu diria que não, conforme explicado nas definições grosseiras que ofereci.
fonte
O lado do servidor é executado no servidor. O lado do cliente é executado no cliente. O back-end está processando dados. O front-end está exibindo.
Veja esta página da web. Puxar todos os comentários do banco de dados é um trabalho de back-end do lado do servidor. A disposição desses dados em um modelo é um trabalho front-end do lado do servidor. Os widgets de votação AJAX e a caixa de entrada de texto sofisticada são front-end, do lado do cliente.
fonte
Geralmente, acho que o uso do lado do cliente e do servidor para descrever o desenvolvimento / desenvolvedores é menos vago. A parte do lado do cliente em que estamos manipulando / formatando dados pode ser vista como um componente de back-end. Por outro lado, há todo o modelo que costuma acontecer no back-end, sendo que "para o front-end" tende a resultar em pessoas falando sobre eles como desenvolvimento de front-end em Java ou C #. É raro, mas já vi isso nas descrições de cargos.
Mas sim, de um modo geral, o front end é a parte em que a interação acontece. O back-end é a parte em que toda essa interação se transforma em algo útil.
fonte
Esta pergunta é um pouco mais antiga, mas deixe-me adicionar meu 2c:
No meu próprio desenvolvimento web, usei o termo "frontend", que significa código - ou outros recursos - que são processados no navegador por um tempo. Agora, eu uso o termo "cliente", porque pode ser confuso esp. ao fazer aplicativos da web. (Aplicativos de página única)
Simplesmente porque no lado de back-end, há também um "front-end", o que significa em geral a parte do aplicativo responsável pela saída (para o navegador). Então "frontend" pode realmente significar duas coisas diferentes. O termo "cliente", no entanto, está descrevendo mais claramente algo relacionado ao cliente real (neste caso, o navegador).
PS: Bem, talvez eu deva também mudar meu apelido para "client_dev" agora;)
fonte
O lado do cliente em um aplicativo Web está sob o controle do usuário / cliente, o lado do servidor está sob o controle do desenvolvedor. Essa é uma das razões pelas quais se deve fazer a validação de dados no servidor.
Os termos front-end e back-end são frequentemente usados como sinônimos para o lado do cliente e o servidor e, em muitos casos, está ok. No entanto, também existem contra-exemplos importantes. Para mim , o front end é algo que mostra algo para o usuário.
Na imagem a seguir, é possível ver tecnologias / conceitos típicos e como eles se encaixam nos quadrantes (front end, back end) / (lado do cliente, lado do servidor).
Desenvolvedores Front-End e Back-End
O desenvolvedor de front-end e back-end são duas funções muito comuns. A linha fica um pouco confusa quando você tem coisas como React, que pode ser renderizada no servidor e Flask, que inclui o mecanismo de modelagem jinja .
E, embora eu coloque tecnologias como banco de dados Web SQL e API de banco de dados indexado no quadrante "back-end do lado do cliente", a função que normalmente sabe disso é a função de desenvolvedor front-end.
UI Designer x Desenvolvedor Front-End
Duas outras funções são o designer da interface do usuário e o desenvolvedor front-end. Portanto, uma diferença é que um é designer e o outro é desenvolvedor.
Objetivo:
Ferramentas:
APIs: REST e GraphQL
As APIs são fornecidas pelas equipes de back-end e são usadas pelos front-ends para preencher o aplicativo com os dados. O back-end é o armazenamento persistente entre dispositivos, o front-end é a camada de apresentação. A API é o canal de comunicação para ambos.
fonte