diff --git a/README.md b/README.md index b50a641..f3178a4 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ If you are willing to contribute, open a pull request to complete, update or fil * [Babel](/glossary/BABEL.md): a JavaScript transformation toolkit which started as an ECMAScript 2015 / ES6 code translator (transpiler). * [Backbone](/glossary/BACKBONE.md): a structural framework for dynamic web apps. +* [BEM](/glossary/BEM.md): a methodology and libraries developed and used at Yandex for building user interfaces. * [Bluebird](/glossary/BLUEBIRD.md): a fully featured Promise library with focus on innovative features and performance. * [Bower](/glossary/BOWER.md): a package manager for front-end dependencies. * [Broccoli](/glossary/BROCCOLI.md): a fast and reliable asset pipeline. @@ -66,8 +67,8 @@ If you are willing to contribute, open a pull request to complete, update or fil * [Closure Compiler](/glossary/CLOSURE_COMPILER.md): a JavaScript checker and optimizer. * [CoffeeScript](/glossary/COFFEESCRIPT.md): a language that compiles into JavaScript. * [CommonJS](/glossary/COMMONJS.md): 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](/glossary/CORS.md): A way for a server to make things accessible to pages hosted on other domains. -* [CouchDB](/glossary/COUCHDB.md): A NoSQL database with JavaScript as query language and HTTP as API. +* [CORS](/glossary/CORS.md): a way for a server to make things accessible to pages hosted on other domains. +* [CouchDB](/glossary/COUCHDB.md): a NoSQL database with JavaScript as query language and HTTP as API. * [Currying](/glossary/CURRYING.md): the process to transform a function with multiple parameters into a chain of functions of one parameter. ### D @@ -79,6 +80,7 @@ If you are willing to contribute, open a pull request to complete, update or fil ### E * [ECMAScript](/glossary/ECMASCRIPT.md): the standardized specification of the scripting language used by JavaScript. +* [Electron](/glossary/ELECTRON.md): a framework based on Node.js lets you write cross-platform desktop applications using JS, HTML and CSS. * [Ember](/glossary/EMBER.md): an application framework based on the model-view-controller pattern. * [ESLint](/glossary/ESLINT.md): a JavaScript code linter. * [Express](/glossary/EXPRESS.md): a fast, un-opinionated, minimalist web framework for Node.js. @@ -106,6 +108,7 @@ If you are willing to contribute, open a pull request to complete, update or fil ### I * [IIFE](/glossary/IIFE.md) (Immediately Invoked Function Expression): a function that gets called immediately after declaration. +* [Ionic](/glossary/IONIC.md): a HTML5 mobile framework to build beautiful hybrid native mobile applications using AngularJS and Cordova. * [Isomorphic](/glossary/ISOMORPHIC.md): an application is said to be isomorphic (universal) when its code can run both in the client and the server. ### J @@ -117,6 +120,7 @@ If you are willing to contribute, open a pull request to complete, update or fil * [JSLint](/glossary/JSLINT.md): a JavaScript code linter. * [JSON](/glossary/JSON.md) (JavaScript Object Notation): a lightweight data-interchange format. * [JSON-LD](/glossary/JSON-LD.md): JSON for Linked Data. +* [JSPM](/glossary/JSPM.md): Javascript Package Manager: NPM with its own build system and multiple resources management. * [JSX](/glossary/JSX.md): an XML-like syntax extension to JavaScript. ### K @@ -130,8 +134,10 @@ If you are willing to contribute, open a pull request to complete, update or fil ### M +* [MEAN](/glossary/MEAN.md): the technology stack MongoDB, ExpressJS, AngularJS, and Node.js (MEAN). * [Mediator Pattern](/glossary/MEDIATOR_PATTERN.md): an object that encapsulates how a set of objects interact. * [Memoize](/glossary/MEMOIZE.md): an optimization used to speed up consecutive function calls by caching the result of calls with identical input. +* [Metalsmith](/glossary/METALSMITH.md): a simple, pluggable static site generator. * [Meteor](/glossary/METEOR.md): a JavaScript web framework that allows rapid prototypic web development. * [Mocha](/glossary/MOCHA.md): an extensible testing framework for TDD (Test-Driven Development) or BDD (Behaviour-Driven Development). * [Modernizr](/glossary/MODERNIZR.md): a browser feature detection library, useful to modify page styles when a feature is not available in the browser. @@ -139,8 +145,6 @@ If you are willing to contribute, open a pull request to complete, update or fil * [Moment.js](/glossary/MOMENTJS.md): a library to parse, validate, manipulate and display dates. * [MongoDB](/glossary/MONGODB.md): a Javascript NoSQL database. * [Mootools](/glossary/MOOTOOLS.md): 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. -* [Metalsmith](/glossary/METALSMITH.md): a simple, pluggable static site generator. -* [MEAN](/glossary/MEAN.md): the technology stack MongoDB, ExpressJS, AngularJS, and Node.js (MEAN). ### N @@ -152,7 +156,7 @@ If you are willing to contribute, open a pull request to complete, update or fil ### O -* [Observer Pattern](/glossary/OBSERVER_PATTERN.md): 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. +* [Observer Pattern](/glossary/OBSERVER_PATTERN.md): 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 @@ -164,17 +168,17 @@ If you are willing to contribute, open a pull request to complete, update or fil ### Q -* [QUnit](/glossary/QUNIT.md): a powerful, easy-to-use JavaScript unit testing framework. * [Q](/glossary/Q.md): a library to create and manage promises. +* [QUnit](/glossary/QUNIT.md): a powerful, easy-to-use JavaScript unit testing framework. ### R * [Ramda](/glossary/RAMDA.md): a practical functional library for JavaScript programmers. * [React](/glossary/REACT.md): a library developed and used at Facebook for building user interfaces. * [Redux](/glossary/REDUX.md): a predictable state container for apps. +* [Require.js](/glossary/REQUIREJS.md): a browser based module loader using AMD. * [Revealing Module Pattern](/glossary/REVEALING_MODULE_PATTERN.md): a design pattern conceptually based on the [Module Pattern](/glossary/MODULE_PATTERN.md). 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](/glossary/RXJS.md): a library for asynchronous programming using observable streams. -* [Require.js](/glossary/REQUIREJS.md): a browser based module loader using AMD. ### S diff --git a/glossary/BEM.md b/glossary/BEM.md new file mode 100644 index 0000000..201ddac --- /dev/null +++ b/glossary/BEM.md @@ -0,0 +1,16 @@ +# BEM + +[BEM](https://en.bem.info/) is a methodology and libraries developed and used at Yandex for building user interfaces. + +Key concepts of methodology + * Block: logically and functionally independent page component, encapsulates behavior (JavaScript), templates, styles (CSS), and other implementation technologies + * Element: a constituent part of a block that can’t be used outside of it (For example, a menu item) + * Modifier: defines the appearance and behavior of a block or an element + +BEM methodology solves common frontend problems: + 1. Component approach (splitting interface into blocks). + 2. How to name things (in [code](https://en.bem.info/method/naming-convention/) and on [filesystem](https://en.bem.info/method/filesystem/)). + 3. How to reuse components (for JS/CSS and all other techs) — for example you can take [bem-core](https://github.com/bem/bem-core) library (a collection of common blocks and solutions). + 4. How to describe components behaviour — [i-bem.js](https://en.bem.info/technology/i-bem/) library that allows you describe a block logic in declarative style and keep it loosely coupled with others. + 5. How to generate HTML — declarative template engine [bem-xjst](https://github.com/bem/bem-xjst) for server and browsers. + 6. How to manage components dependencies and build project — [ENB](https://github.com/enb/enb) builder. diff --git a/glossary/ELECTRON.md b/glossary/ELECTRON.md new file mode 100644 index 0000000..edf4721 --- /dev/null +++ b/glossary/ELECTRON.md @@ -0,0 +1,3 @@ +# ELECTRON + +[ELECTRON](https://github.com/atom/electron) is a framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on Node.js and Chromium and is used in the Atom editor. diff --git a/glossary/EXPRESSION.md b/glossary/EXPRESSION.md new file mode 100644 index 0000000..fd3cbc3 --- /dev/null +++ b/glossary/EXPRESSION.md @@ -0,0 +1,16 @@ +# Expression + +An [Expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions) is any valid unit of code that resolves to a value. + +## Examples: + +`4 + 5` *(evaluates to the value 9)* + +`x = 6` *(evaluates to 6)* + +`"Home!"` *(evaluates to the String 'Home!')* + +---------- + +*References:* +- [Eloquent JavaScript: Expressions](http://eloquentjavascript.net/1st_edition/chapter2.html#key32) diff --git a/glossary/IONIC.md b/glossary/IONIC.md new file mode 100644 index 0000000..1cc18af --- /dev/null +++ b/glossary/IONIC.md @@ -0,0 +1,5 @@ +# Ionic + +[Ionic](http://ionicframework.com/) is a HTML5 mobile framework to build beautiful hybrid native mobile applications using AngularJS and Cordova. It comes accompanied with a powerful CLI to create, build, test and deploy your applications into any platform. The framework also offers live reloading features to apply live changes to the application. + +With the advent of Angular 2, the Ionic team have started working on [Ionic 2](http://ionic.io/2), which is a complete rewrite of Ionic. \ No newline at end of file diff --git a/glossary/JSPM.md b/glossary/JSPM.md new file mode 100644 index 0000000..6a688bb --- /dev/null +++ b/glossary/JSPM.md @@ -0,0 +1,13 @@ +# JSPM + +[JSPM](http://jspm.io/) is a package manager coupled with its own build system. Thus, any kind of module can be loaded (e.g ES6, AMD, CommonJS) within the current installed modules. Those modules can be loaded from NPM, as well as Github, Bitbucket or Bower. JSPM creates its own dependencies folder in the project directory, called `jspm_packages`, instead of the regular `node_modules` folder. + +## Usage + +- `npm install -g jspm`: Install the JSPM CLI. +- `jspm init`: Initialize the current project with JSPM. +- `jspm install lodash`: Install packages, just like NPM. +- `jspm install github:lodash/lodash@4.6.1`: Install the specified. version from Github. +- `jspm bundle app/main --inject`: Bundle the app, just like [Browserify](http://browserify.org/). + +See the [JSPM documentation](http://jspm.io/docs/) for further details. diff --git a/glossary/NIGHTWATCHJS.md b/glossary/NIGHTWATCHJS.md index 58758ab..6f23419 100644 --- a/glossary/NIGHTWATCHJS.md +++ b/glossary/NIGHTWATCHJS.md @@ -1,3 +1,3 @@ # NightwatchJS -[NightwatchJS](http://nightwatchjs.org/.org/) is an extensible, open-source JavaScript testing framework that runs in [Node.js](NODEJS.md). It has clean syntax, a built-in test runner, support for Cloud providers like SauceLabs or BrowserStack, Continuos integration, also, NightwatchJS supports CSS and XPath selectors. +[NightwatchJS](http://nightwatchjs.org/) is an extensible, open-source JavaScript testing framework that runs in [Node.js](NODEJS.md). It has clean syntax, a built-in test runner, support for Cloud providers such as SauceLabs or BrowserStack, continuous integration such as Teamcity, Jenkins etc. NightwatchJS also supports CSS and XPath selectors. diff --git a/glossary/REACT.md b/glossary/REACT.md index d36c6e2..8eba82c 100644 --- a/glossary/REACT.md +++ b/glossary/REACT.md @@ -2,7 +2,7 @@ [React](https://facebook.github.io/react/) is a library developed and used at Facebook for building user interfaces. It can be seen as the V in MVC (Model View Controller) as it makes no assumptions about the rest of the technology stack. Using [React Native](#react-native) it can even be used to power native apps. -In React you can write HTML directly in JS using an XML-like syntax called [JSX](JSX.md). JSX compiles to JS and is optional, but does make the code more expressive. +In React you can write HTML directly in JS using an XML-like syntax called [JSX](/glossary/JSX.md). JSX compiles to JS and is optional, but does make the code more expressive. Data flow in React is one-way which makes it easier to reason about and avoid mistakes. This quality can be enhanced using [Flux](FLUX.md), Facebook’s complementary application architecture, or [Redux](REDUX.md) which many people see as a “better Flux”. diff --git a/glossary/WEBPACK.md b/glossary/WEBPACK.md index 5e81367..6734a21 100644 --- a/glossary/WEBPACK.md +++ b/glossary/WEBPACK.md @@ -1,3 +1,3 @@ # Webpack -[Webpack](https://github.com/webpack/webpack) helps you managing dependencies in your project, and also offers a friendly and fast development environment, simplifying a lot of common tasks behind a simple configuration file. It also allows you to bundle your modules into static assets for browsers. Its killer feature is the known as [hot module replacement](https://github.com/webpack/docs/wiki/hot-module-replacement-with-webpack), which lets your live code in the browser update automatically as you change files in your preferred editor without a page reload. +[Webpack](https://github.com/webpack/webpack) helps you manage dependencies in your project, and also offers a friendly and fast development environment, simplifying a lot of common tasks behind a simple configuration file. It also allows you to bundle your modules into static assets for browsers. Its killer feature is known as [hot module replacement](https://github.com/webpack/docs/wiki/hot-module-replacement-with-webpack), which lets your live code in the browser update automatically as you change files in your preferred editor without a page reload.