These libraries share an ‘almost perfect’ quality of being compact, well designed, and I wouldn’t start a large project without them.
jQuery The DOM manipulation library.
Underscore.js Just a clean set of functions for manipulating Arrays, Objects and some other general things that feel like an extension of the language. The kind of stuff you need do all the time. It’s amazing how much more compact and readable your code gets once you get used to using functions like _.pluck(), _.filter(), _.defaults(), _.extend(), _.pick(), I could go on…
Async.js Like underscore it’s very simple, but this one is focussed on cleaning up asynchronous program flow.
Backbone.js Compact library for models, views, syncing to a REST API, and routing. Stuff that almost any web page needs and done with a very lightweight implementation.
RequireJS Probably not as neat as the other four, but dependency management that works in the browser and nodejs, supports different directory structures, code which wasn’t written as an AMD module, and all sorts of other configurations is bound to get a little messy. (e.g currently the recommended way to use it with jQuery is to use the combined require-jquery.js file, hmmm) Anyway, once set up this handles everything elegantly making large projects manageable, and the r.js optimiser makes deployment super simple.