# Awesome JavaScript A curated list of amazingly awesome browser-side JavaScript libraries, resources and shiny things. * [Awesome JavaScript](#awesome-javascript) * [Package Managers](#package-managers) * [Loaders](#loaders) * [Testing Frameworks](#testing-frameworks) * [MVC Frameworks](#mvc-frameworks) * [Templating Engines](#templating-engines) * [Data Visualization](#data-visualization) * [Editors](#editors) * Utilities * [Functional Programming](#functional-programming) * [Date](#date) * [String](#string) * Storage * [Color](#color) * [I18n And L10n](#i18n-and-l10n) * Selector * Class * Event * Control Flow * UI * [Loading Status](#loading-status) * Validation * Keyboard * Tours And Guides * Notifications * Sliders * [Other Awesome Lists](#other-awesome-lists) ## Package Managers *Host the javascript libraries and provide tools for fetching and packaging them.* * [Bower](https://github.com/bower/bower) - A package manager for the web. * [component](https://github.com/component/component) - Client package management for building better web applications. * [spm](https://github.com/spmjs/spm) - Brand new static package manger. * [browserify](https://github.com/substack/node-browserify) - Browser-side require() the node.js way. * [jam](https://github.com/caolan/jam) - A package manager using a browser-focused and RequireJS compatible repository. * [yepnope.js](https://github.com/SlexAxton/yepnope.js) - An Asynchronous Conditional Resource Loader. * [jspm](https://github.com/jspm/jspm-cli) - Frictionless browser package management. * [Ender](https://github.com/ender-js/Ender) - The no-library library. * [volo](https://github.com/volojs/volo) - Create front end projects from templates, add dependencies, and automate the resulting projects. ## Loaders *Module or loading system for JavaScript.* * [RequireJS](https://github.com/jrburke/requirejs) - A file and module loader for JavaScript. * [SeaJS](https://github.com/seajs/seajs) - A Module Loader for the Web. * [HeadJS](https://github.com/headjs/headjs) - The only script in your HEAD. * [curl](https://github.com/cujojs/curl) - A small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts. * [lazyload](https://github.com/rgrove/lazyload/) - Tiny, dependency-free async JavaScript and CSS loader. * [script.js](https://github.com/ded/script.js) - Asyncronous JavaScript loader and dependency manager. ## Testing Frameworks * [mocha](https://github.com/visionmedia/mocha) - Simple, flexible, fun javascript test framework for node.js & the browser. * [jasmine](https://github.com/pivotal/jasmine) - DOM-less simple JavaScript testing framework. * [qunit](https://github.com/jquery/qunit) - An easy-to-use JavaScript Unit Testing framework. * [chai](https://github.com/chaijs/chai) - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework. * [Sinon.JS](https://github.com/cjohansen/Sinon.JS) - Test spies, stubs and mocks for JavaScript. * [expect.js](https://github.com/LearnBoost/expect.js) - Minimalistic BDD-style assertions for Node.JS and the browser. * [istanbul](https://github.com/gotwarlost/istanbul) - Yet another JS code coverage tool. * [JSCover](https://github.com/tntim96/JSCover) - JSCover is a tool that measures code coverage for JavaScript programs. * [phantomjs](https://github.com/ariya/phantomjs) - Scriptable Headless WebKit. * [slimerjs](https://github.com/laurentj/slimerjs) - A PhantomJS-like tool running Gecko. * [casperjs](https://github.com/n1k0/casperjs) - Navigation scripting & testing utility for PhantomJS and SlimerJS. * [zombie](https://github.com/assaf/zombie) - Insanely fast, full-stack, headless browser testing using node.js. * [totoro](https://github.com/totorojs/totoro) - A simple and stable cross-browser testing tool. * [karma](https://github.com/karma-runner/karma) - Spectacular Test Runner for JavaScript. * [jest](http://github.com/facebook/jest) - Painless Javascript Unit Testing. ## MVC Frameworks * [angular.js](https://github.com/angular/angular.js) - HTML enhanced for web apps. * [backbone](https://github.com/jashkenas/backbone) - Give your JS App some Backbone with Models, Views, Collections, and Events. * [ember.js](https://github.com/emberjs/ember.js) - A JavaScript framework for creating ambitious web applications. * [ractive](https://github.com/ractivejs/ractive) - Next-generation DOM manipulation. * [vue](https://github.com/yyx990803/vue) - Intuitive, fast & composable MVVM for building interactive interfaces. * [knockout](https://github.com/knockout/knockout) - Knockout makes it easier to create rich, responsive UIs with JavaScript. * [spine](https://github.com/spine/spine) - Lightweight MVC library for building JavaScript applications. * [canjs](https://github.com/bitovi/canjs) - Can do JS, better, faster, easier. ## Templating Engines *Templating engines allow you to perform string interpolation.* * [mustache.js](https://github.com/janl/mustache.js) - Minimal templating with {{mustaches}} in JavaScript. * [handlebars.js](https://github.com/wycats/handlebars.js/) - An extension to the Mustache templating language. * [hogan.js](https://github.com/twitter/hogan.js) - A compiler for the Mustache templating language. * [doT](https://github.com/olado/doT) - The fastest + concise javascript template engine for nodejs and browsers. * [dustjs](https://github.com/linkedin/dustjs/) - Asynchronous templates for the browser and node.js. * [eco](https://github.com/sstephenson/eco/) - Embedded CoffeeScript templates. * [JavaScript-Templates](https://github.com/blueimp/JavaScript-Templates) - < 1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies. * [t.js](https://github.com/jasonmoo/t.js) - A tiny javascript templating framework in ~400 bytes gzipped. ## Data Visualization *Data visualization tools for the web.* * [d3](https://github.com/mbostock/d3) - A JavaScript visualization library for HTML and SVG. * [Chart.js](https://github.com/nnnick/Chart.js) - Simple HTML5 Charts using the tag. * [paper.js](https://github.com/paperjs/paper.js) - The Swiss Army Knife of Vector Graphics Scripting – Scriptographer ported to JavaScript and the browser, using HTML5 Canvas. * [peity](https://github.com/benpickles/peity) - Progressive bar, line and pie charts. * [raphael](https://github.com/DmitryBaranovskiy/raphael) - JavaScript Vector Library. * [echarts](https://github.com/ecomfe/echarts) - Enterprise Charts. * [vis](https://github.com/almende/vis) - Dynamic, browser-based visualization library. * [two.js](https://github.com/jonobr1/two.js) - A renderer agnostic two-dimensional drawing api for the web. * [g.raphael](https://github.com/DmitryBaranovskiy/g.raphael) - Charts for Raphaël. * [sigma.js](https://github.com/jacomyal/sigma.js) - A JavaScript library dedicated to graph drawing. * [arbor](https://github.com/samizdatco/arbor) - A graph visualization library using web workers and jQuery. * [cubism](https://github.com/square/cubism) - A D3 plugin for visualizing time series. * [dc.js](https://github.com/dc-js/dc.js) - Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js * [vega](https://github.com/trifacta/vega) - A visualization grammar. * [envisionjs](https://github.com/HumbleSoftware/envisionjs) - Dynamic HTML5 visualization. * [rickshaw](https://github.com/shutterstock/rickshaw) - JavaScript toolkit for creating interactive real-time graphs. * [flot](https://github.com/flot/flot) - Attractive JavaScript charts for jQuery. * [morris.js](https://github.com/morrisjs/morris.js) - Pretty time-series line graphs. * [nvd3](https://github.com/novus/nvd3) - Build re-usable charts and chart components for d3.js * [svg.js](https://github.com/wout/svg.js) - A lightweight library for manipulating and animating SVG. * [heatmap.js](https://github.com/pa7/heatmap.js) - JavaScript Library for HTML5 canvas based heatmaps. * [jquery.sparkline](https://github.com/gwatts/jquery.sparkline) - A plugin for the jQuery javascript library to generate small sparkline charts directly in the browser. * [xCharts](https://github.com/tenxer/xCharts) - A D3-based library for building custom charts and graphs. * [trianglify](https://github.com/qrohlf/trianglify) - Low poly style background generator with d3.js * [d3-cloud](https://github.com/jasondavies/d3-cloud) - Create word clouds in JavaScript. * [d4](https://github.com/heavysixer/d4) - A friendly reusable charts DSL for D3. * [dimple.js](http://dimplejs.org) - Easy charts for business analytics powered by d3 There're also some great commercial libraries, like [amchart](http://www.amcharts.com/) and [highchart](http://www.highcharts.com/). ## Editors * [ace](https://github.com/ajaxorg/ace) - Ace (Ajax.org Cloud9 Editor). * [CodeMirror](https://github.com/marijnh/CodeMirror) - In-browser code editor. * [esprima](https://github.com/ariya/esprima) - ECMAScript parsing infrastructure for multipurpose analysis. * [quill](https://github.com/quilljs/quill) - A cross browser rich text editor with an API. * [medium-editor](https://github.com/daviferreira/medium-editor) - Medium.com WYSIWYG editor clone. * [pen](https://github.com/sofish/pen) - enjoy live editing (+markdown). * [jquery-notebook](https://github.com/raphaelcruzeiro/jquery-notebook) - A simple, clean and elegant text editor. Inspired by the awesomeness of Medium. * [bootstrap-wysiwyg](https://github.com/mindmup/bootstrap-wysiwyg) - Tiny bootstrap-compatible WISWYG rich text editor. * [ckeditor-releases](https://github.com/ckeditor/ckeditor-releases) - The best web text editor for everyone. * [editor](https://github.com/lepture/editor) - A markdown editor. still on development. * [EpicEditor](https://github.com/OscarGodson/EpicEditor) - An embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more. * [jsoneditor](https://github.com/josdejong/jsoneditor) - A web-based tool to view, edit and format JSON. ## Functional Programming *Functional programming libraries to extend JavaScript’s capabilities.* * [underscore](https://github.com/jashkenas/underscore) - JavaScript's utility _ belt. * [lodash](https://github.com/lodash/lodash) - A utility library delivering consistency, customization, performance, & extras. * [Sugar](https://github.com/andrewplummer/Sugar) - A Javascript library for working with native objects. * [lazy.js](https://github.com/dtao/lazy.js) - Like Underscore, but lazier. ## Date *Date Libraries.* * [moment](https://github.com/moment/moment) - Parse, validate, manipulate, and display dates in javascript. * [moment-timezone](https://github.com/moment/moment-timezone) - Timezone support for moment.js. * [jquery-timeago](https://github.com/rmm5t/jquery-timeago) - A jQuery plugin that makes it easy to support automatically updating fuzzy timestamps (e.g. "4 minutes ago"). * [timezone-js](https://github.com/mde/timezone-js) - Timezone-enabled JavaScript Date object. Uses Olson zoneinfo files for timezone data. ## String *String Libraries.* * [underscore.string](https://github.com/epeli/underscore.string) - String manipulation extensions for Underscore.js javascript library. * [string.js](https://github.com/jprichardson/string.js) - Extra JavaScript string methods. * [he](https://github.com/mathiasbynens/he) - A robust HTML entity encoder/decoder written in JavaScript. * [multiline](https://github.com/sindresorhus/multiline) - Multiline strings in JavaScript. * [query-string](https://github.com/sindresorhus/query-string) - Parse and stringify URL query strings. * [URI.js](https://github.com/medialize/URI.js/) - Javascript URL mutation library. * [jsurl](https://github.com/Mikhus/jsurl) - Lightweight URL manipulation with JavaScript. * [sprintf.js](https://github.com/alexei/sprintf.js) - A sprintf implementation. ## Color * [randomColor](https://github.com/davidmerfield/randomColor) - A color generator for JavaScript. * [chroma.js](https://github.com/gka/chroma.js) - JavaScript library for all kinds of color manipulations. * [color](https://github.com/harthur/color) - JavaScript color conversion and manipulation library. * [colors](https://github.com/mrmrs/colors) - Smarter defaults for colors on the web. ## I18n And L10n *Localization (i18n) and internationalization (l10n) JavaScript libraries.* ## Loading Status *Libraries for indicate load status.* * [NProgress](http://ricostacruz.com/nprogress/) - Slim progress bars for Ajax'y applications. * [Spin.js](https://github.com/fgnass/spin.js) - A spinning activity indicator. * [progress.js](https://github.com/usablica/progress.js) - Create and manage progress bar for every objects on the page. * [pace](https://github.com/HubSpot/pace) - Automatically add a progress bar to your site. * [topbar](https://github.com/buunguyen/topbar) - Tiny & beautiful site-wide progress indicator. * [nanobar](https://github.com/jacoborus/nanobar) - Very lighweight progress bars. No jQuery. * [PageLoadingEffects](https://github.com/codrops/PageLoadingEffects) - Modern ways of revealing new content using SVG animations. * [css-loaders](https://github.com/lukehaas/css-loaders) - A collection of loading spinners animated with CSS. Besides libraries, there're [Collection on Codepen](http://codepen.io/collection/HtAne/), and generators like [Ajaxload](http://www.ajaxload.info/), [Preloaders](http://preloaders.net/) and [CSSLoad](http://cssload.net/). # Other Awesome Lists Other amazingly awesome lists can be found in the [awesome-awesomeness](https://github.com/bayandin/awesome-awesomeness) list.