- Do you need just a basic working app?
No time for “complex stuff”?
Try angular. Start looking for help immediately.
- Do you need to prototype fast and often?
Are you ok with some maintainability problems in the future?
Try angular. Get ready for problems.
- Are you backend guys trying to build some frontend cause there’s no choice?
Try angular. Start looking for a frontend developer.
- Do you need to start fast and build fast, but with some missing features you need to bring with you?
Try ampersand/backbone + (pick your libraries to fit the context)
- The same settings, medium to large app?
Add marionette/chaplin to your backbone and consider using ReactJs
- Do you have some time for experiments, but with later performance gain?
Try mithril/knockout/aurelia + (pick your libraries to fit the context)
- Do you have good frontend experience in general and basic familiarity with Functional Programming?
Try ReactJS + redux + ImmutableJS + (pick your libraries to fit the context)
- More functional programming skillz? Or crazily interactive app?
Add reactive streams (bacon, rxJS) or try Cycle.js (!experimental)
Note 0: it may be a good idea to add streams anyway and teach others to use it.
Note 1: please, do not confuse reactive streams with FRP.
- Do you want to use rigid rules and common best practices?
Your app will grow big?
You plan to grow your team, possibly with jr. devs?
You have some time to invest in learning?
Invest some time in EmberJS. It’s a good investment!
- Do you need to have the “desktop-like” app?
Your app will have tables, charts, other analytical stuff?
Are you building enterprise stuff?
- Are you a studio building things for other people?
You should have a preferred toolset already.
Anyway, build your own stuff based on your most common use cases.
- Are you a freelancer building some stuff for others?
Adapt to their choice/requirements.
Try angular. It will not hurt so much. Let other people suffer if they want.
Note: You cannot change your customer if he does not pay you for that!
- Are you trying to build an appealing custom product, that will be used by other people?
Tailor the framework for the precise needs starting with anything from the list above.
- You have a precise knowledge of the app you want to get (e.g. mobile app with 10 screens)
Get two weeks experimenting with specialized stuff (ionic, famous, Sencha Touch)