Jump to content
AJBM

SPA em aplicações empresariais

Recommended Posts

AJBM

Boas,

Eu não tenho muita experiência em aplicações SPA, no entanto, tenho "ouvido" falar muito delas, devido em grande parte, a frameworks/bibliotecas como angular, knockout, react, entre outras.
Faz-me alguma confusão, que todos os ficheiros (javascript,css) sejam carregados no load inicial. Em aplicações pequenas não vejo problemas, mas para aplicações de maior dimensões penso que poderá ser overkill, carregar todos os recursos de uma só vez. (Tendo em conta que o utilizador pode apenas visitar uma ou duas páginas).
SPA é indicado para aplicações de grandes dimensões?
É mais fácil efectuar a manutenção de uma aplicação que use SPA ou de uma Multi-Page Application? 
 

Share this post


Link to post
Share on other sites
Rui Carlos

Pessoalmente não sou grande adepto de SPAs do ponto de vista do utilizador.  Tendem a ser pesadas (nomeadamente ao nível da RAM), e a ter problemas de usabilidade e segurança (fruto da maior dependência do JS).

Do ponto de vista do desenvolvimento e manutenção, mesmo não sendo a minha área, diria que a SPA vai dar mais trabalho (ter mais custos).  Vais ter mais código a correr em ambientes que tu não controlas (com diferentes versões de browsers, que suportam diferentes funcionalidades de JS, e com diferentes características de desempenho, e em que é mais difícil registar e reproduzir erros), e vais ter que implementar uma série de funcionalidades que os browsers já disponibilizam para páginas normais (e.g., actualização do URL).

Assim, tirando casos é que se pretende uma aplicação que funcione offline e/ou se está a tentar imitar uma aplicação nativa, acho que as SPAs não são a melhor opção (mesmo nestes casos a melhor solução era... uma aplicação nativa :D).

Share this post


Link to post
Share on other sites
AJBM

Obrigado pela resposta.

1 hora atrás, Rui Carlos disse:

Tendem a ser pesadas (nomeadamente ao nível da RAM), e a ter problemas de usabilidade e segurança (fruto da maior dependência do JS).

Concordo contigo no que diz respeito à segurança, aplicação fica na verdade mais exposta.
Discordo contigo na parte da usabilidade, penso que uma das vantagens deste tipo de aplicações é sua usabilidade. Com SPA consegues tens uma navegação mais clean, não existem realoads constantes.
A nível de manutenção também penso que seja mais difícil e trabalhosa. Com este tipo de aplicações, também não podemos efetuar logs, o que dificulta o processo de deteção e correção de erros.

Edited by AJBM

Share this post


Link to post
Share on other sites
Rui Carlos
13 horas atrás, AJBM disse:

Discordo contigo na parte da usabilidade, penso que uma das vantagens deste tipo de aplicações é sua usabilidade. Com SPA consegues tens uma navegação mais clean, não existem realoads constantes.

O termo que queria usar era mais acessibilidade, mas mesmo do ponto de vista da usabilidade as SPAs têm habitualmente vários problemas.  Sobretudo por não terem o comportamento esperado para certas acções do utilizador (exemplo de problemas que já vi: abrir links em background não funciona correctamente, o scroll tem movimentos que não fazem match com a interacção do utilizador, o histórico não funciona correctamente, a pesquisa não funciona correctamente, etc.).  Admito que em geral isto seja o resultado de más implementações de SPAs, e de certa forma é uma consequência da complexidade de implementar uma SPA como deve ser.

Quanto aos reloads constantes, numa página eficiente a minha percepção do reload é equivalente à de uma SPA (fiz primeiro um teste num site em que o carregamento de uma página demorava cerca de 200~300ms, mas mesmo num outro site com vídeos o header e o sidebar pareciam ficar fixos nos reloads, por exemplo).  Infelizmente páginas eficientes são cada vez mais uma raridade, e em páginas mais complexas uma SPA permite optimizações.  Ainda assim, pessoalmente irritam-me aquelas páginas que são carregadas em milisegundos, mas que depois ficam 5 segundos a mostrar um ícone em movimento enquanto carregam os conteúdos propriamente ditos.

Share this post


Link to post
Share on other sites
AJBM

Este site é feito em angular, tens uma navegação agradável e fluída.
No entanto, custa-me a ver este tipo de tencologias utilizadas em projetos mais empresariais. Por exemplo: fazer o Portal das Finanças neste tipo de tecnologia deve ser algo penoso.
Talvez soluções híbridas, seja o melhor caminho,  tentar utilizar o melhor dos dois mundos. 
 

  • Vote 1

