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

от автора

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

Изменения 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.

ссылка на оригинал статьи https://habrahabr.ru/post/282688/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *