Nos últimos meses, reconheci uma grande empolgação com os scripts do lado do cliente no desenvolvimento da Web. Porém, embora as tecnologias do lado do servidor sejam maduras, estáveis e bem aceitas pelos desenvolvedores de back-end, as tecnologias do lado do cliente são imaturas (isto é, comparadas à grande estrutura do lado do servidor) e não são apreciadas por muitos desenvolvedores de longa data. No entanto, todos estão desenvolvendo o lado do cliente atualmente. Pessoalmente, espero que essas grandes estruturas do lado do servidor desapareçam em 2 a 5 anos, observando a tendência atual.
Por que? Como o desenvolvimento novo e "difuso" do lado do cliente em HTML5 / JS pode ser superior às soluções grandes e bem pensadas do lado do servidor?
fonte
Respostas:
Isso é verdade:
Mas não está confinado ao lado do cliente, é um movimento de pilha cheia.
Eu sei que isso pode ser surpreendente. Por favor, me ouça.
Primeiro de tudo, ambos são bem pensados.
Em segundo lugar, porque é melhor.
Boa pergunta.
Mas "melhor" é subjetivo, então a resposta para sua pergunta é: o que especificamente é melhor?
Re-visite a pergunta:
É flexibilidade.
Não parece grande coisa. Faz isso? Flexibilidade.
Manutenção. Extensibilidade. Escalabilidade. Modularidade. Usabilidade. UX.
E é mais rápido de implementar. Essa é a realidade. Mais rápido e melhor.
Os telefones inteligentes foram a adoção mais rápida da mídia de massa desde a TV nos anos 50. Agora, não apenas temos smartphones - temos tablets.
Já em desenvolvimento na Mozilla e no Windows, o sistema operacional será executado em dispositivos futuros em seus mercados -> HTML / JS.
Muitas soluções e inovações permanecem.
Uma pilha completa de JS está surgindo, com base na flexibilidade.
Espero que ajude.
fonte
Essa história sempre teve dois lados; o código do lado do servidor e do cliente tem seus prós e contras.
As vantagens do script do lado do cliente incluem:
Mas o script do servidor também tem muitas vantagens:
Para aplicativos da Web altamente dinâmicos, a abordagem centrada no cliente sempre foi uma escolha popular, porque é a única maneira de fornecer uma experiência de usuário decente, semelhante a uma área de trabalho: sem scripts no lado do cliente, cada uma das ações do usuário exige um processo redondo. viagem, o que significa um atraso de pelo menos meio segundo, geralmente mais. Mas para um site informativo que é basicamente apenas um monte de páginas estáticas veiculadas em um banco de dados (por exemplo, wikipedia), a vantagem é marginal, enquanto os benefícios dos scripts no servidor ainda são impressionantes.
O hype observado vem de uma combinação de dois desenvolvimentos recentes:
De fato, nada mudou em termos das abordagens centradas no servidor e centradas no cliente; o que mudou é que o foco no cliente agora é mais fácil e barato de executar e tem um desempenho melhor do que alguns anos atrás, tornando-o uma opção viável para muito mais aplicativos do que costumava ser.
fonte
O lado do servidor estará sempre por perto. Você não pode se sentar do lado do cliente por tudo. Por exemplo, você não deseja usar um design MVC do Backbone.js para o seu microcontrolador, enviando parâmetros em tempo real a partir de um guindaste aéreo de produção.
Não acredite no hype.
fonte
Em 2009, mudei de uma estrutura PHP do lado do servidor para uma solução ExtJS do lado do cliente vinculada a serviços Web do lado do servidor.
Os motivos da migração para mim foram:
Ao passar para os serviços da Web, você valida a entrada no limite do serviço da Web e tem um controle mais exato sobre a E / S do servidor. Não há camada de interface do usuário no servidor para alterar sua arquitetura de segurança.
A arquitetura é alterada para que as buscas de dados ocorram com menos frequência e os dados possam ser armazenados em cache localmente com a renderização da interface do usuário, sem a necessidade de uma ida e volta. As viagens de ida e volta matam o desempenho de aplicativos da web.
A camada da interface do usuário pode ser hospedada completamente em uma CDN. Até construí aplicativos da Web offline, colocando o código da interface do usuário no cache do aplicativo HTML5.
Isso significa menos desenvolvimento, controle de qualidade, documentação, ...
Mas, não se engane, o que está acontecendo agora é um hype. Ele explodirá e muitos aplicativos da Web usarão uma arquitetura de interface do usuário do servidor novamente.
fonte
Outro fator que está motivando o entusiasmo por soluções do lado do cliente é o crescimento de aplicativos móveis. Se você criar um site com base em JavaScript e AJAX do lado do cliente, e também criar aplicativos iOS e Android nativos, há uma boa chance de que todos os três possam usar os mesmos serviços REST para executar todos os seus dados. .
fonte
Primeiro de tudo, o usuário não vê (e às vezes nem se importa) com o que não é o servidor. Não importa o quão bem o código do servidor seja escrito, os usuários não apreciarão o aplicativo se a parte do cliente não for bem-sucedida. Às vezes, até a interface do usuário agradável é mais importante que a funcionalidade.
Um servidor de hospedagem grande e poderoso é bastante caro. É muito mais barato implementar parte da lógica (exceto a validação) no lado do cliente. Portanto, você pode usar um servidor menor (portanto, mais barato) de hospedagem, uma vez que não seria carregado tanto.
É por isso que, apesar da instabilidade, as tecnologias do lado do cliente estão ganhando mais popularidade. Além disso, JS e HTML / CSS são suportados por (quase) todos os navegadores modernos.
Essas duas partes de aplicativos não podem existir separadamente. E a Internet não parece estar saindo de lugar algum no futuro próximo.
Eu também não acho que isso
big server-side frameworks
desapareça. Sempre haverá empresas que podem pagar por elas e usarão suas vantagens significativas.fonte
O desenvolvimento da Web do lado do cliente está fortemente associado aos navegadores da Web e alterações neles ao longo do tempo. A solução que você fornece agora pode não funcionar em alguns meses devido a alterações significativas nos mecanismos de renderização de página dos navegadores da web. Alguns navegadores são / eram incompatíveis com os padrões e, portanto, exigiam ainda mais esforço extra dos desenvolvedores apenas para alcançar o resultado esperado.
Existem algumas soluções tentando corrigir esse problema. Por exemplo, se você usa o jquery, pode ter certeza de que seu script funcionará nos navegadores suportados por essa biblioteca jquery específica. Mas depende apenas de seus autores fornecer compatibilidade com alguns / a maioria / todos os navegadores. A questão é qual equipe o apoiará melhor. Será time de motools, time de jquery, outro time? Se eles não fornecerem suporte para um navegador da web específico, seu projeto poderá não funcionar nesse navegador.
A emoção que você parece já existe há muito tempo. Eu o vi quando o Shockwave e seu sucessor Flash foram introduzidos, houve um "grande retorno" de interfaces de usuário avançadas depois que as bibliotecas js complexas foram enviadas, primeiro com motools e depois com jquery (comecei a usá-las nessa ordem). Havia Flex e JavaFX. Mas nenhum deles pode ter uma grande participação no mercado. Alguns exigem plug-ins que, com o tempo, costumam expor o usuário final a vulnerabilidades de segurança, outros podem não funcionar no lado do cliente devido a algumas configurações personalizadas (por exemplo, JavaScript desativado no navegador do cliente).
Por outro lado, a solução do servidor geralmente é escrita apenas uma vez. Você não precisa se preocupar que tudo irá falhar e terá que ser reescrito assim que o novo Firefox / Chrome / IE / Opera for lançado. Você também não precisa se preocupar com o fato de o cliente tentar adulterar seu aplicativo e / ou corromper os dados.
fonte
Concordo absolutamente com seus sentimentos. Eu também acredito que, além do que você está dizendo, veremos uma queda dramática no REST e um aumento maciço nos websockets pela principal maneira como vemos os sites se comunicarem com seus servidores. Vert.x, Node.js etc .. todo o lado do servidor, bem como o lado do cliente, está passando para a programação orientada a eventos. Java EE, PHP, Rails, etc. todos eles precisam se adaptar ou perderão muito rapidamente.
fonte