Mad libs
There is no doubt that JavaScript libraries have changed the way we work.
There is no doubt that jQuery and other Javascript libraries (such as the less popular MooTools) have changed the way that the web-based user interfaces are constructed. They have made client-side engineering (once a term I never heard) possible. They have removed the need to address differences in the document object model and holes in the imperfect implementations some browsers (cough-IE!) employ. They have made event handling much simpler.
For all those contributions, Javascript libraries like jQuery are limited. Take a look around the web at some of the user interfaces that have been built using jQuery. A good example is the Cover Flow interface. For me, Cover Flow is of questionable use. Apple introduced Cover Flow as an view in the MacOS Finder quite a while ago (and later on the iOS devices), but I have never used it. However, it is a fetching bit of eye-candy, and there seems to have been quite an interest in duplicating this interface on the web. Perform a Google Search for “javascript cover flow” and you’ll see what I mean. I found no less than 6 different implementations of the Cover Flow interface in Javascript, mostly making use of jQuery. And they’re all terrible.
If there’s one thing that jQuery really needs help with, it’s with effects. Heck, you still cannot animate simple things like colors. That’s a glaring oversight in what is otherwise a very complete package of tools. Granted, there is a lot of work being done with jQuery. Many developers have created plug-ins or add-ons or other widgets using jQuery as a base, and many of them are quite useful. But at some point you really have to draw the line between building a UI that is simple and effective and building an online experience that requires some high-end animation. For the latter, you need Adobe Flash.
Or do you? Enter UIZE, a JavaScript framework I had never heard of until one of my coworkers suggested it as a possible solution to an interesting problem. A client came to use with a request for a microsite. This microsite will be highly interactive, with animated transitions, an interactive demo, video presentations… you know, the usual. The example websites we were provided as the basis for their thinking were all Flash-based websites. So, of course, we went about drafting a proposal for a Flash-based website. Then came this request: “we want to be able to display the site on an iPad.” I imagine I’m not the only developer to hear this request recently. We’re all going to be hearing it more often in the future.
Ultimately, my coworker and I determined that we could achieve everything the client wanted to do, with the exception of really sophisticated vector animation, with a combination of video and dynamic HTML powered by a combination of jQuery and UIZE.
UIZE (pronounced “U-ize”) is a bit different from what I think of as a JavaScript library. This is why I am making the distinction between libraries and frameworks. UIZE looks nothing like jQuery. It is, in fact, huge. The full inventory of UIZE framework files is over 4 MB in size, although the customary page load is relatively minor. Whereas jQuery provides tools for handling many aspects of the DOM and element style, UIZE is very specific. It’s built for creating animation and interaction, and it’s very very good. Take a look for yourself at the many UIZE examples and you’ll get a sense of what this framework is capable of providing.
There are a few caveats to using UIZE. First, and again, it is very specific. This is not for general client-side engineering. Where jQuery works as an extension of the JavaScript language, UIZE is more like a set of black boxes that generate high quality effects and interactions for particular cases. Or, as I described to my coworker, UIZE is voodoo. Second, and because it’s voodoo, it takes a while to understand what UIZE does and how it works. Contributing to this difficulty is the documentation. While I often consider jQuery to be the standard for having excellent docs, the UIZE documentation is not provided in a friendly format, has holes, and lacks examples.
Fortunately, UIZE “does not extend native objects”, meaning UIZE and jQuery can coexist peacefully in the same web page. And, like jQuery, UIZE is open source, free to use, and (most amazingly) supports mobile devices. All of the UIZE examples work on an iPhone. This one advantage makes UIZE worth the effort to understand and implement.
This is an great time for client-side engineering on the web. Javascript libraries and frameworks have really given us the power to create rich user experiences without Flash. As Flash moves away from simple effects and becomes a platform for high-end animation and application development, resources like jQuery and UIZE bring us back to creating websites that don’t use Flash as a crutch. That makes them more searchable, more accessible, and allows developers to easily support more devices.