In order to do this in an effective way I have spent quite some time studying and researching about this language and the tools available for it.
- JQuery: I couldn't not list it as first. This is the library that can turn boring and time consuming JS coding into pure fun!
- JQuery UI: Widget, animations, drag & drop and...extremely easy to use
- Themeroller: it is actually a sub-project of JQuery UI. In a few minutes you can get a nice look & feel all over your app with the possibility to completely change it by just replacing one file!!!
- Base.js: this script allows you to approach class inheritance in JS like you would in most of the languages you already know. It extremely simplifies class extension (with the extend() function) and the invocation of the parent implementation for an overridden method (with the base() function)
- JSLint: code analyzer. Before using it be aware "JSLint may hurt your feelings" :)
- JSMin: filters comments and unnecessary whitespace from your JS source. Reducing the size of the file, download time will be shorter...remember to keep a copy of the original source otherwise you will end up with something unreadable. Like JSLint it is also a creation of the JS Guru Douglas Crockford.
- QUnit: Any development stack needs a good unit testing tool and QUnit definitively is
- JS Reference API: I find this Java-like API reference documentation very handy and very easy to navigate