Share this post


Link to post
Share on other sites
Rui Carlos
Em 21/02/2018 às 20:50, AJBM disse:

Este site é feito em angular, tens uma navegação agradável e fluída.

Do que experimentei, também não notei problemas típicos das SPAs (apesar de no Safari ter algumas anomalias de CSS).

Apesar de tudo, é o tipo de site onde não vejo qualquer vantagem em ter a SPA (são conteúdos estáticos, que podem ser servidos de forma igualmente rápida em páginas separadas).  Acho que os casos em que faz sentido uma SPA é em algo como um chat ou um cliente de email web (i.e. numa "aplicação", e não num "documento").

E sim, as soluções híbridas, com várias páginas, mas em que certas áreas são implementadas com SPAs, são um bom compromisso.

Share this post


Link to post
Share on other sites
AJBM
23 horas atrás, Rui Carlos disse:

Apesar de tudo, é o tipo de site onde não vejo qualquer vantagem em ter a SPA (são conteúdos estáticos, que podem ser servidos de forma igualmente rápida em páginas separadas).  Acho que os casos em que faz sentido uma SPA é num chat, ou num cliente de email web (i.e. numa "aplicação", e não num "documento").

Concordo. Se não existir interactividade com o utilizador, este tipo de tecnologias é overkill.
Vou se faço um projeto para perceber melhor os desafios deste tipo de aplicações. Só a "mexer nas coisas" é que aprendemos.
Obrigado pelo feedback.:thumbsup:

Share this post


Link to post
Share on other sites
taviroquai

As SPA estão a dominar tanto na web (React, Angular, VueJS, MeteorJS...) como no mobile (React Native). Até no desktop (ElectronJS) já temos aplicações criadas apenas com JavaScript (agora ES6). Até no server com NodeJS.

Uma aplicação nativa é mais eficiente no desktop e mobile? É sim senhor.

Faltam muitas features em JavaScript que existem noutras linguagens? Faltam sim senhor.

Então porque esta crescente utilização de JavaScript em todo o lado???

Penso que Javascript já não é apenas aquela linguagem de scripting da web nos anos 90. A comunidade em redor de ES5/ES6 é enorme e o resultado são as novas features, frameworks, empresas que desenvolvem produtos exclusivamente com recurso a ES, empresas como Twitter, Facebook a alavancar a linguagem... é um mundo. Até em baixo nível temos agora Webassembly, com uma eficiência brutal.

É fácil detestar Javascript, mas acho que é ainda mais fácil adorar todo o ecosistema, comunidade e suporte. Até no Pi se corre NodeJS... e a forma elegante de lidar com eventos é notável. Afinal o mundo é assíncrono.

Estar no mundo da programação sem ES6/7 é como ficar nos carros a gasóleo e nas energias não renováveis... :P

 

Share this post


Link to post
Share on other sites
Rui Carlos
Em 03/03/2018 às 12:08, taviroquai disse:

As SPA estão a dominar tanto na web (React, Angular, VueJS, MeteorJS...) como no mobile (React Native). Até no desktop (ElectronJS) já temos aplicações criadas apenas com JavaScript (agora ES6). Até no server com NodeJS.

Uma aplicação nativa é mais eficiente no desktop e mobile? É sim senhor.

Faltam muitas features em JavaScript que existem noutras linguagens? Faltam sim senhor.

Então porque esta crescente utilização de JavaScript em todo o lado???

Penso que Javascript já não é apenas aquela linguagem de scripting da web nos anos 90. A comunidade em redor de ES5/ES6 é enorme e o resultado são as novas features, frameworks, empresas que desenvolvem produtos exclusivamente com recurso a ES, empresas como Twitter, Facebook a alavancar a linguagem... é um mundo. Até em baixo nível temos agora Webassembly, com uma eficiência brutal.

É fácil detestar Javascript, mas acho que é ainda mais fácil adorar todo o ecosistema, comunidade e suporte. Até no Pi se corre NodeJS... e a forma elegante de lidar com eventos é notável. Afinal o mundo é assíncrono.

Estar no mundo da programação sem ES6/7 é como ficar nos carros a gasóleo e nas energias não renováveis... :P

@taviroquai, pela forma como o post inicial estava escrito, assumi que a questão fosse sobre a utilização de SPAs para websites.  Nesse contexto não está em causa usar ou não JS, estava em causa teres uma página ou várias.  (Adicionalmente, quando estamos a falar em implementar uma "aplicação" no sentido mais tradicional do termo, também me parece que as SPAs fazem sentido, pelo menos para a web.)

