Simplified JavaScript Jargon

Overview

Logo SJSJ

Simplified JavaScript Jargon (short SJSJ) is a community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem in a few simple words. The idea is not to replace individual documentations, but to act as some kind of glossary that can be easily referenced.

If you are willing to contribute, open a pull request to complete, update or fill in a section. Thank you for doing so!

Note: while this project is fully readable from this GitHub repository, you can also enjoy the dedicated website featuring a shiny design and a search engine: jargon.js.org.

Related projects

Glossary

A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z

A

  • AJAX: a technology for asynchronous HTTP requests.
  • AMD: a standard defining how to load JavaScript libraries or modules asynchronously.
  • AngularJS: a structural framework for dynamic web apps.
  • Apache Cordova (formerly PhoneGap): a popular mobile application development framework originally created by Nitobi.
  • Arity: the number of arguments of a function.

B

  • Babel: a JavaScript transformation toolkit which started as an ECMAScript 2015 / ES6 code translator (transpiler).
  • Backbone: a structural framework for dynamic web apps.
  • BEM: a methodology and libraries developed and used at Yandex for building user interfaces.
  • Bluebird: a fully featured Promise library with focus on innovative features and performance.
  • Bower: a package manager for front-end dependencies.
  • Broccoli: a fast and reliable asset pipeline.
  • Browserify: a tool making possible to use the require function from Node.js within the browser.
  • Brunch: a tool focusing on the production of deployment-ready files from development files.

C

  • Canvas: an HTML element for graphic applications in 2D or 3D.
  • Chai: an assertion library used with a JavaScript testing framework.
  • Chakra: a JavaScript engine developed by Microsoft for its Edge browser which could also be used with Node.js instead of V8.
  • Closure: a way of referencing variables from a child function while retaining their value even if it changes in the parent function.
  • Closure Compiler: a JavaScript checker and optimizer.
  • CoffeeScript: a language that compiles into JavaScript.
  • CommonJS: a project with the goal of specifying an ecosystem for JavaScript outside the browser (for example, on the server or for native desktop applications).
  • CORS: a way for a server to make things accessible to pages hosted on other domains.
  • CouchDB: a NoSQL database with JavaScript as query language and HTTP as API.
  • Currying: the process to transform a function with multiple parameters into a chain of functions of one parameter.

D

  • date-fns: a JavaScript date utility library.
  • D3.js: a library for manipulating documents based on data.
  • Design Patterns: a general reusable solution to a commonly occurring problem within a given context in software design.
  • DOM: a platform- and language-neutral interface that allow programs and scripts to dynamically access and update the content, structure and style of documents.

E

  • ECMAScript: the standardized specification of the scripting language used by JavaScript.
  • Electron: a framework based on Node.js lets you write cross-platform desktop applications using JS, HTML and CSS.
  • Ember: an application framework based on the model-view-controller pattern.
  • Enzyme: a JavaScript Testing utility for React developed by AirBnB that makes it easier to assert, manipulate, and traverse React components’ output.
  • ESLint: a JavaScript code linter.
  • Express: a fast, un-opinionated, minimalist web framework for Node.js.
  • Ext JS: a pure JavaScript application framework for building interactive cross platform web applications.

F

  • Facade Pattern: a software design pattern commonly used with object-oriented programming. The name is by analogy to an architectural facade.
  • Factory Pattern: a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created.
  • Falcor: a JavaScript library for efficient data fetching.
  • Flow: a static type checker, designed to find type errors in JavaScript programs.
  • Flux: an application structure focusing on improved data flow.
  • Four: a framework to develop 3D content for the web.

G

  • GraphQL: a query language for APIs and a runtime for fulfilling those queries with your existing data.
  • Grunt: a task runner aiming at automating tedious and possibly complex tasks.
  • Gulp: a task runner aiming at automating tedious and possibly complex tasks.

H

  • Hapi: a Node JS framework for writing services and more.
  • Hoisting: an action performed by the JavaScript interpreter that moves function and variable declarations to the top of their containing scope.

