Вийшов у світ Node.JS v6.0

Сьогодні побачила світло версія 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).

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.