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?