I want it to be small
I want it to be fast
I want it to be extensible
I want good documentation and/or community support
I want good/easy AJAX support
I want it to be asp.net-friendly
I also want it to be testable (I am using TDD for this project/book)
Open Source would be nice but not required
What are my options?
This is a shortlist but if you want a more exhaustive, read this. I only picked these, for the simple reasons that I have heard of them and are somewhat known by the community.
3 days later
It’s been 3 days since I started this post and I have spent all that time playing around with these libraries… I have gone back and forth in my opinion on which library to use. I love jQuery’s selectors, ease of use and community support. Porototype is also very popular and somewhat similar to jQuery; but I would take jQuery over Prototype for the simple reason that I like jQuery. YUI (Yahoo! UI) library is beautiful looking and very comprehensive.
- Ease to learn and use
- Beautiful syntax (the least typing)
- Great community support and lots of fans
- Decent Documentation
- I already own the book
- QUnit test framework (http://docs.jquery.com/QUnit)
- UI isn’t that great
- Library is not as full-featured without plugins
- Plugins are somewhat inconsistent in quality depending on the author
- Good documentation
- Good community support
- Lots of books
- Great UI with the add-on script.aculo.us (http://script.aculo.us/)
- Couldn’t find a testing framework (but I didn’t look too hard)
- For some purely emotional reason, I prefer jQuery
- Great UI components and styles
- The best documented library out there, hands down.
- Distributed hosting of JS files – the script files will be downloaded from Yahoo server, so when my site becomes a mega-hit, it will scale better.
- Great test framework and test runner – check these demos
- The most complete library
- PDF cheat sheets for every component
- Very verbose – not as elegant as jQuery, but that’s not too hard to fix e.g. I can assign YAHOO.util.Event to a variable $E and use $E as the shorthand.
I got tired of all the research and decided to wrap it up, so I glanced over Microsoft AJAX and Dojo and realized that there isn’t enough there to justify more research.