Sencha / ExtJS Rant

July 29, 2010


Decided to start ranting about things as I become more of a grumpy old man!
I am not an expert in extjs but have a working competance.

  • It is really slow to develop with.
  • Memorizing apis and setting keys on objects is dull and leads to messy code.
  • The templating system is dirty.
  • HTML in javascript is bad.
  • Not SEO friendly.
  • CSS is clumsy and ugly, just like the rendered html. (You essentially have an empty html document which ExtJs writes to.)
  • When you get an error or problem it is common to see the ‘white screen of death’ with accompanying cryptic error messages.
  • Testing seems non existant and its really just a method of apple-r / ctrl-f5 and pray.

Mobile Web Development

  • Mobile web development is mainly using the advanced nature of webkit CSS3, built-in hardware accelerated animations and using touch events rather than click events.
  • Design for the mobile web is a knowledge of what webkit gives you and the ability to work with small screens effectively.
  • Mimicking native applications is not the way forward. Look at gmail for iphone as an example of how good custom approaches can be.
  • Writing web applications for the mobile web should harness the advantages of a web based approach, not shoehorn a native approach into a monolithic javascript object.

These advantages include:

  • Writing HTML and CSS by hand. (lets get semantic man!)
  • Unobtrusive javascript. – Javascript is great, unobtrusive javascript is amazing.
  • Generating HTML with your favourite web framework (rails, django, symphony). This is powerful but also you need to think about html manifests and caching to not affect performance on shaky connections. If you shift paradigm and think of the web framework as an html generator / ajax interface this helps. (helped me)
  • Knowledge of the fancy new functionality that webkit browsers provide is the main new skill required.
  • Keeping a lot of your business logic in a web framework allows for easy testing using mature tools.