locked
Why old developers hate SPA? Are they right? RRS feed

  • Question

  • User283528319 posted

    Hi all,

    after 18 years of Delphi desktop application development, I started .net core web application.

    Because of my tendencies I chose SPA and now I feel really comfortable with it and I want to continue in this way.

    However, some people on the net has lots of lots of complaints and criticizing <g class="gr_ gr_350 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar replaceWithoutSep" id="350" data-gr-id="350">on</g> SPA. (eg.: https://medium.freecodecamp.org/why-i-hate-your-single-page-app-f08bb4ff9134)

    Why do they do that?

    Are they right?

    Is SPA really not suitable for big scope institutional projects?

    thanks

    Tuesday, February 5, 2019 9:34 AM

All replies

  • User475983607 posted

    Hi all,

    after 18 years of Delphi desktop application development, I started .net core web application.

    Because of my tendencies I chose SPA and now I feel really comfortable with it and I want to continue in this way.

    However, some people on the net has lots of lots of complaints and criticizing on SPA. (eg.: https://medium.freecodecamp.org/why-i-hate-your-single-page-app-f08bb4ff9134)

    Why do they do that?

    Are they right?

    Is SPA really not suitable for big scope institutional projects?

    thanks

    IMHO, this type of question has no place on a support forum because there are no answers just opinions. 

    SPA frameworks are tool chains for creating a desktop like web application.  It is up to you to determine if the tools are appropriate for your project.

    https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/choose-between-traditional-web-and-single-page-apps

    Tuesday, February 5, 2019 12:57 PM
  • User283528319 posted

    IMHO, this type of question has no place on a support forum because there are no answers just opinions. 

    am I not right having concerns about <g class="gr_ gr_78 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar only-ins replaceWithoutSep" id="78" data-gr-id="78">feature</g> of my project? And I am pretty much sure <g class="gr_ gr_207 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="207" data-gr-id="207">an SPA</g> expert can assure me that SPA can be safely and <g class="gr_ gr_181 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del multiReplace" id="181" data-gr-id="181">performancely</g> use in large scale projects...

    Tuesday, February 5, 2019 1:17 PM
  • User475983607 posted

    And I am pretty much sure an SPA expert can assure me that SPA can be safely and performancely use in large scale projects...

    An SPA is just the UI layer.  Performance and large scale are vague measurements and have little to do with the decision to build an SPA.

    Keep in mind that link in your original post is 3 years old and a lot has changed in the SPA landscape.

    Tuesday, February 5, 2019 2:16 PM
  • User283528319 posted

    do you know what I am just trying to say, I probably have a big opportunity  for a large scale institutional project

    And there will be some people in acceptance community whose current project is made with WPF. And they will defend their project with fanaticism. (Because of their current benefit)

    I just want to be strong against them to defend my SPA project.

    Therefore just wanted to know the advantages of it, against WPF and conventional MVC projects.

    Tuesday, February 5, 2019 2:32 PM
  • User475983607 posted

    do you know what I am just trying to say, I probably have a big opportunity  for a large scale institutional project

    And there will be some people in acceptance community whose current project is made with WPF. And they will defend their project with fanaticism. (Because of their current benefit)

    I just want to be strong against them to defend my SPA project.

    Therefore just wanted to know the advantages of it, against WPF and conventional MVC projects.

    Web application clients are not platform or hardware dependent.  Currently, WPF runs on Windows.  That will change in ASP Core 3.0 though.  Web application exists in one place, the web server, rather than on multiple clients.  Application updates are much easier.  Web applications are mobile ready out-of-the-box if built using a response design.  

    A more abstract idea is SPA generally lean toward a 3-tier architecture.  3-tier architecture allow sharing business logic without the UI.

    Keep in mind, that trying to argue an SPA over WPF will end up as toolchain argument which will lead to learning curve arguments.  Again, an SPA is just the UI layer.  There's much more to building an application than the UI.

    Tuesday, February 5, 2019 3:03 PM
  • User-821857111 posted

    Therefore just wanted to know the advantages of it, against WPF and conventional MVC projects.
    That's an entirely different question to the one that you started the thread with.

     I just want to be strong against them to defend my SPA project. 
    Why have you chosen SPA if you don't know what benefits you get from recommending it?

    Tuesday, February 5, 2019 3:06 PM
  • User-474980206 posted

    coding a SPA is much more like coding a desktop app. it is most appropriate when the web app is desktop like. First WPF is windows desktop only. Use a SPA or SPA in electron when you want cross O/S

    the main advantages of SPA or progressive web apps:

    1) can get a desktop/app like experience
    2) can run offline
    3) coding is more like a standard desktop app and usually easier (though you need to learn javascript/CSS/dom)

    the main disadvantages of SPA:

    1) must add code to implement book marks - many frameworks make this easy
    2) must add code to support browser nav
    3) requires javascript
    4) the site can not be crawled by search engines (SEO friendly). if this is a requirement, then you should use nodejs for the UI server and do server pre-render. 
    5) initial page load can be slower. the current versions of frameworks are working on this with code splitting and async code loading. also server pre-render can be used to speed up initial load. 
    6) coding SPA with current frameworks requires understanding functional programing, which may be hard for object oriented developers.


     

    Tuesday, February 5, 2019 4:51 PM
  • User283528319 posted

    Web application clients are not platform or hardware dependent. 

    Could you be clear about <g class="gr_ gr_34 gr-alert gr_gramm gr_inline_cards gr_run_anim Style multiReplace" id="34" data-gr-id="34"><g class="gr_ gr_33 gr-alert gr_gramm gr_inline_cards gr_run_anim Punctuation multiReplace" id="33" data-gr-id="33">this .</g></g>Web applications are SPA's aren't they?

    Tuesday, February 5, 2019 5:23 PM
  • User283528319 posted

    1) must add code to implement <g class="gr_ gr_13 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del" id="13" data-gr-id="13">book marks</g> - many frameworks make this easy
    2) must add code to support browser nav
    3) requires javascript
    4) the site <g class="gr_ gr_14 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del" id="14" data-gr-id="14">can not</g> be crawled by search engines (SEO friendly). if this is a requirement, then you should use <g class="gr_ gr_17 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling" id="17" data-gr-id="17">nodejs</g> for the UI server and do server pre-render. 
    5) initial page load can be slower. the current versions of frameworks are working on this with code splitting and async code loading. <g class="gr_ gr_19 gr-alert gr_gramm gr_inline_cards gr_run_anim Punctuation only-ins replaceWithoutSep" id="19" data-gr-id="19">also</g> server pre-render can be used to speed up <g class="gr_ gr_18 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar only-ins doubleReplace replaceWithoutSep" id="18" data-gr-id="18">initial</g> load. 
    6) coding SPA with current frameworks requires understanding functional <g class="gr_ gr_12 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del" id="12" data-gr-id="12">programing</g>, which may be hard for <g class="gr_ gr_16 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del multiReplace" id="16" data-gr-id="16">object oriented</g> developers.

    I checked each of them none of them look issue for me or my project

    Tuesday, February 5, 2019 5:26 PM
  • User283528319 posted

    btw <g class="gr_ gr_17 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="17" data-gr-id="17">spa's</g> can work platform independent can't they?

    Because they are built <g class="gr_ gr_51 gr-alert gr_gramm gr_inline_cards gr_run_anim Style multiReplace" id="51" data-gr-id="51">on .</g>net core technology I have never thought a SPA not working on a mobile device or mac or linux

    Tuesday, February 5, 2019 5:27 PM
  • User475983607 posted

    btw spa's can work platform independent can't they?

    Yes, browser based (Web) applications which includes SPAs are platform agnostic.  This is one of the main points given above.

    Because they are built on .net core technology I have never thought a SPA not working on a mobile device or mac or linux

    You completely misunderstand the technology.  A Web Application, which includes an SPA, can be rendered from a Windows box and consumed on a Linux box.  The fact that the web application is an SPA has nothing to do with it.  

    The challenge with an SPA, IMHO, is becoming familiar with the toolschains and task runners.  

    Tuesday, February 5, 2019 6:55 PM
  • User-474980206 posted

    btw spa's can work platform independent can't they?

    Because they are built on .net core technology I have never thought a SPA not working on a mobile device or mac or linux

    SPA's run in the browser and are not dependent on any .net core technology. you may use .net core technolgy for server apis. Typically the SPA development tool chain s all javascript based via node. If you use visual studio code as the editor its really a SPA (electron/node/(typescript=>javascript))

    your must ensure your SPA code is cross browser (any version of IE is a pain, but before IE11 is really painful). 

    Wednesday, February 6, 2019 8:24 PM
  • User283528319 posted

    (any version of IE is a pain, but before IE11 is really painful). 

    hug IE. We can force clients to use chrome 

    Thursday, February 7, 2019 10:56 AM
  • User1724605321 posted

    Hi fatihbarut ,

    Generally , If you use a well-established framework, whether for styling (eg Bootstrap) or a JavaScript framework (such as Angular or React), generally this means someone else has taken care of a lot of the cross-browser compatibility work for you. But you still need to test your codes on specific browser /version ,

    Best Regards,

    Nan Yu

    Monday, February 11, 2019 2:21 AM