I

  • IIFE (Immediately Invoked Function Expression): a function that gets called immediately after declaration.
  • Ionic: a HTML5 mobile framework to build beautiful hybrid native mobile applications using AngularJS and Cordova.
  • Isomorphic: an application is said to be isomorphic (universal) when its code can run both in the client and the server.

J

  • Jasmine: a testing framework for BDD (Behaviour-Driven Development).
  • Jest: a unit testing framework.
  • jQuery: a fast, small, and feature-rich client-side library.
  • JSCS: a JavaScript code linter.
  • JSHint: a JavaScript code linter.
  • JSLint: a JavaScript code linter.
  • JSON (JavaScript Object Notation): a lightweight data-interchange format.
  • JSON-LD: JSON for Linked Data.
  • JSPM: Javascript Package Manager: NPM with its own build system and multiple resources management.
  • JSX: an XML-like syntax extension to JavaScript.

K

  • Knockout: a library that helps developers creating user interfaces with a clean underlying data model.

L

  • LocalForage: a fast and simple storage library for JavaScript.
  • Lodash: a utility toolkit to extend JavaScript primitive types.

M

  • MEAN: the technology stack MongoDB, ExpressJS, AngularJS, and Node.js (MEAN).
  • Mediator Pattern: an object that encapsulates how a set of objects interact.
  • Memoize: an optimization used to speed up consecutive function calls by caching the result of calls with identical input.
  • Metalsmith: a simple, pluggable static site generator.
  • Meteor: a JavaScript web framework that allows rapid prototypic web development.
  • Mocha: an extensible testing framework for TDD (Test-Driven Development) or BDD (Behaviour-Driven Development).
  • Modernizr: a browser feature detection library, useful to modify page styles when a feature is not available in the browser.
  • Module Pattern: a design pattern used to implement the concept of software modules, defined by modular programming, in a programming language with incomplete direct support for the concept.
  • Moment.js: a library to parse, validate, manipulate and display dates.
  • MongoDB: a Javascript NoSQL database.
  • Mootools: a collection of JavaScript utilities designed for the intermediate to advanced JavaScript developer. It allows you to write powerful and flexible code with its elegant, well documented, and coherent APIs.

N

  • Nightmare: a high-level browser automation library.
  • NightwatchJS: a framework for browser automated testing.
  • Node.js: a cross-platform runtime environment for developing server-side applications built on V8 engine.
  • npm: a utility to help publishing packages to, and installing from, an npm repository.
  • nvm: a utility to help run multiple versions of Node.js on the same machine.

O

  • Observer Pattern: a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.

P

  • Passport.js: a simple authentication middleware for Node.js.
  • PhantomJS: a scripted, headless browser used for automating web page interaction.
  • Polymer: Google’s library for creating Web Components.
  • PostCSS: a tool to transform CSS styles using JavaScript plugins; plugins include autoprefixer, future CSS transpiling, CSS linting and media queries.
  • Promise: a proxy for a value not necessarily known immediately but that will eventually be resolved.
  • Prototype.js: a JavaScript framework that aims to ease development of dynamic web applications. It offers a familiar class-style OO framework, extensive Ajax support, higher-order programming constructs, and easy DOM manipulation.
  • Prototype Pattern: a creational design pattern in software development. It is used when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects.
  • Puppeteer: a Node library providing a high-level API to control headless Chrome.
  • Pure Function: a function that always returns the same value for a given input, never modifies its inputs, and cannot obeserve or affect state in its application or the world.

Q

  • Q: a library to create and manage promises.
  • QUnit: a powerful, easy-to-use JavaScript unit testing framework.

R

  • Ramda: a practical functional library for JavaScript programmers.
  • React: a library developed and used at Facebook for building user interfaces.
  • Redux: a predictable state container for apps.
  • Require.js: a browser based module loader using AMD.
  • Revealing Module Pattern: a design pattern conceptually based on the Module Pattern. The only difference is that the revealing module pattern was engineered as a way to ensure that all methods and variables are kept private until they are explicitly exposed.
  • rnpm: a package manager to ease React Native development by automatically linking native dependencies to your iOS/Android project.
  • RxJS: a library for asynchronous programming using observable streams.

