Как написать Virtual Dom

Есть 2 вещи, которые необходимо знать. Вам не нужно погружаться в исходный код React’а или других библиотек, они довольно большие и сложные, на самом деле Virtual DOM может быть написан в меньше чем 50 строк кода.

  1. Virtual DOM это аналог настоящего DOM
  2. Когда мы меняем что-то в дереве Virtual DOM , мы создаем новый Virtual DOM. Алгоритм сравнения двух деревьев вычисляет разницу и вносит только необходимые, минимальные правки в  настоящий DOM.

Читать далее Как написать Virtual Dom

html5 notification VS web push api

В чем разница между html5 notification и web push API?

html5 notification используется для отображения уведомлений с веб-страницы, в то время как Push API, используется для отправки уведомлений удаленно, даже если веб-страница неактивна.

Koa vs Express

Философия koa направлена на «исправление и замену узлов», в то время как express — «расширяет узел». Koa использует co, чтобы избавить приложение от callback-hell’а и упростить обработку ошибок. Он выставляет собственные this.request и this.response вместо аргументов функции, объектов req и res.

С другой стороны, express расширяет объекты req и res дополнительными методами и свойствами, включает в себя много других «фишек» таких как: маршрутизация и шаблонизация. В koa этого нет.

Таким образом, koa можно рассматривать как абстрактный http модуль для node.js, а express это полноценный фреймворк.

Redis API — основные возможности

Для взаимодействия между node.js и nosql базой данных — redis, можно воспользоваться модулем node_redis (npm install redis).

Структуры данных поддерживаемые redis’ом:

  • Хеш-таблицы
  • Списки
  • Пары ключ/значение
  • Множества (set)

Читать далее Redis API — основные возможности

Сниппет для require

Если вы пользуетесь текстовым редактором — sublime text и вам надоело постоянно писать require(…), я предлагаю воспользоваться данным снипетом.
Снипет попытается предложить вам автоматическую подстановку и установит курсор в кавычки, между скобочками — require(‘cursor will be here‘), после повторного нажатия на таб, переведет курсор на новую строку.




req
requre
source.js

Модули для node.JS

В node.js модуль — это файл, который можно подключить при помощи require();
Переменные:
var — обычная переменная,
export — переменная, которая передает объект из модуля в то место где его вызывают,
global — глобальный объект, аналог браузерного window, не рекомендуется использовать его в своих скриптах.

Модуль можно объявить в директории, создав в ней файл index.js.

Promise

Promise (обычно их так и называют «промис») это объект позволяющий удобно организовать работу с асинхронным кодом в JavaScript.

Тело promise — это функция, из которой можно выйти, вызвав второй или первый ее аргумент:


let promise = new Promise((resolve, reject)=> {
setTimeout(()=>{
console.log(1000);
// Вызываем resolve, отвечающий за успех.
resolve();
}, 1000)
})

// Навешиваем обработчики, первый для вызова resolve, отвечающего за успех, второй для второго, вызывается в случае если произошла ошибка и был
// вызван reject.

promise.then(() => {
console.log('resolve')
}, () => {
console.log('reject')
})

ECMASCRIPT-2015: Объекты

Короткие свойства.

Свойства можно задать используя переменную.


let x = 1;
let y = 2;

var o = {
x,
y
}

console.log(o.x + o.y) // 3

Вычисляемые имена свойств

let o = {
['x'+'y']: 1
}

console.log(o.xy) // 1

Object.assign

Получает список объектов и записывает их свойства в первый.


let x = {
x:1
}
let y = {
y:1
}
let z = {
z:1
}

var o = Object.assign(x,y,z);
console.log(o); // {"x":1,"y":1,"z":1}

Методы

Теперь методы можно записывать сразу:

var o = {
meth() {
return 10
}
}
console.log(o.meth())

JavaScript шаблоны: Объекты

  • Чтобы избежать засорения глобального объекта используйте пространство имён.
  • Объявляйте зависимости в начале модуля как переменные. (Это уменьшит размер файла при минификации)
  • Вы можете скрывать данные используя замыкания а так же создавать методы доступные только самому объекту (недоступные из вне).
  • Все вышеперечисленное является строительными блоками шаблона «модуль»
  • В JavaScript отсутствует возможность создавать константы (до версии ECMASCRIPT 2015). Но вы  можете определить объект «const» в котором будет реализована возможность добавлять константы.
  • Конструкторы  могут иметь статические методы, которые не меняются от экземпляра к экземпляру.
  • Старайтесь возвращать из методов ссылку на объект. Это позволит организовывать удобные цепочки вызовов, которые, однако, сложно отлаживать.

JavaScript Шаблоны: Литералы и конструкторы

  • Создавайте объекты при помощи литералов, в виде списков пар ключ-значение, разделенных запятыми, заключенными в фигурные скобки.
  • Использование функций-конструкторов менее наглядно.
  • Если вы пищите конструктор, позаботьтесь о том, чтобы конструктор работал без оператора new.
  • Создавайте массивы при помощи литерала — [].
  • JSON — формат предоставления данных, состоящий из литералов объекта и массива.
  • Предпочтительнее создавать регулярные выражения при помощи литерала — /regExp/.
  • Старайтесь избегать — String(), Number(), Boolean().