Quanto à crescente utilização do JS (nomeadamente em aplicações não web) explica-se essencialmente por um motivo: portabilidade/custos.  Mas não penses que isto é a escolha dos consumidores, baseada na qualidade do resultado final.  É uma questão de custos para quem gere o negócio, que impõe a solução ao consumidor (como os consumidores estão cada vez menos dispostos a pagar por aplicações de qualidade, têm pouco poder negocial).

Já agora, falaste em WebAssembly, que apenas mostra que o JS ainda está longe de ser suficiente em muitas situações.  Mas mais uma vez, diria que o tema da discussão eram SPAs e não JS.

Share this post


Link to post
Share on other sites
taviroquai
Em 03/03/2018 às 15:09, Rui Carlos disse:

Quanto à crescente utilização do JS (nomeadamente em aplicações não web) explica-se essencialmente por um motivo: portabilidade/custos.  Mas não penses que isto é a escolha dos consumidores, baseada na qualidade do resultado final.  É uma questão de custos para quem gere o negócio, que impõe a solução ao consumidor (como os consumidores estão cada vez menos dispostos a pagar por aplicações de qualidade, têm pouco poder negocial).

Sim, o custo de desenvolvimento de uma app nativa em Android/iOS é superior a uma webapp baseada em javascript, mas atenção: isto não significa que uma webapp tem menos complexidade (ou qualidade como referiste) que uma app para Android. Aliás, considerando uma stack com ES6, ReactJS, Babel, Webpack, SemanticUI, API em server-side com NodeJS e GraphQL, não tenho dúvida nenhuma, que a complexidade para juntar todas estas peças e sua configuração é bem superior a uma app Android. Mais um facto, o salário de um React developer está no topo dos salários dos programadores (não tenho aqui a fonte mas posso procurar). Isto chegando a uma PWA, onde não deixa de ser utilizável em modo offline, equiparando-se a uma app nativa.

  • Vote 1

Share this post


Link to post
Share on other sites
Rui Carlos
Em 04/03/2018 às 17:48, taviroquai disse:

Sim, o custo de desenvolvimento de uma app nativa em Android/iOS é superior a uma webapp baseada em javascript, mas atenção: isto não significa que uma webapp tem menos complexidade (ou qualidade como referiste) que uma app para Android. Aliás, considerando uma stack com ES6, ReactJS, Babel, Webpack, SemanticUI, API em server-side com NodeJS e GraphQL, não tenho dúvida nenhuma, que a complexidade para juntar todas estas peças e sua configuração é bem superior a uma app Android. Mais um facto, o salário de um React developer está no topo dos salários dos programadores (não tenho aqui a fonte mas posso procurar). Isto chegando a uma PWA, onde não deixa de ser utilizável em modo offline, equiparando-se a uma app nativa.

Sobre a complexidade: sem discordar da complexidade das webapps, o problema das aplicações nativas coloca-se quando queres suportar "todas" as plataformas.  Aí a manutenção de diferentes bases de código com paridade de funcionalidades tende a ser impossível nas aplicações nativas.

Sobre o salários: os programadores de Cobol também costumavam ser muito bem pagos.  Acho que isto é suficiente para concluir que os salários dizem pouco sobre a qualidade da stack :D 

Share this post


Link to post
Share on other sites
taviroquai
Em 05/03/2018 às 22:47, Rui Carlos disse:

Sobre o salários: os programadores de Cobol também costumavam ser muito bem pagos.  Acho que isto é suficiente para concluir que os salários dizem pouco sobre a qualidade da stack :D

Isso já não é comparável... :)

Aqui estão dados da sondagem do Stack Overflow:

https://insights.stackoverflow.com/survey/2016#top-paying-tech-per-occupation

Ver tabulador "Front-end". ReactJS é a mais bem paga, acima de iOS e Android em Mobile.

Há muitos dados interessantes nesta sondagem. Pena em 2017 não terem feito exatamente os mesmos segmentos nas sondagens...

Share this post


Link to post
Share on other sites
AJBM

Boas,


Umas das razões por ter começado este, tópico foi exatamente devido ao crescimento da utilização de frameworks/libs como reactjs, angular, vlue.
Queria tentar perceber, o papel destas novas frameworks no desenvolvimento de software.
Vocês acham que a utilização desta frameworks obrigada ao desenvolvimento de aplicações SPA?
Qual é a melhor forma de combinar, este tipo de frameworks com as tecnologias que já existem?
Temos uma API do lado servidor, que serve apenas para persistir/obter dados e toda a lógica de negócio fica do lado do cliente? 
@taviroquai já utilizaste alguma destas frameworks em algum projeto?

Edited by AJBM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.