S

  • Sails: a realtime MVC Framework for Node.js.
  • Singleton Pattern: a design pattern that restricts the instantiation of a class to one object.

T

  • Three.js: a lightweight 3D library to create and display animated 3D computer graphics on a Web browser.
  • TypeScript: a super-set of the JavaScript language that introduces types.

U

  • UMD: a pattern of universal module definition for JavaScript modules.
  • Underscore: a swiss army knife, focusing on helper methods for most built-in objects.
  • Universal: an application is said to be universal (isomorphic) when its code can run both in the client and the server.

V

  • V8: Google’s open source JavaScript engine. It’s what Chrome is running, but it’s also used for other projects like Node.js and MongoDB.
  • Vanilla: a term for library/framework free JavaScript.
  • Virtual DOM: a copy of the DOM in memory that the program can modify instead of directly interfacing with the "real" DOM to help speed up interactions
  • VueJS: a library for creating user interfaces based on data models.

W

  • WebGL (Web Graphics Library): a JavaScript API for rendering interactive 3D and 2D graphics within any compatible web browser without the use of plug-ins.
  • Webpack: a dependency manager with a friendly and fast development environment, simplifying a lot of common tasks.

X

  • XHR: XMLHttpRequest is an API that provides client functionality for transferring data between a client and a server without page refresh.

Y

  • Yeoman: a generator builder to speed up the setup and installation process of a project or part of a project.

Z

  • Zepto: a lightweight jQuery clone, without all the browser-compatibility specific code.

Export entries as JSON

This repository includes a tiny Node.js script that exports all the entries as JSON. To use it, clone the repository and run:

npm install
npm run export -- data.json

Special thanks

A special thanks to Bohdan Shtepan and Kostas Minaidis (amongst others) for there outstanding contributions to make this project more and more relevant every day!

