Стабильный релиз Node v5

от автора


На прошлой неделе состоялся релиз Nodejs v5. Эта ветка включает в себя порцию новых возможностей и будет развиваться параллельно c веткой Node v4.x, которая яляется стабильной LTS веткой с длительным сроком поддержки в 30 месяцев. Релизы Node v5.x будут осуществляться раз в 8 месяцев.

Если вы решитесь перейти на эту версию, то вам стоит знать, что это потребует пересборки установленных сторонних расширений, а так же есть изменения, гарушающие обратную совместимость. Имейте это в виду.

Подробности под катом.

И так, что же нового:

  • Разработчики перешли на новую версию движка V8: 4.6.85.25.
  • npm обновлён до версии 3.3.6.
  • Добавлена возможность передачи файловых дескрипторов в вызовы функций fs.readFile*(), fs.writeFile*() и fs.appendFile*().
  • Изменён формат вывода console.time
  • В объекте buffer удалены типы кодировок ‘raw’ и ‘raws’
  • Прекращена поддержка вызовов require.paths, util.p(), util.inherits(), require.registerExtension()
  • Ужесточены требования к именам методов и заголовков HTTP
  • В модуль tls добавлена поддержка ALPN. Теперь минимальный размер ключа DH для tls.connect() увеличен до 1024 бит.
  • Прекращена поддержка модуля _linklist.

Полный перечень изменений можно найти в официальном блоге по ссылке nodejs.org/en/blog/release/v5.0.0

Поддержка новых синтаксических инструкций ES6

Поддержка new.target

Оператор new теперь используется не только для создания новых объектов, но и для возможности контролировать создаваемый объект и получать информацию об объекте. Оператор new.target вернет ссылку на конструктор функции при создании объекта. при обычном вызове функции new.target возвращает undefined.

Примеры использования

new.target in function calls

function Foo() {   if (!new.target) throw "Foo() must be called with new";   console.log("Foo instantiated with new"); }  Foo(); // throws "Foo() must be called with new" new Foo(); // logs "Foo instantiated with new" 

new.target in constructors

 class A {   constructor() {     console.log(new.target.name);   } }  class B extends A { constructor() { super(); } }  var a = new A(); // logs "A" var b = new B(); // logs "B" 
Поддержка Spread operator

Spread operator позволяет разворачивать выражения в случаях, где предусмотрено использование нескольких аргументов, таких как вызовы функций или в качестве литералов массивов.

При вызовах функций:

f(...iterableObj); 

В литералах массивов:

[...iterableObj, 4, 5, 6] 

При деструктивном присваивании:

[a, b, ...iterableObj] = [1, 2, 3, 4, 5]; 

Где может использоваться

let arr1 = [0, 1, 2],      arr2 = [3, 4, 5];  //Раньше мы писали так Array.prototype.push.apply(arr1, arr2);  //Теперь это же можно написать так arr1.push(...arr2); 

У разработчиков уже в планах выпуск новой версии Node v6, который запланирован на апрель 2016 года. Эта версия уже должна будет получить статус LTS.

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


Комментарии

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

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