One of the projects I am working on is written in Silverlight
(5.0) and it is scheduled to be migrated this year, as Silverlight
support will end in 2021 and some requested features are harder to implement in Siverlight
(responsive design, drawing some trees etc.).
Now, we have a decent experience with ASP.NET MVC, so back-end choice is clear. However, front-end part is not that easy to decide. I was thinking about using AngularJS
or ReactJS
.
I know that a similar question has been asked and answered, but my case is not a very general one and I will try to provide as many details as I can:
1) Current architecture - almost all Silverlight
code uses MVVM pattern and most of the members in the team understand it well
2) Application modules
a) Administration - about 15 views with varying complexity. Many components are reused here and the most complex parts deal with displaying tree lists with thousands of items that allow incremental search and moving sub-trees to other tree lists. Also some data are displayed in complex grids that can handle multiple sorting, column drag and drop etc.
b) Operational - most part of the operational consist in some "sheets" that display tens of thousands of cells and allow Excel like functionality. Most of the data is read-only (fetched from DB, aggregations come directly from a Cube) and formulas are stored in some XML files and applied using IronPython
. This part will be migrated in the second phase, as it is very complex.
3) Already tried frameworks:
a) jQuery - various small functionalities
b) ReactJS - just this tutorial
c) AngularJS - used basic features (binding, directive, factories, no fancy stuff like services or routing) in other projects and we got along quite easily (documentation and SOF
were really great). Also used ui-grid with some of its advanced features like column freezing, multiple sorting, status saving and restoring
4) Other particularities
Learning curve issues are important as most team members have little experience in front-end development
This is supposed to be a very large (and expensive) change in the application, so it should be able to live for several years without other big changes
New application should embed D3.js graphs
We will not create a SPA. Instead we will use MVC's views and routing, deliver static content and use JS framework for responsiveness.
I have read this article, but it is still hard to make a decision:
coming from
MVVM
pattern, I have a bias towardsAngular
.Angular2 seems to have some cool stuff, but it has breaking changes
There is serious criticism against Angular, as you can see here. Also, an more experienced developer of mine warns about many problems he has encountered during developing a SPA POC with Angular. Also, Angular2 breaking changes sustain the idea that Angular1 is going in the wrong direction. However, replacing Angular needs dealing with a lot of stuff, as mentioned here.
My question is: provided the context above, what do you think it will be the best choice in the short/medium term?