Comments
  • Formal definition of currying vs common usage

    Formal definition of currying vs common usage

    According to lodah's docs, currying

    Creates a function that accepts arguments of func and either invokes func returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining func arguments, and so on.

    And in Ramda

    Returns a curried equivalent of the provided function. The curried function has two unusual capabilities. First, its arguments needn't be provided one at a time

    And wu

    Returns a new function that keeps currying until it receives expected arguments, at which point it evaluates fn with those arguments applied.

    The mathematical definition (or, at least, the one on wikipedia) and the one currently in the guide is

    A function that takes multiple arguments (or a tuple of arguments) into evaluating a sequence of functions, each with a single argument.

    I'm not sure how it's done in other languages, but at least in all the javascript libraries a curried function can be called with multiple arguments, whereas the mathematical definition can only be called with one at a time. This type of currying might more rightly be called auto-currying, but I don't really know much about the formal definition anyway, so it might just still be currying. Seeing as how this is a javascript jargon glossary, I think it would make more sense to use the definition of currying as is commonly seen in javascript, even if it's a bit more complicated to explain.

    opened by sgtpepper43 11
  • Proposal for a simple search page

    Proposal for a simple search page

    (Enhancement) I have created a gh-pages branch and placed a simple search page that uses the JSON data. Please check it here and let me know If I should create a pull request. ;)

    opened by kostasx 11
  • make the design pattern one more JavaScript specific

    make the design pattern one more JavaScript specific

    I find that 'Design Paten' discussions tend to be framed in terms of patterns that tend to need to be shoehorned into JavaScript awkwardly. (see prototype pattern) it might be a good idea to either add some discussion of this or judiciously edit the pattern entry to remove the more java centrist patterns that aren't helpful for discussions of JavaScript in favor of JavaScript centrist ones (e.g. callbacks and promises)

    opened by calvinmetcalf 9
  • [RFR] Revisited the project structure

    [RFR] Revisited the project structure

    This pull-request revisits the project structure to have one entry per file rather than everything in the README. The latter becomes a table of contents.

    It might looks overkill, but I truly think that the README will soon become unpractical and very crowded as we keeping adding more.

    Also, having one entry per file leaves some extra room for small projects that we would not have listed in the README otherwise.

    Last but not least, it allows us to write more on each entry, without risking of crowding everything.

    Any opinion?

    opened by KittyGiraudel 8
  • Subcategories?

    Subcategories?

    I'm not sure if subcategories are a good idea, but here's the problem I'm thinking about:

    I just submitted a pull request for CORS. inside it, I'm using a lot of terms around HTTP like headers, methods (OPTIONS specifically), resources. I think it would be good to have separate entries for these. But the word resource has different meanings in different contexts, the same goes for the word header. Should I just ad these as HTTP resource and HTTP header, or could it be useful to have a HTTP category under which these entries fall?

    opened by bigblind 6
  • Cleanup of {}.final files

    Cleanup of {}.final files

    hi Hugo, recently noticed a very large number of {hash}.final files under the storage folder for Firefox which do not cleanup after themselves. They are occupying a large amount of disk space unnecessarily.

    They all have your name attached, for example, ../storage/default/https+++hugogiraudel.com/cache/morgue so could you kindly explain why such files should persist?

    Thanks very much.

    opened by rsvp 4
  • [RFR] Jekyll version

    [RFR] Jekyll version

    This pull-request started from #145. On top:

    • Moved the setup to Jekyll;
    • No JavaScript dependency for the letter-navigation;
    • Usage of datalist + tiny JS snippet for search rather than full blown engine;
    • No need for Bootstrap;
    • No need for Horsey;
    • Fixed all the links to make them work both on GitHub and the site itself (fuck yes).

    @kostasx: Do you care to review? :)

    opened by KittyGiraudel 4
  • [RFR] Added .gitattributes with force unix newline conversion for *.md files

    [RFR] Added .gitattributes with force unix newline conversion for *.md files

    Added force newline conversion *.md files for correct work export-script on Windows system.

    Specifically, for this part:

    // bin/export   line:14
    
        // Not worked with Windows line endings
        // In example, '#TITLE\r\n\r\nDESCRIPTION'.match(/^.*\n+([\s\S]+)|^/)[1] is '\r', not 'DESCRIPTION'
        markdown: content.match(/^.*\n+([\s\S]+)|^/)[1]
    
    opened by w0robey 3
  • UX Idea: click on title to go back to index

    UX Idea: click on title to go back to index

    Great effort and initiative, you guys. I'm a web dev for years and i haven't seen this project.

    Intuitively, i clicked on the big term name in a single term page, expecting to go back to the main index / single letter index.

    The title can be made clickable, going back to the previous state. Might be more convenient than finding the same letter or going all the way to the logo

    opened by Ore4444 0
  • Add “Recycling” entry

    Add “Recycling” entry

    Commonly used in VanillaJS and by libraries such as Inferno: it's the process or re-using JavaScript objects/DOM nodes that been pooled after use, rather than creating new objects/DOM nodes each again.

    Up for grabbing 
    opened by trueadm 0
  • Add “thenable” entry

    Add “thenable” entry

    From http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/promise_exports_Thenable.html:

    Thenable is a promise-like object with a then method which may be used to schedule callbacks on a promised value.

    Up for grabbing 
    opened by niksy 1
Owner
Kitty Giraudel
Non-binary accessibility & diversity advocate, frontend developer, author. Real life cat. They/them.
Kitty Giraudel
AWS Lambda and API Gateway, simplified for Javascript

alanajs AWS Lambda and API Gateway, simplified for JavaScript About alanajs Make setting up Lambda microservices easier than ever. alanajs is a free,

OSLabs Beta 64 Aug 1, 2022
An unofficial, simplified version of the @Shopify/koa-shopify-auth middleware library.

simple-koa-shopify-auth https://www.npmjs.com/package/simple-koa-shopify-auth NOTE: This package is not maintained by or affiliated with Shopify. Desc

David 20 Nov 7, 2022
Data-driven development, simplified.

CONTRACTUAL Table of Contents 0. Brief 1. Features 2. Installation 2.1 Download Installer 2.2 Fork and Clone Repo 3. How to Use 3.1 Contract Builder 3

OSLabs Beta 50 Nov 8, 2022
A simplified list crud that adds, removes and edits items

To-do list This project is as simplified todo list crud. Built With HTML CSS JavaScript Webpack Live version See live version Getting Started To get a

