Atualmente, existem várias abordagens para criar aplicativos da Web:
1. Apenas do lado do servidor
Essa é uma abordagem clássica na qual você processa páginas no servidor por uma estrutura da web como Ruby on Rails, Django, Express, Play! Estrutura e etc.
Fluxo de trabalho típico : crie toda a lógica de negócios, modelos e visualize modelos no servidor na estrutura de sua escolha.
2. API do lado do cliente + REST
Há relativamente pouco tempo, a comunidade da web como um todo começou a criar aplicativos do lado do cliente em Angular, Backbone, Ember e algumas dezenas de outras estruturas JavaScript MV *. E agora também temos o React.js para participar da festa.
ATUALIZAÇÃO : Não há mal-entendidos. O que eu quis dizer com apenas do lado do cliente é a completa separação de preocupações. Você possui um servidor API REST e um aplicativo do lado do cliente que se comunica com esse servidor. Dependendo do seu caso de uso, as chances são de que você nunca tenha um aplicativo verdadeiro apenas do lado do cliente que não se conecte a um back-end para autenticação ou persistência de dados.
Fluxo de trabalho típico : gaste horas decidindo Angular x Backbone x Ember x X. Em seguida, você constrói suas rotas, modelos, visualizações, controladores no cliente. Depois de terminar, agora crie modelos, controladores, rotas no servidor. De certa forma, você está fazendo o dobro da quantidade de trabalho.
3. Híbrido
Não sei muito sobre o uso dessa abordagem, mas, se eu adivinhar, você renderiza suas visualizações (exibição da estrutura MVC) no servidor. Como resultado, você obtém suporte de SEO e carregamentos de página mais rápidos.
Na frente híbrida, há o rendr do airbnb que supostamente combina backbone e expresso.
Eric Florenzo postou em seu blog hoje: React: Finalmente, uma excelente pilha de servidores / clientes .
A quantidade de maneiras de criar aplicativos da Web é impressionante. E para alguém que está aprendendo desenvolvimento web, isso pode se tornar um problema. Como alguém decide sobre qual abordagem usar para criar seu próximo aplicativo?
fonte
Respostas:
Eu acho que você entendeu totalmente o "Client Side Only".
Em primeiro lugar, deve ser rotulado "Client Centric". Todo esse ponto de estruturas como Angular é que as partes "VC" do MVC são implementadas inteiramente no navegador em Javascript. A lógica de nível superior "M" da parte "M" - o Modelo - é implementada no navegador e a lógica "CRUD" de nível inferior é implementada no servidor.
A lógica de negócios é desenvolvida uma vez. A lógica da vista é desenvolvida uma vez. A lógica de controle é desenvolvida uma vez - tudo na estrutura Javascript de sua escolha. A lógica de acesso a dados também é desenvolvida apenas uma vez, mas desta vez em qualquer estrutura RESTy ou SOAPy que você escolher no lado do servidor.
Em casos extremos, você pode implementar o Modelo inteiramente no cliente, se for aceitável acessar os dados de apenas um navegador em uma máquina e ter os dados na lixeira toda vez que a opção "Limpar cookies" for selecionada.
fonte
A resposta para a pergunta é que depende dos requisitos. Uma análise, pelo menos superficial, da história do desenvolvimento da "web" indica uma cultura de cowboy em que conversar com as partes interessadas, clientes, levantamento de requisitos é muitas vezes esquecido.
Eu tive a sorte de participar de uma palestra há alguns anos atrás, quando ouvi algo que realmente me chamou atenção: "você escolhe o design para atender aos requisitos, não os requisitos para atender ao design". Portanto, quando se deparar com uma pergunta como essa, você precisa descobrir o que é realmente necessário pelas pessoas que estão pedindo que você construa este software.
Seu trabalho é explicar os prós e os contras de cada abordagem.
fonte
Eu acho que um dos pontos principais das abordagens e estruturas mais recentes é que há menos acoplamento entre as tecnologias de front-end e as tecnologias de back-end.
A idéia é que você possa usar qualquer estrutura do cliente e extrair dados e / ou visualizações de qualquer número de fontes, independentemente da estrutura do lado do servidor.
Isso nos permite escolher as melhores ferramentas para realizar o trabalho e nossas escolhas podem evoluir independentemente.
É certo que eu não usei Angular ou Backbone, por isso não posso fazer nenhuma recomendação experiente. Minha pilha base atual consiste no menor servidor mvc ou serviços de descanso que posso encontrar. Principalmente fornecendo modelos e dados. Os dados são renderizados e / ou os dados subsequentes recuperados no lado do cliente usando principalmente apenas javascript, jquery e css.
Eu começo aqui e construo sobre onde eu preciso. Os benefícios dessa abordagem são evidentes quando você pensa em oferecer suporte a várias plataformas de clientes - navegador, celular etc. Se você precisar da renderização específica do cliente, não precisará fazer grandes mudanças no lado do servidor.
fonte