JavaScript

repo: sorrycc/awesome-javascript
category: Programming Languages related: React · Vue.js · Angular · Node.js · TypeScript


Awesome JavaScript Awesome

A collection of awesome browser-side JavaScript libraries, resources and shiny things.


Package Managers

Host the JavaScript libraries and provide tools for fetching and packaging them.

  • npm - npm is the package manager for JavaScript.
  • Bower - A package manager for the web.
  • component - Client package management for building better web applications.
  • spm - Brand new static package manager.
  • jam - A package manager using a browser-focused and RequireJS compatible repository.
  • jspm - Frictionless browser package management.
  • Ender - The no-library library.
  • volo - Create front end projects from templates, add dependencies, and automate the resulting projects.
  • Duo - Next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code quick and painless.
  • yarn - Fast, reliable, and secure dependency management.
  • pnpm - Fast, disk space efficient package manager.
  • bun - Bun is a fast JavaScript all-in-one toolkit.

Component Management

  • Bit - Create, find and reuse components (React, Angular, Node etc.) across applications.

Loaders

Module or loading system for JavaScript.

  • RequireJS - A file and module loader for JavaScript.
  • browserify - Browser-side require() the node.js way.
  • SeaJS - A Module Loader for the Web.
  • HeadJS - The only script in your HEAD.
  • lazyload - Tiny, dependency-free async JavaScript and CSS loader.
  • script.js - Asynchronous JavaScript loader and dependency manager.
  • systemjs - AMD, CJS & ES6 spec-compliant module loader.
  • LodJS - Module loader based on AMD.
  • ESL - Module loader browser first, support lazy define and AMD.
  • modulejs - Lightweight JavaScript module system.

Transpilers

Software that converts the modern JavaScript syntax into the older JavaScript syntax.

  • SWC - Extensible Rust-based platform for compilation.

Bundlers

  • webpack - Packs CommonJs/AMD modules for the browser.
  • Rollup - Next-generation ES6 module bundler.
  • Brunch - Fast front-end web app build tool with simple declarative config.
  • Parcel - Blazing fast, zero configuration web application bundler.
  • Microbundle - Zero-configuration bundler for tiny modules.
  • FuseBox - A bundler that does it right
  • Snowpack - A lightning-fast frontend build tool, designed for the modern web.
  • bundle - A quick online npm package size checker.
  • Vite - Next Generation Frontend Tooling.

Minimizers

  • Terser - parser, mangler and compressor toolkit for ES6+
  • Uglify - parser / mangler / compressor / beautifier toolkit

Type Checkers

  • TypeScript - A typed superset of JavaScript that compiles to plain JavaScript.
  • Flow.js - A static type checker for JavaScript from Facebook.
  • Hegel - A static type checker for JavaScript with a bias on type inference an strong type system.
  • TypL - the JavaScript Type Linter with a bias on type inference.
  • Hindley Milner Definitions - runtime type checking for JavaScript functions using Haskell-alike Hindley Milner type signatures.
  • Zod - TypeScript-first schema validation with built-in static type inference.
  • Yup - JavaScript schema builder and validator.

Testing Frameworks

Frameworks

  • mocha - Simple, flexible, fun JavaScript test framework for node.js & the browser.
  • jasmine - DOM-less simple JavaScript testing framework.
  • qunit - An easy-to-use JavaScript Unit Testing framework.
  • jest - Painless JavaScript Unit Testing.
  • prova - Node & Browser test runner based on Tape and Browserify
  • DalekJS - Automated cross browser functional testing with JavaScript
  • Protractor - Protractor is an end-to-end test framework for AngularJS applications.
  • tape - Tap-producing test harness for node and browsers.
  • TestCafe - Automated browser testing for the modern web development stack.
  • ava - 🚀 Futuristic JavaScript test runner
  • Cypress - Complete end-to-end testing framework for anything that runs in a browser and beyond.
  • WebdriverI/O - Next-gen browser and mobile automation test framework for Node.js
  • Suites - A unit-testing framework for backends working with inversion of control and dependency injection