Fernando Saldaña 7 Apr 2, 2022
⚡ It is a simplified database module with multiple functions that you can use simultaneously with sqlite, yaml, firebase and json.

Prisma Database Developed with ?? by Roxza ⚡ An easy, open source database ?? Installation npm i prisma.db --save yarn add prisma.db ?? Importing impo

Roxza 21 Jan 3, 2023
Motionia is a lightweight simplified on demand animation library

The Ultimate & smart JS animation library! Simple fast , flexible & easy to integrate. No need to write page long CSS Keyframes that consumes a lot of

Abhi 324 Dec 30, 2022
🐬 A simplified implementation of TypeScript's type system written in TypeScript's type system

?? HypeScript Introduction This is a simplified implementation of TypeScript's type system that's written in TypeScript's type annotations. This means

Ronen Amiel 1.8k Dec 20, 2022
A simplified jQuery date and time picker

jSunPicker A simplified jQuery date and time picker Why another Date picker? There are numerous date, time pickers out there. However, each of those l

null 1 May 31, 2022
An overly simplified Angular tool for interacting with Smart Contracts, demod at ng-conf 2022.

AngularOperator This is a sample repo and tool created for ng-conf 2022. It contains a normal Angular app designed to interact with the blockchain. It

Stephen Fluin 8 Oct 7, 2022
REST API simplified.

Deepkit REST REST API simplified npm i \ @deepkit-rest/http-extension \ @deepkit-rest/rest-core \ @deepkit-rest/rest-crud Overview DeepKit REST

DeepKit REST 8 Dec 30, 2022
This is my to-do list website built with html, css and JavaScript. In this project I used Webpack to bundle JavaScript and ES6 modules to write modular JavaScript.

To-Do-List App This is my to-do list website built with html, css and JavaScript. In this project I used Webpack to bundle JavaScript and ES6 modules

Samuel Mwape 18 Sep 20, 2022
Reference for How to Write an Open Source JavaScript Library - https://egghead.io/series/how-to-write-an-open-source-javascript-library

Reference for How to Write an Open Source JavaScript Library The purpose of this document is to serve as a reference for: How to Write an Open Source

Sarbbottam Bandyopadhyay 175 Dec 24, 2022
Open Source projects are a project to improve your JavaScript knowledge with JavaScript documentation, design patterns, books, playlists.

It is a project I am trying to list the repos that have received thousands of stars on Github and deemed useful by the JavaScript community. It's a gi

Cihat Salik 22 Aug 14, 2022
Javascript-testing-practical-approach-2021-course-v3 - Javascript Testing, a Practical Approach (v3)

Javascript Testing, a Practical Approach Description This is the reference repository with all the contents and the examples of the "Javascript Testin

Stefano Magni 2 Nov 14, 2022
Navigation-Menu-Javascript - A simple Navbar navigation using vanilla javascript, to change links to the active link when clicked.

Navigation-Menu-Javascript A simple Navbar navigation using vanilla javascript, to change links to the active link when clicked. Desktop view Mobile v

Ellis 2 Feb 16, 2021
Ping.js is a small and simple Javascript library for the browser to "ping" response times to web servers in Javascript

Ping.js Ping.js is a small and simple Javascript library for the browser to "ping" response times to web servers in Javascript! This is useful for whe

Alfred Gutierrez 353 Dec 27, 2022
MenuSlider-Javascript - How to create a menu slider with vanilla javascript

MenuSlider-Javascript How to create a menu slider with vanilla javascript Instal

Tarokh Mohammadi 1 Feb 8, 2022
Simple Library implemented using HTML, CSS and JavaScript. This is a simple implementation of JavaScript Modules of ES6.

Awesome-books A single page project with the porpuse of storing books' titles and authors. Built With CSS, HTML & Javascript. How to run in your local

Saadat Ali 7 Feb 21, 2022
This is a project that allows users to add/remove books from a list. we accomplish this by using a JavaScript object. Built with JavaScript, Html and CSS.

Awesome-book This is a project that allows users to add/remove book from a list. we accomplish this by usig javascript oject. Built With HTML5 CSS3 Ja

Juan Fco. Rosario Suli 6 May 27, 2022