TL;DR: OxJS
is awesome — see it in action!
OxJS
(pronounced oh-ex-jay-ess) is a comprehensive JavaScript library, originally developed for the media archive platform pan.do/ra. While it still has bugs, holes, design errors and lots of cruft, its good parts may already be of interest to a wider audience.
The core of OxJS
is Ox.js
, a general-purpose utility library. It embraces functional programming, supports modules, provides lots of tools to deal with dates, has all the missing math methods (plus some more for geographic coordinates) and helper functions for strings and regular expressions, fixes type detection and equality testing, includes utilities to handle HTML, the DOM and remote requests, can tokenize and minify JavaScript, comes with its own documentation format, including inline tests, and does many other cool things.
Then there are modules, most notably Ox.UI
, which provides a simple but flexible model to write complex, desktop-class web applications for HTML5-compliant browsers. Ox.UI
has tons of highly customizable and fully themable widgets: all the form elements you ever wanted, menus that actually work, resizable panels and dialogs, grid and table views that can hold millions of items, maps and calendars done right, a feature-rich video player, and lots more. These widgets communicate via built-in events, they can be extended or recombined to form new widgets, and, above all, they allow you to focus on your application and stop arguing with the DOM. And if you need to, each widget comes with the exact same API as a jQuery-wrapped DOM element. But Ox.UI
also provides the logic to bring these pieces together, including custom events, keyboard focus, remote API discovery and client-side URL handling. As long as your backend speaks JSON, it doesn't have to speak any HTML whatsoever.
Among the other modules, Ox.Unicode
helps with converting or sorting unicode strings, Ox.Image
can do basic image manipulation, including steganography, and Ox.Geo
comes into play if you're dealing with geographical data, or want to use a really nice set of flag icons.
Finally, there is a small but growing number of articles and tutorials, and extensive (albeit still incomplete) documentation. If you want to get involved, file bugs or submit patches, please head over to the development section. Your feedback is welcome!