jQuery.
Its not sexy, but it gets the job done for pretty much everyone.
Prototype.js seemed to be targeting the problem of providing a familiar class system, standardizing some functional features, and some utility functions. It was something else, and I loved experimenting with it and reading the source, but ultimately, I think fewer people were finding this to be their pain point with the language or that using it made them significantly more productive.
Of course, considering the fact that they seem to solve different problems, it may be an interesting question why they were fighting for mindshare in the same space.
Maybe I just didn't understand it well enough.
You do have a good point though
Your thing could use some tests if you hope for people to trust it :)
I make GoJS, a HTML canvas-based diagramming library with all sorts of useful features. Node and link concepts (with data binding, templating), layouts, an undo manager, lots of customizable tools, drag and drop/cut and paste.
In other words, a very rich set of diagramming features atop HTML5 canvas.
I think its cool, because it took two years of canvas tomfoolery to get working well, and I think its much faster than similar diagramming libraries for canvas out right now. A lot of technically interesting stuff was encountered while making it, but I haven't had the time to write about my collected intricacies yet.
Or straight to samples:
http://gojs.net/beta/samples/flowchart.html
Firefox warning[1] for that specific sample though. I need to change the default sample this week.
[1] Super frustrating! The new IonMonkey JavaScript engine crashes under very certain conditions that are met during my link avoidsNodes algorithm. This means that Firefox 18 and 19 (but not 17 and 20) will crash on the Flowchart sample, because the link routing is set to use avoidsNodes. It's unfortunate but even though they're aware of the bug they aren't going to bother fixing it for FF19.
https://bugzilla.mozilla.org/show_bug.cgi?id=830063
~~~
By the way, if there are other canvas library authors out there who have had interesting (or downright weird) issues with various canvas implementations, I'd love to hear from you!
PouchDB is a full reimplementation of CouchDB inside the browser (using browser storage), you can build applications that work offline then sync your data with 'the cloud'
Even though it's not "cool" in the sense that it's very low level and doesn't do fancy UI stuff, my asynchronous code has become significantly cleaner and easier to maintain through using promises rather than having callback pyramids. The ability to wait for a number of promises to resolve before firing the next makes life so much easier too.
For example, you can easily condense tens of lines of event code into a single `event = yield document.next("click")`
I bet a bunch of you actually searched for that on google. What's sad is that is probably the name of some obscure testing library. What have we come to...?
https://github.com/kennethrapp/broccoli-js
but it's honestly terrible and even mentioning it in this thread is a terrible thing to do. I'm going to go think about what i've done now, over in the corner, there.
It's not the coolest, but I think it's the coolest selector engine. I'm also totally biased.
https://github.com/brownplt/flapjax/
http://cs.brown.edu/~sk/Publications/Papers/Published/mgbcgb...
Amazingly, work on Flapjax dates all the way back to 2006! Let that sink in ... the point is that it was way ahead of its time, and with all due respect to bacon.js, I think Flapjax is still in in a league of its own with respect to how it's implemented.
I studied the internals for months back in 2010, and that learning experience was a huge catalyst in pushing me toward functional programming, Clojure and ClojureScript.
The reason Flapjax never quite caught on was in part, I think, that it was so ahead of its time. And also that its internals, while well engineered, are much harder to understand than those of jQuery and other popular libraries. It's harder to use something truly effectively if you can't quite wrap your head around how it works, and understanding Flapjax certainly takes dedication.
Speaking of data tables, I wrote a little function to make table headers sticky so they stay at the top of the viewport as you scroll down a large table. https://github.com/kingkool68/stickyHeader No options, just include on the page, add a class of stickyHeader on the table and you're done.
[1] http://badassjs.com/post/43158184752/qt-gui-toolkit-ported-t...
http://angularjs.org/ Angular UI is amazing http://angular-ui.github.com/ And Angular for Bootstrap is also amazing http://angular-ui.github.com/bootstrap/
I'm not a great programmer, so that's what excites me. It's flexible enough that as you get better as a programmer, you can plug that right in.
And that's what I think is cool.
Github repo: https://github.com/mrdoob/three.js/
Examples: http://mrdoob.github.com/three.js/
It breaks down large frameworks like jQuery, Underscore, Backbone, Twitter Bootstrap, etc into small, reusable, and composable micro libraries. There are UI elements like tool tips and modals, wonderful and tiny DOM manipulation tools, well documented AJAX libraries, and more low-level functional and control-flow related tools. It's really amazing.
It's by TJ Holowaychuk too, who is huge in the node community (Express, Jade, Mocha, Stylus, Connect, and many others).
http://280north.com http://www.cappuccino-project.org http://arstechnica.com/apple/2008/06/cocoa-on-the-web-280-no...
Non direct link (to plug my own site with lots of other similar stuff) http://pineapple.io/resources/ace-high-performance-embeddabl...
direct link http://ace.ajax.org/
Also if you like Backbone.js, don't miss Knockback.js (http://kmalakoff.github.com/knockback/). Now you have observable (view)models and collections. Definitely cool.
Just instantiate a model with an endpoint and an ID and Backbone will do all your syncing for you. You can have views listen for changes to the models and update automatically. You can add easy support for client-side navigation via push state.
Backbone takes tedious tasks and makes them fun. Highly, highly recommended.
https://github.com/goatslacker/lz
Why I think it's cool? Well it's really fast, and it's lazy which allows you to work with really big arrays. Plus it's a really tiny library providing you with a streamlined set of APIs for working with lists (similar to array.js/Enumerable)
If you're working with smaller lists it's probably best to go the lodash route, but if you want it to be lazy then I believe lz is the right tool for the job.
/shameless plug
It also supports exporting JavaScript keyframes to CSS3 @keyframes, as demonstrated with Stylie: http://jeremyckahn.github.com/stylie/
Anyway, I use this site as a quick reference to see what is new in JS world. www.functionn.in The author seems to be pretty meticulous in his updates, so there's a lot of interesting libraries. Seems like a labour of love for him. (P.S: Thanks, Hirvesh)
There's also Hakim who comes up with some interesting stuff from time to time www.hakim.se
Here's another that came up on radar lately -- http://soulwire.github.com/Makisu/
Subscribe to the smashing letter magazine's newsletters for a periodic stream of latest "cool" into your Inbox.
Hope that helps.
From the site
"Sugar is a Javascript library that extends native objects with helpful methods. It is designed to be intuitive, unobtrusive, and let you do more with less code."
An obvious use could be as a library building tool. i.e. All the macros could be restricted to the internal methods used to construct the library DSL. All the public methods could look like standard js, and the library users would be none the wiser to the magic used internally to make the library construction more efficient.
For example https://starthq.com is using about 35MB of RAM and is easy to debug despite some pretty complex business logic around generating site thumbnails.
A 5.5kb javascript date library for parsing, validating, manipulating, and formatting dates