Ranked in these QuestionsQuestion Ranking
Pro Easy data binding
Pro Easy to learn
Has a low entry barrier and an easy learning curve. It's especially easy to learn for beginners.
Pro Built in templating
Bindings in Knockout can also be used to control the generated structure of the HTML. There are bindings provided to allow for iteration and conditionals. The structure of the html reflects the structure of the data so iterative elements are bound to arrays in the data model. Having the HTML structure maintained by bindings keeps the templating simple, easy to read, and maintain.
Knockout also allows for string based templating so you can use whatever templating library you prefer.
Pro Dynamic models help with keeping the code simple and clean
Models in Knockout can be watched to keep the page data up to date by using observable objects. The observables notify Knockout when data is changed and automatically updates the page when this happens. By having Knockout maintain this relation, it keeps the front end code cleaner and simpler, and by enforcing a consistent pattern with observables the methodology can be more robust.
Pro Great documentation
The excellent tutorials with built-in exercises are a great learning experience, even for people without prior MVVM and data binding experience.
Pro It's only a library
Knockout does one thing, and does it well. It doesn't try to take on more than one area. It does MVVM data binding and that is it.
Pro Very flexible
One can do a lot of things and it keeps self references and other types of loops under control.
Pro Legacy browser support
Supports a large number of browsers, including IE6.
Pro Lightweight and plays nicely with other libraries
Pro Simple manageable modules
Using components is a great way of breaking up large modules into simpler ones.
Pro Well documented
ExtJS' documentation is very detailed and helpful. All concepts and parts of the framework are thoroughly explained.
Pro Easy reusability of code
By using the packages and custom components, code can be reused very simply.
Pro Provides built in support for UI widgets
Huge amount of widgets available, also easy to build custom widgets by extending the available components.
Pro Professional support available
If you buy a license you can get professional support and premium forums. Support has short contact times and solutions are of great value.
Pro IDE plugins available
Plugins are available for JetBrains, Eclipse and Visual Studio.
Pro Forum support
Forum support is available.
Pro Flat learning curve
Pro Excellent design tools
Eg: Sencha Architect.
Pro Developer friendly integrated tools
Sencha Cmd, Sencha Inspector and some IDE plugins etc., are the tools which helps developers to speed up their development.
Con Seems to be dead
KO has been stuck at version 3.4 for a long time, and there's not a lot of community activity.
Con Can become complex once the application grows large
Knockout leaves the application structure to the developer and it can become quite complex and unmanageable in the hands of a beginner once the application grows large and complex.
Con Two way binding requires a little extra work
When allowing users to edit existing data, the two-way binding of observables means you'll need to have to save original values before they're edited, to make comparisons or revert if the user cancels the action.
Con Slower than others when amount of objects grows
Knockout has a bad performance when the dealing with large amount of objects. You can see more here.
Con Large footprint
The library is almost 500Kb in size hence significantly affects your page load time.
Con Completely unreliable with regard to licensing and pricing
That ExtJs is expensive is not the problem, but what they did is started completely free, then switched the licensing model when they had profited from the community. Also, they suddenly switched from a single user license to a minimum of 5 users.
Con Expensive licensing
ExtJS is free for use in open source projects, but you have to use the unstable version which is riddled with bugs. Furthermore, to build a project (even if it's open source), you have to buy their proprietary tools.
For commercial projects, it costs $665 for a license.
Con No real support
You only get a limited premium questions that could be answered via the support and if the issue is too large then you might lose all your credits (it has a credit system for support) in one question.
In addition the replies in premium forum are sometimes less thought of than you would get in stackoverflow.
Ext-JS is not for free, it comes with a license.
Con Lots of bugs
The community is very small and this is because the licencing is very expensive. Therefore not many people to test the framework and give feedback in order to fix.
They try to do everything in house which means that a small company (linkedin shows about 100 employees) tries to imitate something very large.
The scaling problems lead to lots of bugs and instability.
Con No web-workers
ExtJS does not take into account the asynchronous nature of todays web browsers where you can do heavy stuff on the background.
Con Tooling is poor
They had a GUI architect tool, but that tool never was up to date with the current framework version. Now they even seem to have abandoned the whole architect app. Also, to build a ExtJs app you have to use their tool (and then you have to pay, from that moment ExtJs is no longer GPL). But this tool also has lots of bugs.
Con Steep learning curve
ExtJs is a very opinionated framework. You have to do it the ExtJs way or it's the highway. So, a lot of time, things in your own opinion doesn't make sense or don't work in the way you expect it.
Con Quantity yes, quality no
There is a large amount of source code that can be useful and indeed all the samples works flawlessly.
When you try to get into more complex scenarios you will find yourself in situations where things just do not work as expected. You will have to do manual work.