Vantagens e desvantagens da criação de um aplicativo da Web de página única [fechado]

52

Estou chegando ao final de uma fase de prototipagem / prova de conceito para um projeto paralelo em que estou trabalhando e tentando decidir sobre algumas decisões de design de aplicativos em escala maior. O aplicativo é um sistema de gerenciamento de projetos feito sob medida para o processo de desenvolvimento ágil. Uma das decisões que preciso tomar é se devo ou não usar um aplicativo tradicional de várias páginas ou uma única página.

Atualmente, meu protótipo é uma configuração tradicional de várias páginas, no entanto, tenho procurado o backbone.js para limpar e aplicar alguma estrutura ao meu código Javascript (jQuery). Parece que, embora o backbone.js possa ser usado em aplicativos de várias páginas, ele brilha mais com aplicativos de página única. Eu estou tentando chegar a uma lista de vantagens e desvantagens de usar uma abordagem de design de aplicativo de uma única página. Até agora eu tenho:

Vantagens

  • Todos os dados precisam estar disponíveis por meio de algum tipo de API - isso é uma grande vantagem para o meu caso de uso, já que quero ter uma API para meu aplicativo. Atualmente, cerca de 60 a 70% das minhas chamadas para obter / atualizar dados são feitas por meio de uma API REST. Fazer um aplicativo de uma única página me permitirá testar melhor minha API REST, já que o próprio aplicativo a utilizará. Isso também significa que, conforme o aplicativo cresce, a própria API aumentará, pois é o que o aplicativo usa; não é necessário manter a API como um complemento do aplicativo.

  • Aplicativo mais responsivo - como todos os dados carregados após a página inicial são mantidos no mínimo e transmitidos em um formato compacto (como JSON), as solicitações de dados geralmente devem ser mais rápidas e o servidor fará um processamento um pouco menor.

Desvantagens

  • Duplicação de código - por exemplo, código do modelo. Eu vou ter que criar modelos tanto no lado do servidor (PHP neste caso) quanto no lado do cliente em Javascript.
  • Lógica de negócios em JavaScript - não posso dar exemplos concretos de por que isso seria ruim, mas não parece certo para mim ter uma lógica de negócios em JavaScript que qualquer pessoa possa ler.
  • Vazamentos de memória Javascript - como a página nunca é recarregada, vazamentos de memória JavaScript podem acontecer e eu nem saberia onde começar a depurá-los.

Há também outras coisas que são espadas duplas. Por exemplo, com aplicativos de página única, os dados processados para cada solicitação podem ser muito menores, pois o aplicativo solicitará os dados mínimos necessários para a solicitação específica, no entanto, isso também significa que pode haver uma solicitação muito menor para a solicitação. o servidor. Não tenho certeza se isso é bom ou ruim.

Quais são algumas das vantagens e desvantagens dos aplicativos da Web de página única que devo ter em mente ao decidir que caminho devo seguir para o meu projeto?

    
por ryanzec 16.04.2012 / 19:39
fonte

5 respostas

17

A maior desvantagem é que o cliente deve ter JavaScript habilitado e ser poderoso o suficiente para executar uma boa quantidade dele. Também é mais difícil satisfazer as preocupações de acessibilidade ou qualquer outra coisa que dependa da análise de HTML estático (embora algo que conheça sua API específica provavelmente funcione melhor do que a varredura de HTML). Finalmente, é mais fácil ter vazamentos significativos de memória.

No que diz respeito a duplicar código ou colocar lógica de negócios no cliente - não sei quanto disso você precisa fazer. Se o modelo no cliente for um Modelo de Visualização (um modelo que corresponda ao mundo como a IU o vê, não um modelo de negócios), a lógica que combina o ViewModel com o modelo de negócios pode residir no cliente, o modelo servidor, ou um pouco de ambos. Depende de como você se sente ao ter sua API contendo uma fachada específica do cliente em vez de fazer com que o cliente converta entradas da interface do usuário em chamadas de API.

Você também pode querer olhar para knockout.js. Não posso dizer se é melhor do que o backbone, mas pode se adequar melhor ao seu projeto.

    
por 16.04.2012 / 20:29
fonte
7

Desvantagens que muitas vezes vejo com aplicativos da Web de página única:

  • Incapacidade de vincular-se a uma parte específica do site, geralmente há apenas um ponto de entrada.
  • Botões de retrocesso e desativação.
  • O uso de guias é limitado ou inexistente.

(especialmente móvel:)

  • Demora muito para carregar.
  • Não funciona de todo.
  • Não é possível recarregar uma página, uma perda súbita de rede leva você de volta ao início do site.

Tudo isso pode ser contornado, mas pelo que tenho visto, a maioria dos construtores de sites não o faz.

    
por 23.01.2014 / 16:54
fonte
5

Existe um cliente muito importante que nunca executa Javascript: o do Google (a partir de 2012) . (O Bing não roda JS, suponho.)

Você precisará fornecer uma versão razoável não AJAX de cada página que precise ser indexada ou links para uma página que precisa ser indexada.

Se o seu site é pequeno, você pode fornecer versões muito básicas das poucas páginas apenas para indexar bots.

Se a maior parte do conteúdo do site for apenas para usuários registrados ou não precisar ser indexada por outros motivos, você poderá criar todo o espaço não indexado como um aplicativo de uma página, com sua própria pesquisa, blackjack etc.

Se nenhum desses, você provavelmente está em melhor situação para desenvolver um site de várias páginas desde o início, e apenas fornecer atualizações do AJAX onde ele não altere o "propósito geral" da página.

    
por 16.04.2012 / 21:45
fonte
3

-Duplication of code - For example, model code. I am going to have to create models both on the server side (PHP in the case) and the server side in javascript.

Você está no mundo PHP, mas existem estratégias de geração de código no mundo do .NET para criar automaticamente proxies JavaScript do WCF. Veja aqui

Eu não sei quais opções podem estar disponíveis para não ter que criar seus objetos remotos você mesmo em JavaScript em um aplicativo PHP, mas essa é uma opção para quem escreve aplicativos de página única no .NET.

    
por 16.04.2012 / 19:49
fonte
0

A escolha não precisa ser uma ou outra. O JWt é, por exemplo, um kit de ferramentas da Web que implementa a ilusão perfeita de uma página da Web de várias páginas, mas é uma única página. Além disso, ele reconhecerá os google bots e navegadores que não possuem javascript (experimente) e alternará para o modelo tradicional de várias páginas quando for detectado.

Resumindo:

  • não precisa escrever uma API (mas você ainda pode, se quiser)
  • aplicativo responsivo: cada clique do usuário precisa de no máximo um servidor de ida e volta (além de buscar imagens)
  • sem duplicação de código
  • sem lógica de negócios no lado do cliente
  • complexidade mínima do lado do cliente
  • bots de pesquisa podem indexá-lo
por 24.04.2012 / 10:20
fonte