Що нового в Node.js 6.0

4 хв. читання

Чекайте, що? Але ж нещодавно Node Foundation анонсувало пяту версію і вже час знов оновлюватися? Так, цей реліз Node покращує потужність, надійність, зручність користування та безпеку.

Кому потрібно оновлюватися?

Користувачам версій 0.12, 0.14, 5.*. Так як версія 4.0 є LTS (long-time support), то її оновлювати не обов'язково, так як її підтримка буде ще до квітня 2017 року.

Покращення потужності

Найголовнішим є те, що Node тепер використовує останню версію рушія V8.

Також покращили швидкість завантаження модулів. Ми не проводили ніяких тестів, але Node Foundation кажуть, що завантаження модулів тепер відбувається в 4 рази швидше.

Згідно з node green, Node 6.0 підтримує 93% можливостей ES6 (Ecmascript 6).

Важливі зміни

Buffer

  • З'явився новий Buffer API, де зменшений ризик багів та вразливостей, що могли потрапити в додаток.

  • Поточний Buffer та SlowBuffer API оголошені застарілими.

  • Новий метод lastIndexOf було додано до прототипу Buffer

Та інше.

Нові можливості ES6

В новий реліз було додано нові фічі з ES6, що значно поліпшують та полегшують процес розробки.

Параметри за умовчуванням

Це було довгоочікуване нововведення в Node.js. До цього розробники були змушені писати так:

function functionWithDefaultValue(val) {
    val = val || {};
}

Тепер можна ось так:

function functionWithDefaultValue(val = {}) {

}

Розпакування аргументів

Цей новий оператор дозволяє передавати в функцію кожен елемент масиву як окремий параметр. До цього писали якось так:

function myFunc(x, y, z) {

}

var args = [0, 1, 2];
myFunc.apply(null, args);

Тепер можна ось так:

function myFunc(x, y, z) {

}

var args = [0, 1, 2];
myFunc(...args);

Залишкові параметри

Якщо ми хочемо написати на JS варіативну функцію нам потрібно було працювати з arguments, тепер же ми можемо для цього використовувати оператор ....

До:

function variadic() {
    console.log(arguments);
}

variadic(1, 22, 12, 13);
variadic('adfsd', {}, [1, 12]);

Після:

function variadic(...args) {
    console.log(args);
}

variadic(1, 22, 12, 13);
variadic('adfsd', {}, [1, 12]);

"А яка різниця?" — спитаєте ви? Різниця в тому, що arguments зберігає всі параметри, передані функції, а з новим оператором ви можете спочатку вказати декілька іменованих аргументів, а потім решту.

function argumentsDemo() {
    console.log(arguments);
}

argumentsDemo(2, 2, 24, 2, 4, 4, 2); // logs 2, 2, 24, 2, 4, 4, 2

function spreadDemo(a, b, ...spread) {
    console.log(a, b);
    console.log(spread);
}

// після перших двох ми можемо передати скільки завгодно параметрів
spreadDemo(1, 3, '24', 'lorem');
// виведе
// 1 3
// 24, lorem

Розпакування масивів

Ця фіча дозволяє присвоювати значення певних елементів масиву прямо в змінні.

var x = [1, 2, 3, 4, 5]  
var [y, z] = x  
console.log(y) // 1  
console.log(z) // 2  

Також таким чином можна поміняти значення змінних:

var a = 1;
var b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1

Більше тут.

Проксі

Проксі (Proxy) - це об'єкти, що змінюють стандартну поведінку фундаментальних операцій (отримання/встановлення властивості, перерахування, виклик функції). (Щось схоже на магічні методи в Python - прим. пер.)

В цьому прикладі число 37 буде повертатися, якщо потрібної властивості немає в об'єкті. Це реалізується встановленням обробника get:

var handler = {
    get: function(target, name){
        return name in target ? target[name] : 37;
    }
};

var p = new Proxy({}, handler);
p.a = 1;
p.b = undefined;

console.log(p.a, p.b); // 1, undefined
console.log('c' in p, p.c); // false, 37

Детальніше тут.

Reflect

Якщо ви писали на Java, PHP або чомусь такому, то ви, напевно, знайомі з рефлексією. Reflect - це рефлексія в javascript/node. Як пише MDN:

Reflect - вбудований об'єкт, що дає доступ до методів, що реалізують рефлексію

Символи

Символи (Symbols) — це унікальні та незмінні структури. Їх можна використовувати для ідентифікації об'єктів. Символи ніколи не дорівнюють один одному:

Symbol('scotch') !== Symbol('scotch');

Ця стаття детальніше розкриває тему символів.

Коли мені потрібно оновитися?

На момент написання статті (травень 2016) Node.js 6.0 була ще досить нестабільною, але вже в жовтні вона повинна стати LTS

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 6.2K
Приєднався: 7 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація