I’ve used both Dojo and ExtJS/Sencha extensively in my professional work. I’ve found they both have their uses. Find my reasons for choosing one toolkit over the other below.
- Once mastered the layout system for widgets works in almost all situations I’ve encountered
- Works well in a multi-developer environment where all developers are Dojo centric
- Very liberal licensing
- Widgets are bad ass. For instant eye candy this is the the framework of choice
- A large set of user developer extensions that are distributed with the code as well as easily added
- An intuitive process for adding extras to widgets (toolbars, button bars, etc)
- The documentation is excellent. Example abound and the docs are linked directly to the source so seeing what exactly is going on is easy to do.
- A high price for initial ramp up.
- The widget lifecycle is a tricky beast that takes a lot of time living with it in order to fully grasp a lot of the gotchas associated with developing your own widgets
- A weak set of widgets/themes out of the box
- The documentation sucks and google is always out of sync with the latest. They made an effort by offering tutorials with dojo 1.6 that is by far better then any available previously, but it’s still lacking.
- The code documentation style is outdated and doesn’t produce easily navigable docs
- When venturing outside the supplied functionality is cumbersome .
- The use and encouragement of anonymous functions is rampant in the code. It results in code that isn’t overly reusable or testable.
- The structure of widgets makes it difficult to following standards software patterns. Splitting out into an MVC pattern doesn’t really follow what is done in the general code base.
- Restrictive licensing. Basically if you’re going to sell a product containing ExtJS code you will need to buy the license.
The Bottom line:
Times to use Dojo:
- Teams of more then three people working on the codebase.
- Application will contain a lot of non-widget code
Times to use Sencha:
- Small teams
- Looking for a quick path to a beautiful application>