Giter Club home page Giter Club logo

sjsj's Introduction

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!

sjsj's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sjsj's Issues

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?

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.

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)

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.
;)

Code snippets

Is it advisable to include code snippets to enrich a certain definition?

Define Isomorphic

When I heard of this project, the first thing I did was look to see how you defined "Isomorphic", but then it wasn't there :)

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

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.

Sort all terms in alphabetical order

Example:

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.
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.
RxJS: a library for asynchronous programming using observable streams.
Require.js: a browser based module loader using AMD.

=>

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.
RxJS: a library for asynchronous programming using observable streams.

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.

What is the process/guidance for editing existing definitions?

For example I find

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

to be very misleading as it implies the "real" DOM is not stored in memory,

I don't mean to pick on that specific one and I'd like to make lots of adjustments. I assume you want a PR for this, do you have any guidance however on what is/is not appropriate to edit/what level of explanation you want/the length of the summary/the length of the description?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.