- Does it do what you need it to do?
- How flexible and extensible is it?
- What is the cost to the end user?
- Is the documentation adequate?
The first point of consideration for any library is whether or not it will help you accomplish your requirements. The library may have any number of components built in that either accomplish what you need or give you a great running start. It is unlikely that any existing extensions do exactly what you need without adjustments to the HTML, CSS or the script itself. The more extensible the library, the greater the potential you have to match what you initially envisioned.
It is often a difficult decision to select a framework that is only as “heavy” as it needs to be to accomplish your requirements while still making sure that your code is “future proof.” Ideally, you want a framework that will allow you to do the really amazing things you have yet to dream up.
The nice thing is that many of these frameworks allow you to build a custom package by selecting the individual components you need at any given time. If you need additional components, you have the ability to export a new custom package that matches your new requirements. Because of this, it is highly recommended that customized elements are created external to the base library so that no code is lost when updating the core library.
The best libraries are fully documented and have a large support community and useful forums that can help you out in a pinch. Without support, a great library can quickly become a huge frustration point when things don’t work as you expect.
Here are some of the top libraries:
“HTML enhanced for web apps!”
“Prototype takes the complexity out of client-side web programming. Built to solve real-world problems, it adds useful extensions to the browser scripting environment and provides elegant APIs around the clumsy interfaces of Ajax and the Document Object Model.”
* The terms library and framework are often used interchangeably by developers. There is, however, a basic difference between the two. See Martin Fowler's article on Inversion of Control.