JavaScript as a real language

Saturday 21 January 2006

My new job will take me much further into JavaScript than I have gone in the past, even though I am not the JavaScript guy. I mentioned some time ago that JavaScript is underestimated, but I still have not learned (much less internalized) all of those lessons.

Alex Russell gives some fundamental principles of JavaScript (which he erroneously calls idioms) which would go a long way toward modernizing my approach to the language.

These days there are many powerful JavaScript libraries available. They are great either as a toolkit to use in web apps, or as advanced textbooks in how JavaScript can be used. Here’s a sampling:

  • prototype provides an AJAX framework and lots of other JavaScript utilities. It is often used as a foundation by other libraries in this list.
  • Behaviour lets you add JavaScript handlers to elements using CSS syntax rather than onClick attributes.
  • script.aculo.us provides lots of cool functionality like visual effects, autocompletion, and drag and drop.
  • Rico provides AJAX, visual effects, and drag and drop.
  • Dojo is a large library providing many features, enough that it is available in different subsets (“Editions”). Included are AJAX, visual effects, and rich text editing.
  • jQuery provides CSS and XPath selectors for accessing elements, among other tools.

For a more complete list, check out Saddam Azad’s JavaScript libraries roundup.

Finally, if you aren’t quite ready to take on a whole library but want to get started using cooler functions, or at least understanding what all the excitement is about, Dustin Diaz has a list of the top 10 custom JavaScript functions of all time.

Comments

[gravatar]

Ned, you always do a great service by aggregating info, and this one big winner. I think you are going to be having some fun in your new gig...

[gravatar]

A few more great Javascript resources are the writings of Douglas Crockford, here: http://www.crockford.com/javascript/

"JavaScript: The Wrrrld's Most Misunderstood Programming Language" and "The Little JavaScripter" and a bunch more stuff.

[gravatar]

Any reason you didn't mention MochiKit (http://www.mochikit.com/)? Given that it's pitched as a toolset that makes working with js more like working with python, I would think it might be of interest. I haven't tried to use it for anything yet, but the screencast makes it look pretty slick.

[gravatar]

I also vote for MochiKit. I've used it in a number of projects, and its clean, simple design makes most of my JS tasks very nice.

[gravatar]

There is a reason I didn't mention MochiKit: My head was swimming from all the candidates out there, and I overlooked it. I haven't done a serious analysis of any of these. Thanks for mentioning MochiKit.

[gravatar]

Personally, I've become a gigantic fan of MochiKit. It doesn't have quite the visual flair of the other libraries yet, but it's working from the language level on up. Prototype and a few others do some things that I don't quite like, such as adding methods to the Object.prototype, which pollutes every associative array I try to make. Either way, it's good times for JavaScript

[gravatar]

I�ve tried to simplify the creation of ajax style applications with my YAJAF! javascript library/Ajax framework. I think I�ve come up with a way to build on the tacit knowledge of GUI programmers, creating an extremely flexible library/framework, and making it all very �natural� to use for programmers of traditional object oriented languages. I haven�t released it yet, and I�m trying to see if there�s any interest in doing so. I'm looking for comments to try and gauge interest. Anyone? Bueller?

[gravatar]

Lets not forget about the browser compatibility issues of these packages. Edge surfing code written very close to one DOM or another is swell, but may hamstring your user. MSIE 7 will rock that rocking boat further.

[gravatar]

I don't know how long term this project is, but the JSAN is progressing nicely. It hopes to be to JavaScript what CPAN is to Perl. http://www.openjsan.org/

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
URLs auto-link and some tags are allowed: <a><b><i><p><br><pre>.