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 maior escala. O aplicativo é um sistema de gerenciamento de projetos adaptado mais ao processo de desenvolvimento ágil. Uma das decisões que preciso tomar é se deve ou não usar um aplicativo tradicional de várias páginas ou um único aplicativo de página.
Atualmente, meu protótipo é uma configuração tradicional de várias páginas, no entanto, estive procurando no 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. Estou tentando criar uma lista de vantagens e desvantagens do uso de uma abordagem de design de aplicativo de página única. Até agora eu tenho:
Vantagens
Todos os dados precisam estar disponíveis por meio de algum tipo de API - essa é uma grande vantagem para o meu caso de uso, pois eu quero ter uma API para meu aplicativo de qualquer maneira. No momento, cerca de 60 a 70% das minhas chamadas para obter / atualizar dados são feitas por meio de uma API REST. A execução de um aplicativo de página única permitirá testar melhor minha API REST, pois o próprio aplicativo a usará. Isso também significa que, à medida que o aplicativo cresce, a própria API cresce, pois é isso que o aplicativo usa; não há necessidade de manter a API como um complemento para o aplicativo.
Aplicativo mais responsivo - como todos os dados carregados após a página inicial são reduzidos ao mínimo e transmitidos em um formato compacto (como o JSON), as solicitações de dados geralmente devem ser mais rápidas e o servidor fará um processamento ligeiramente menos.
Desvantagens
- Duplicação de código - por exemplo, código de modelo. Eu vou ter que criar modelos no lado do servidor (PHP neste caso) e 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 simplesmente não me parece correto 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, podem ocorrer vazamentos de memória Javascript, e eu nem sabia por onde começar a depurá-los.
Há também outras coisas que são espadas de dois gumes. Por exemplo, com aplicativos de página única, os dados processados para cada solicitação podem ser muito menores, pois o aplicativo solicita os dados mínimos necessários para uma solicitação específica, no entanto, isso também significa que pode haver uma solicitação muito mais pequena para o servidor. Não tenho certeza se isso é uma coisa boa 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 qual caminho devo seguir para o meu projeto?
fonte
Respostas:
A maior desvantagem é que o cliente deve ter o JavaScript ativado 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 sabendo que sua API específica possa provavelmente fazer melhor do que a raspagem de HTML). Por fim, é mais fácil ter vazamentos significativos de memória.
No que diz respeito à duplicação de código ou à lógica de negócios do cliente - não tenho certeza de quanto você precisa fazer. Se o modelo no cliente for um View-Model (um modelo que corresponda ao mundo como a UI o vê, não um modelo de negócios), a lógica que corresponderá ao ViewModel até o modelo de negócios poderá residir no cliente, o servidor, ou um pouco de ambos. Depende de como você se sente em ter sua API contendo uma fachada específica do cliente versus fazer com que o cliente traduza as entradas da interface do usuário em chamadas de API.
Você também pode querer consultar o knockout.js. Não sei dizer se é melhor que o backbone, mas pode se encaixar melhor no seu projeto.
fonte
Desvantagens que costumo ver com aplicativos Web de página única:
(especialmente para dispositivos móveis :)
Tudo isso pode ser contornado, mas pelo que vi, a maioria dos construtores de sites não.
fonte
Há um cliente muito importante que nunca executa o Javascript: o rastreador do Google (a partir de 2012) . (O Bing também não executa JS, suponho.)
Você precisará fornecer uma versão razoável não AJAX de todas as páginas que precisam ser indexadas ou links para uma página que precisa ser indexada.
Se seu site for pequeno, você poderá 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 nenhuma dessas opções, você provavelmente está melhor desenvolvendo um site com várias páginas desde o início e fornecendo apenas atualizações do AJAX onde isso não altera o 'objetivo geral' da página.
fonte
Você está no mundo PHP, mas existem estratégias de geração de código no mundo .NET para criar automaticamente proxies JavaScript WCF. Veja aqui
Não sei quais opções podem estar disponíveis para não ser necessário criar seus objetos remotos em JavaScript em um aplicativo PHP, mas essa é uma opção para quem escreve aplicativos de página única no .NET.
fonte
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 bots e navegadores do Google que não possuem javascript (experimente) e mudará para o modelo tradicional de várias páginas quando detectá-los.
Em resumo:
fonte