Assertion

  • chai - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
  • Enzyme - Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output.
  • [react testing library](https://github.com/kentcdodds/react-testing-library) - Simple and complete React DOM testing utilities that encourage good testing practices.
  • Sinon.JS - Test spies, stubs, and mocks for JavaScript.
  • expect.js - Minimalistic BDD-style assertions for Node.JS and the browser.
  • proxyquire - Stub nodejs's require.
  • Supertest - A popular HTTP assertion library for testing REST APIs, often used with other testing frameworks like Mocha or Jest
  • Pocket Mocker - In-browser visual network mocking tool, supports fetch/XHR interception.

Coverage

  • istanbul - Yet another JS code coverage tool.
  • blanket - A simple code coverage library for JavaScript. Designed to be easy to install and use, for both browser and nodejs.
  • JSCover - JSCover is a tool that measures code coverage for JavaScript programs.

Runner

QA Tools

  • prettier - Prettier is an opinionated code formatter.
  • JSHint - JSHint is a tool that helps to detect errors and potential problems in your JavaScript code.
  • jscs - JavaScript Code Style checker.
  • jsfmt - For formatting, searching, and rewriting JavaScript.
  • jsinspect - Detect copy-pasted and structurally similar code.
  • buddy.js - Magic number detection for JavaScript.
  • ESLint - A fully pluggable tool for identifying and reporting on patterns in JavaScript.
  • JSLint - High-standards, strict & opinionated code quality tool, aiming to keep only good parts of the language.
  • JavaScript Standard Style - Opinionated, no-configuration style guide, style checker, and formatter
  • Pre-evaluate code at buildtime - Pre-evaluate your front end javascript code at build-time
  • JS-Beautifier - Npm cli and library to format JS code.
  • husky - Prevents bad git commit, git push and more.

MVC Frameworks and Libraries

  • angular.js - HTML enhanced for web apps. (deprecated)
  • angular - Angular is a development platform for building mobile and desktop web applications using Typescript/JavaScript and other languages.
  • aurelia - A JavaScript client framework for mobile, desktop and web.
  • backbone - Give your JS App some Backbone with Models, Views, Collections, and Events.
  • ember.js - A JavaScript framework for creating ambitious web applications.
  • meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-javascript web framework.
  • ractive - Next-generation DOM manipulation.
  • vue - Intuitive, fast & composable MVVM for building interactive interfaces.
  • svelte - Svelte is a new way to build web applications. It's a compiler that takes your declarative components and converts them into efficient JavaScript that surgically updates the DOM.
  • knockout - Knockout makes it easier to create rich, responsive UIs with JavaScript.
  • spine - Lightweight MVC library for building JavaScript applications.
  • espresso.js - A minimal JavaScript library for crafting user interfaces.
  • canjs - Can do JS, better, faster, easier.
  • react - A library for building user interfaces. It's declarative, efficient, and extremely flexible. Works with a Virtual DOM.
  • hyperapp - 1kb JavaScript library for building frontend applications.
  • preact - Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.
  • nativescript - Build truly native cross-platform iOS and Android apps with JavaScript.
  • react-native - A framework for building native apps with React.
  • riot - React-like library, but with very small size.
  • thorax - Strengthening your Backbone.
  • chaplin - An architecture for JavaScript applications using the Backbone.js library.
  • marionette - A composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications.
  • ripple - A tiny foundation for building reactive views.
  • rivets - Lightweight and powerful data binding + templating solution.
  • derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
  • way.js - Simple, lightweight, persistent two-way databinding.
  • mithril.js - Mithril is a client-side MVC framework (Light-weight, Robust, Fast).
  • jsblocks - jsblocks is better MV-ish framework.
  • feathers - A minimalist real-time JavaScript framework for tomorrow's apps.
  • Keo - Functional stateless React components with Shadow DOM support.
  • atvjs - Blazing fast Apple TV application development using pure JavaScript.
  • Alpine.js - offers you the reactive and declarative nature of big frameworks like Vue or React at a much lower cost.
  • inferno - 🔥 An extremely fast, React-like JavaScript library for building modern user interfaces.
  • FoalTS - Elegant and all-inclusive Node.JS framework for building web applications (TypeScript).
  • Lucia - 3kb library for tiny web apps.
  • Adonis - The Node.js Framework highly focused on developer ergonomics, stability and confidence.
  • GrapesJS - Free and Open source Web Builder Framework. Next generation tool for building templates without coding.
  • Rete.js - A modular framework for visual programming allows to create node based editor in browser.
  • litegraph.js - A graph node engine and editor similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D.
  • Drawflow - This allow you to create data flows easily and quickly.
  • Blockly - A library that adds a visual code editor to web and mobile apps by Google.
  • Million - <1kb compiler-focused virtual DOM. It's fast!
  • Whatsup - A frontend framework for chillout-mode development 🥤. JSX components on generators, fast mobx-like state management and exclusive cssx style system.
  • Remult - A CRUD framework for full-stack TypeScript.

Node-Powered CMS Frameworks

  • KeystoneJS - powerful CMS and web app framework.
  • Reaction Commerce - reactive CMS, real-time architecture and design.
  • Ghost - simple, powerful publishing platform.
  • Apostrophe - CMS with content editing and essential services.
  • We.js - framework for real time apps, sites or blogs.
  • Hatch.js - CMS platform with social features.
  • TaracotJS - fast and minimalist CMS based on Node.js.
  • Nodizecms - CMS for CoffeeScript lovers.
  • Cody - CMS with WSYWYG editor.
  • PencilBlue - CMS and blogging platform.
  • Strapi - Open source Node.js Headless CMS to easily build customisable APIs.
  • Factor - The Javascript CMS

Templating Engines

Templating engines allow you to perform string interpolation.

  • mustache.js - Minimal templating with {{mustaches}} in JavaScript.
  • handlebars.js - An extension to the Mustache templating language.
  • nunjucks - A rich and powerful templating language for JavaScript from Mozilla.
  • hogan.js - A compiler for the Mustache templating language.
  • doT - The fastest + concise JavaScript template engine for nodejs and browsers.
  • dustjs - Asynchronous templates for the browser and node.js.
  • eco - Embedded CoffeeScript templates.
  • JavaScript-Templates - < 1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies.
  • t.js - A tiny JavaScript templating framework in ~400 bytes gzipped.
  • Pug - Robust, elegant, feature rich template engine for nodejs. (formerly known as Jade)
  • EJS - Effective JavaScript templating.
  • xtemplate - eXtensible Template Engine lib for node and the browser
  • marko - A fast, lightweight, HTML-based templating engine for Node.js and the browser with async, streaming, custom tags and CommonJS modules as compiled output.
  • swig - (Archived) A simple, powerful, and extendable Node.js and browser-based JavaScript template engine.
  • hmpl - Server-oriented customizable templating for JavaScript.

Game Engines

Articles and Posts

Data Visualization

Data visualization tools for the web.

  • d3 - A JavaScript visualization library for HTML and SVG.
  • metrics-graphics - A library optimized for concise, principled data graphics and layouts.
  • three.js - JavaScript 3D library.
  • Chart.js - Simple HTML5 Charts using the <canvas> tag.
  • paper.js - The Swiss Army Knife of Vector Graphics Scripting – Scriptographer ported to JavaScript and the browser, using HTML5 Canvas.
  • fabric.js - JavaScript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser.
  • peity - Progressive <svg> bar, line and pie charts.
  • raphael - JavaScript Vector Library.
  • echarts - Enterprise Charts.
  • visjs - Multiple Libraries for dynamic, browser-based data visualization.
  • two.js - A renderer agnostic two-dimensional drawing api for the web.
  • g.raphael - Charts for Raphaël.
  • sigma.js - A JavaScript library dedicated to graph drawing.
  • arbor - A graph visualization library using web workers and jQuery.
  • cubism - A D3 plugin for visualizing time series.
  • dc.js - Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js
  • vega - A visualization grammar.
  • envisionjs - Dynamic HTML5 visualization.
  • rickshaw - JavaScript toolkit for creating interactive real-time graphs.
  • flot - Attractive JavaScript charts for jQuery.
  • morris.js - Pretty time-series line graphs.
  • nvd3 - Build re-usable charts and chart components for d3.js.
  • svg.js - A lightweight library for manipulating and animating SVG.
  • heatmap.js - JavaScript Library for HTML5 canvas based heatmaps.
  • jquery.sparkline - A plugin for the jQuery JavaScript library to generate small sparkline charts directly in the browser.
  • trianglify - Low poly style background generator with d3.js.
  • d3-cloud - Create word clouds in JavaScript.
  • d4 - A friendly reusable charts DSL for D3.
  • dimple.js - Easy charts for business analytics powered by d3.
  • chartist-js - Simple responsive charts.
  • epoch - A general purpose real-time charting library.
  • c3 - D3-based reusable chart library.
  • BabylonJS - A framework for building 3D games with HTML 5 and WebGL.
  • recharts - Redefined chart library built with React and D3.
  • GraphicsJS - A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology.
  • mxGraph - Diagramming library that enables interactive graph and charting applications to be quickly created that run natively in any major browser that is supported by its vendor.
  • Frappe Charts - GitHub-inspired simple and modern SVG charts for the web with zero dependencies.
  • Frappe Gantt - A simple, interactive, modern gantt chart library for the web.
  • G2 - A highly interactive data-driven visualization grammar for statistical charts.
  • G2Plot - An interactive and responsive charting library. Based on the grammar of graphics.
  • Cytoscape.js - A fully featured graph theory library.
  • cola.js - library for arranging your HTML5 documents and diagrams using constraint-based optimization techniques
  • jointjs - Diagramming library to create static diagrams or fully interactive diagramming tools.
  • vizzu - Library for animated data visualizations and data stories.
  • G6 - A graph visualization engine.
  • Infographic - A next-generation declarative infographic visualization engine.

There're also some great commercial libraries, like amchart, anychart, plotly, and lightning chart.

Timeline

Spreadsheet

  • HANDSONTABLE - Handsontable is a JavaScript/HTML5 Spreadsheet Library for Developers
  • Frappe Datatable - Frappe DataTable is a simple, modern and interactive datatable library for displaying tabular data.
  • Luckysheet - Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source.
  • Jspreadsheet CE - Jspreadsheet is a lightweight vanilla javascript plugin to create amazing web-based interactive tables and spreadsheets compatible with other spreadsheet software.
  • RevoGrid - RevoGrid is a fast, responsive excel like data grid library for modern web applications.

Editors

  • ace - Ace (Ajax.org Cloud9 Editor).
  • CodeMirror - In-browser code editor.
  • esprima - ECMAScript parsing infrastructure for multipurpose analysis.
  • quill - A cross browser rich text editor with an API.
  • medium-editor - Medium.com WYSIWYG editor clone.
  • pen - enjoy live editing (+markdown).
  • jquery-notebook - A simple, clean and elegant text editor. Inspired by the awesomeness of Medium.
  • bootstrap-wysiwyg - Tiny bootstrap-compatible WYSIWYG rich text editor.
  • ckeditor-releases - The best web text editor for everyone.
  • editor - A markdown editor. still on development.
  • EpicEditor - An embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more.
  • jsoneditor - A web-based tool to view, edit and format JSON.
  • vim.js - JavaScript port of Vim with a persistent ~/.vimrc.
  • Squire - HTML5 rich text editor.
  • TinyMCE - The JavaScript Rich Text editor.
  • trix - A rich text editor for everyday writing. By Basecamp.
  • Trumbowyg - A lightweight and amazing WYSIWYG JavaScript editor.
  • Draft.js - A React framework for building text editors.
  • bootstrap-wysihtml5 - Simple, beautiful wysiwyg editor
  • wysihtml5 - Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.
  • raptor-editor - Raptor, an HTML5 WYSIWYG content editor!
  • popline - Popline is an HTML5 Rich-Text-Editor Toolbar.
  • Summernote - Super simple WYSIWYG editor.
  • Everright-formEditor - A visual drag-and-drop low-code form editor

Documentation

  • DevDocs is an all-in-one API documentation reader with a fast, organized, and consistent interface.
  • docco is a quick-and-dirty, hundred-line-long, literate-programming-style documentation generator.
  • styledocco generates documentation and style guide documents from your stylesheets.
  • Ronn builds manuals. It converts simple, human readable textfiles to roff for terminal display, and also to HTML for the web.
  • dox is a JavaScript documentation generator written with node. Dox no longer generates an opinionated structure or style for your docs, it simply gives you a JSON representation, allowing you to use markdown and JSDoc-style tags.
  • jsdox is a JSDoc3 to Markdown documentation generator.
  • ESDoc is a good documentation generator for JavaScript.
  • YUIDoc is a Node.js application that generates API documentation from comments in source, using a syntax similar to tools like Javadoc and Doxygen.
  • coddoc is a jsdoc parsing library. Coddoc is different in that it is easily extensible by allowing users to add tag and code parsers through the use of coddoc.addTagHandler and coddoc.addCodeHandler. coddoc also parses source code to be used in APIs.
  • sphinx a tool that makes it easy to create intelligent and beautiful documentation
  • Beautiful docs is a documentation viewer based on markdown files.
  • documentation.js - API documentation generator with support for ES2015+ and flow annotation.
  • jsduck - API documentation generator made for Sencha JavaScript frameworks, but can be used for other frameworks too.
  • codecrumbs is a visual tool for learning and documenting a codebase by putting breadcrumbs in source code.

Files

Libraries for working with files.

  • Papa Parse - A powerful CSV library that supports parsing CSV files/strings and also exporting to CSV.
  • jBinary - High-level I/O (loading, parsing, manipulating, serializing, saving) for binary files with declarative syntax for describing file types and data structures.
  • diff2html - Git diff output parser and pretty HTML generator.
  • jsPDF - JavaScript PDF generation.
  • PDF.js - PDF Reader in JavaScript.

Functional Programming

Functional programming libraries to extend JavaScript’s capabilities.

  • underscore - JavaScript's utility _ belt.
  • lodash - A utility library delivering consistency, customization, performance, & extras.
  • Sugar - A JavaScript library for working with native objects.
  • lazy.js - Like Underscore, but lazier.
  • ramda - A practical functional library for JavaScript programmers.
  • mout - Modular JavaScript Utilities.
  • preludejs - Hardcore Functional Programming for JavaScript.
  • rambda - Faster and smaller alternative to Ramda.
  • fxts - Lazy evaluation and concurrency.
  • wild-wild-path - Object property paths with wildcards and regexps.
  • sweet-monads - A utility library containing popular monads and lazy iterators.

Reactive Programming

Reactive programming libraries to extend JavaScript’s capabilities.

  • RxJS - A reactive programming library for JavaScript.
  • Bacon - FRP (functional reactive programming) library for JavaScript.
  • Kefir - FRP library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory consumption.
  • Highland - Re-thinking the JavaScript utility belt, Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
  • Most.js - high performance FRP library.
  • MobX - TFRP library for simple, scalable state management.
  • Cycle.js - A functional and reactive JavaScript library for cleaner code.
  • concent - Definitely the ❤️ simplest but ⚡️ strongest state management for react, it is predictable、progressive and efficient.
  • stunk A framework-agnostic state management library that keeps your app’s state clean and simple. It uses a fine-grained state model, breaking state into independent, manageable chunks.

Data Structure

Data structure libraries to build a more sophisticated application.

  • immutable-js - Immutable Data Collections including Sequence, Range, Repeat, Map, OrderedMap, Set and a sparse Vector.
  • mori - A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript.
  • buckets - A complete, fully tested and documented data structure library written in JavaScript.
  • hashmap - Simple hashmap implementation that supports any kind of keys.
  • ngraph.graph - Graph data structure in javascript.
  • js-sdsl - Refer to the javascript standard data structure library implemented by c++ stl, which supports c++ bidirectional iterator mode.

Date

Date Libraries.

  • moment - Parse, validate, manipulate, and display dates in JavaScript.
  • moment-timezone - Timezone support for moment.js.
  • jquery-timeago - A jQuery plugin that makes it easy to support automatically updating fuzzy timestamps (e.g. "4 minutes ago").
  • timezone-js - Timezone-enabled JavaScript Date object. Uses Olson zoneinfo files for timezone data.
  • date - Date() for humans.
  • ms.js - Tiny millisecond conversion utility.
  • countdown.js - Super simple countdowns.
  • timeago.js - Simple library (less then 2kb) used to format date with *** time ago statement.
  • fecha - Lightweight date formatting and parsing (~2KB). Meant to replace parsing and formatting functionality of moment.js.
  • date-fns - Modern JavaScript date utility library.
  • map-countdown - A browser countdown built on top of the Google Maps.
  • dayjs - Day.js 2KB immutable date library alternative to Moment.js with the same modern API.
  • luxon - Luxon is a library for working with dates and times in JavaScript.
  • tempo - Parsing, formatting, and timezones — Tempo is a small tree-shakable library for native Date objects.

String

String Libraries.

  • voca - The ultimate JavaScript string library
  • selecting - A library that allows you to access the text selected by the user.
  • underscore.string - String manipulation extensions for Underscore.js JavaScript library.
  • string.js - Extra JavaScript string methods.
  • he - A robust HTML entity encoder/decoder written in JavaScript.

truncated — full list on GitHub

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?