The Nobel laureate and author Isaac Bashevis Singer tells an anecdote about his early days in America and his first encounter with an American style cafeteria. He saw lots of people walking around with trays of food but none of them paid him any attention. He thought that this must be the world’s most devilish restaurant, full of waiters but none willing to seat him.
The current world of javascript libraries seems like that sometimes. New libraries pop up all the time and the ones you might have used a few months ago have become obsolete while you had your back turned. Additionally you have to find a way to pick through the dim sum cart of libraries to find the complete set you want to consume.
But maybe dim sum cart is also a poor metaphor since you can get in trouble that way, trying to combine things that do the same thing like knockout and backbone, or angular and asp.net mvc (<—that was a joke! but not really). It’s actually more like a prix fixe menu where you pick one item from the list of appetizers, one from the main courses and finally one from deserts.
This may seem a lot like the problem of the firehose of technology but there is a difference and a silver lining. It used to be that if you didn’t jump on a technology when it first came out (and there was a bit of a gamble to this, as witnessed by the devs who jumped on Silverlight – mea culpa) you would just fall behind and have a very hard time ever becoming an expert. In the contemporary web dev climate, you can actually wait a little longer and that library you never got around to learning will just disappear.
Even better, if a library has already been out for a few months, you can simply strategically ignore it and pick the one that came out last week. The impostor syndrome epidemic (seriously, it’s like a nightmare version of Spartacus with everyone coming forward and insisting they feel like a phony – man up, dawg) goes away since anyone, even the retiring Visual Cobol developer, can become an expert living on the bleeding edge with just a little bit of Adderall assisted concentration. True, it also means each of us is now competing with precocious 16 year olds for salaries, but such is the way of things.
Obviously we can take for granted that we are using JSON rather than XML for transport, and REST rather than SOAP for calls. XML and SOAP are like going to a restaurant and finding that the chef is still adding fried eggs or kale to his dishes – or even foam of asparagus.
Just choose one item from column A, then another from column B, and so on. I can’t give you any advice – who has time to actually evaluate these libraries before they become obsolete. You’ll have to just do a google search like everyone else and see what Jim-Bob or cyberdev2000 thinks about it – kindof like relying on Yelp to plck a restaurant. Arrows below indicate provenance.
Appetizers (javscript libraries):
jquery
prototype
Corso Secundo (visual effects):
jquery ui – – -> jquery
bootstrap – – -> jquery
script.aculo.us – -> prototype
Soups and Salads (utility libraries):
underscore
lazy.js
Lo-Dash – -> underscore
Amuse Bouche (templating):
{{mustache}}
handlebars.js -> {{mustache}}
Main Courses (model binding frameworks):
angularjs
backbone.js -> underscore
knockout.js
ember.js -> handlebars.js
marionette.js -> backbone.js
CanJs
Wine Pairings (network libraries):
node.js
edge.js -> node.js
Go
Sides:
CoffeeScript
bower -> node.js
Desserts (polyfills):
modernizr
Mozilla Brick
polymer
Actually, I can help a little. If you ask today’s waiter to surprise you (and we’re talking July of 2014 here), he’d probably bring you Jquery, Lo-Dash, Angularjs, Go, bower, modernizr. YMMV.