A lightweight view class is provided but there is no default templating method implemented. Because views are minimal it allows for much more freedom to implement views however you would like, and because of this freedom it's possible to write views to more uniquely adapt to a problem. User interactions are done within an events object that allows these interactions to be segregated from the rest of the view code which makes the behavioral aspect of the view easier to read and manage.
Ranked in these QuestionsQuestion Ranking
Pro Gives you the freedom to implement views however you want
A lightweight view class is provided but there is no default templating method implemented. Because views are minimal it allows for much more freedom to implement views however you would like, and because of this freedom it's possible to write views to more uniquely adapt to a problem.
User interactions are done within an events object that allows these interactions to be segregated from the rest of the view code which makes the behavioral aspect of the view easier to read and manage.
Pro Can be combined with any library you want
Pro Large community
Backbone has existed longer than most frameworks, and has a large following of users and projects using it as a framework.
Pro You can call underscore.js methods directly on Backbone objects
Backbone collections and models are extended by underscore.js method allowing you to call underscore methods directly on the Backbone objects.
Pro Easy to interface with the API
Backbone provides Model and Collection classes that provide strong analogs to restful resources. These strong analogs allow you to interface more naturally with the API, and makes it easier to write custom behaviors for more complicated API interactions.
Collections provide a variety of powerful manipulation methods that are integrated from the underscore library, that allow you to manipulate, sort, and filter collection data easily.
Pro Easy to implement complex user interaction
Because all the state is managed by Models and Controllers, and they are extendable objects, you can isolate all the state logic onto those objects allowing the rest of the application to not worry about it. The app is simplified to just taking in input to modify the Models and Controllers, and updating the views to reflect them, but none of the state needs to be a concern outside of the Model and Controller classes.
Pro Doesn’t force you into a particular coding style or paradigm
There is no “magic” happening below the surface: the source code is clear, readable and well commented. Backbone is also “lightweight” in the sense that it doesn’t require a ton of buy-in to use. It can be easily integrated into an existing page, and you can choose to only use certain components of the library (Views without Models or Collections, for example). While there are many frameworks that seem to be faster to get started with, Backbone’s lack of surprises, clear documentation, speed & flexibility make it a good fit for all types of apps.
Pro Extendable with plugins
Because Backbone is so simple, and the different components are very well isolated, it is very easy to extend the functionality of Backbone. If you're writing your own extended code it's easy to keep it separated out, and share with the community.
The community also has many plugins already available, which you can pick and choose to use to fit your programming style.
Pro Easy to abstract interaction
All Backbone classes extend an events class that allows for listening and triggering functionality. Because all classes implement events by default it is easier to provide asynchronous communication between objects, and it allows better abstraction of interaction so the event emitting object does not need to know the structure or existence of the receiving object.
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 Well documented
ExtJS' documentation is very detailed and helpful. All concepts and parts of the framework are thoroughly explained.
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 Easy reusability of code
By using the packages and custom components, code can be reused very simply.
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 Requires more coding compared to other frameworks
Because many features are not provided out of the box, you either have to write more base class code to get those features, or find a plugin that provides them in a way you like.
It does not provide much structure either, things like memory management must be kept in mind by the developer, also the lack of view lifecycle management makes state changes prone to memory leaks.
Con Can easily lead you to spaghetti code
Heavy event-binding can lead to unmanageable spaghetti mess. BB tempts users to overuse it for no reason.
Con No data binding
Backbone does not have data binding support. However, there are some libraries that can be implemented in order to have data binding in Backbone. Such as Epoxy
Con Large footprint
The library is almost 500Kb in size hence significantly affects your page load time.
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.
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 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.