Сегодня увидела свет версия 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/
Добавить комментарий