When comparing Angular vs Sencha Ext JS, the Slant community recommends Angular for most people. In the question“What are the best client-side JavaScript MV* frameworks?” Angular is ranked 9th while Sencha Ext JS is ranked 12th. The most important reason people chose Angular is:
Angular uses the existing HTML structure and builds on top of it instead of requiring you to learn a new templating language. Because it's just vanilla HTML, it is more familiar, and easier for beginners to learn. Directives let Angular know which HTML elements are under its control, and how to use them. Being directly on the HTML it's more transparent what's going on, and it's possible to get a good idea of what the page is doing just by looking at the template. Also, it makes embedding possible, as you could have an angular app within an existing site so you don't have to rewrite everything at once.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Support for a composable component oriented architecture with directives
Angular uses the existing HTML structure and builds on top of it instead of requiring you to learn a new templating language. Because it's just vanilla HTML, it is more familiar, and easier for beginners to learn. Directives let Angular know which HTML elements are under its control, and how to use them.
Being directly on the HTML it's more transparent what's going on, and it's possible to get a good idea of what the page is doing just by looking at the template.
Also, it makes embedding possible, as you could have an angular app within an existing site so you don't have to rewrite everything at once.
Pro Easy and straightforward data-binding
Data bindings are done on the DOM, which allows you to easily sync data between various parts of the DOM in a very succint matter.
<body ng-app>
<span>Insert your name:</span>
<input type="text" ng-model="user.name" />
<h3>Echo: {{user.name}}</h3>
</body>
This snippet shows how the model attribute "name" is easily bound across different parts of the DOM without having to set up any extra boilerplate.
Pro Provides dependency injection
With dependency injection, you can load in extra javascript and new functionality just when you need it.
This is particularly helpful with testing as you can swap out services for test services.
It also means in single page apps you can load dependencies only as you need them instead of loading them up all up at the start.
Pro Huge ecosystem of third party components
Angular is an extremely popular JavaScript framework. Because of this, developers have developed a myriad of components which can be downloaded and integrated into any Angular application.
Pro Huge community that is quickly growing
Angular has the largest community out of all Javascript MV* frameworks and there are a lot of tutorials and guides out there for new and old users alike.
Pro All best practices
Pro Comprehensive documentation
The Sencha documentation is comprehensive, with detailed documentation and a number of examples displaying the various widgets, tools and themes.
Pro Supports MVC and MVVM development
Pro Supports Web and Mobile deployment out of the one framework or codebase
Pro Support for easy theming of applications
Pro Visual Design tool available
The Sencha Architect product allows you to visually build your application, or rapidly prototype a system.
Pro IDE Plugins available
A number of plugins are available for some of the commonly used IDEs (eg: JetBrains, Eclipse, Visual Studio), providing templates, refactoring support, hinting and code completion/generation, as well as management of includes and other time-saving features.
Pro Charting package included
Cons
Con Steep learning curve
Angular isn't a simple framework, and because much of the magic goes on behind the scenes, it isn't easy to go from simply using the framework to being able to actually change how it works and extend it.
Con It is almost mandatory to use Typescript
Although ES standard can be used, most of the documentation and resources are with Typescript.
Con HTML template does not comply to standards
Attributes are case-sensitive, which is against the HTML standards.
Con Difficult to use for isomorphic apps that render the initial template on the server in a performant way. Non issue for enterprise apps.
Con Explicit configuration
Users will usually need to specify stuff that is very obvious (template location, providers etc. ).
Con Two-way data binding is often considered an anti-pattern
Two-way data-binding means that a HTML element in the view and an Angular model are binded, and when one of them is changed so is the other. One-way data-binding for example does not change the model when the HTML element is changed.
This is a rather controversial subject and many developers consider two-way data binding an anti-pattern and something that is useless in complex applications because it's very easy to create complex situations by using it and being unable to debug them easily or understand what's happening by just looking at the code.
Con Sencha CMD is bloated and frustrating to work with
To do any meaningful development, you are stuck with CMD. There is a gulp task that will handle the JS concatenation, but there is nothing outside of CMD that can handle theming in their ecosystem.
In addition, CMD is based on Java, and is very heavy to run (600MB+ on Windows 10 to watch for changes in the application and recompile).
Con Sencha CMD (their CLI) is under documented, and out of date
Their latest release of CMD changed some configuration locations, but the documentation was not updated to reflect this. There is no reference guide on the json configuration files, other than the (unfortunate use of) comments in the generated json files.
Con They use proprietary extensions to SASS, making it incompatible with anything but their Fashion processor
On the plus side, you do not have to install ruby alongside CMD for more recent versions of ExtJS. However, their Fashion processor seems to only be available through CMD.
Con Too often breaking changes between versions. They have little concept of backwards compatibility
Compounded by the fact that there are now two "toolkits" in the same "version" of ExtJS, with certain components not existing in one vs the other.
Con The IDE tools are not sold separately - you must purchase the appropriate license pack
You get all the IDE plugins, even if you only need one. They should offer sell them individually, or continue to bundle them with a dev license pack.
Con Difficult to integrate with 3rd party software
Any third party library you wish to include has to be wrapped in some sort of component adapter. You have to do a lot of tweaking to get the build process right if you want the 3rd party lib to be bundled into your application in the right order.
Con Can be expensive
The framework is a commercial package, and the recent decision to start with a minimum of 5 users may rule out smaller developer teams or startups. Recently, they have started a program that allow essentially what are contractors to purchase single licenses, but not individual, independent developers.