Вышел в свет Node.JS v6.0

в 11:15, , рубрики: backend, development, javascript, node.js, nodejs

Сегодня увидела свет версия 6.0. Изменений много, в том числе за счет обновления версии v8 (до v5.0), при этом некоторые из них могут поломать ваш код. О том какие нововведения вас ждут, читайте под катом.

В октябре этого года ветка v6.x станет новой активной LTS версией и её поддержка продлится до апреля 2018 года, а поддержка текущей LTS ветки Node.js v4 'Argon' продлится до апреля 2017. Поддержка же v5 продлится еще два месяца, чтобы разработчики использующие эту версию смогли перейти на v6. Поддержка v0.10 и v0.12 будет полностью прекращена.

Изменения API

Выдержка из changelog наиболее значимых изменений:

Buffer

Конструктор объекта Buffer изменил свое поведение. Старый конструктор получил статус deprecated, а его поведение перешло в отдельные методы:

// Было
new Buffer(size);

// Стало
Buffer.alloc(size);

По умолчанию буфер заполняется нулями, если это не требуется, используйте Buffer.allocUnsafe. Для инициализации буфера из строки или других буферов появился метод Buffer.from:

// Было
new Buffer(str, 'utf8');

// Стало
Buffer.from(str, 'utf8');

EventEmitter

Объект EventEmitter получил два новых метода prependListener и prependOnceListener, оба метода добавляют новый обработчик события в начало списка обработчиков события.

var ee = new EventEmitter();

var result = [];
ee.on('event', () => result.push(1));
ee.prependListener('event', () => result.push(2));
ee.emit('event');

result; // -> [2, 1]

FileSystem

Методы fs.realpath и fs.realpathSync теперь использует обновленную логику libuv и может выбрасывать дополнительные ошибки. Так же на вход этим методам можно подавать Buffer.

HTTP

HTTP-сервер теперь генерирует событие clientError на ошибку клиента. Пример можно увидеть здесь.

Process

Представлен механизм предупреждения о проблемах. Вместо вывода в stderr, теперь можно передавать предупреждения в специальный метод:

process.emitWarning('something goes wrong');

Так же в него можно будет передавать объект Error. Подробнее смотрите в документации.

Stream

Потоки в объектном режиме больше не смогут принимать на запись null.

URL

Метод url.resolve будет отбрасывать значения username и password при изменении хоста.

Windows

Отказ от поддержки WinXP и Vista.

Изменения v8

Теперь в node.js можно будет использовать много крутых возможностей из JS 2016!

Деструктивное присваивание

Можно выбирать значения из массива или объекта прямиком в переменные:

let [a, b] = [1, 2];
let {c, e} = {c: 3, e: 4};

Деструктивные аргументы функции

Разобрать объект или массив можно и при передаче в функцию:

function fn({arg}) {
    return arg;
}

fn({arg: '1'}); // -> 1

Значения по-умолчанию

Функции получили значения по умолчанию, наконец-то можно избавиться от лишних проверок в начале тела функции:

function doSomething(task = 'nothing') {
    console.log('I'm gonna do %s.', task);
}

doSomething(); // -> I'm gonna do nothing.

Proxy и Reflect

Объекты Proxy и Reflect доступны без флагов командной строки.

Наследование от Array

Наконец-то доступно почти полноценное наследование от объекта Array.

P.S.

По-моему, очень крутой релиз получился в этот раз! Думаю, можно поздравить команду node.js.

P.P.S.

Спасибо, Dimd13 за важное дополнение к материалу (см. 2 абзац).

Автор: rumkin

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js