Функции ECMAScript 6, доступные в Node.js 0,12

162

Недавно появился новый стабильный выпуск Node.js (0.12) с обновленным движком Google v8 JavaScript, v3.28.73 .

Какие функции ECMAScript 6 в настоящее время присутствуют в Node.js без использования --harmonyфлага?

Я проверил несколько сайтов, претендующих на перечисление функций ES 6, но все они выглядят устаревшими - наиболее заметно, эта таблица ( Обновление: теперь обновляется с текущим статусом Node.js по состоянию на 0.12 ), потому что некоторые функции перечислены как требует --harmonyфлаг, пока я обнаружил, что некоторые из них включены по умолчанию (Карты, Наборы, Символы, чтобы назвать несколько). Обновление : с тех пор стали доступны специальные таблицы узлов

Кроме того, попытка отыскать эту информацию исключительно для движка v8 дает слишком актуальную информацию - текущая версия v8 - 4.2. * , Что значительно опережает то, что использует Node.js.

Я надеюсь, что этот вопрос (и его ответы) станут исчерпывающим описанием того, какие функции ES 6 теперь доступны для разработчиков Node.js.

Функции ES 6, включенные в Node.js 0.12, о которых я в настоящее время знаю:

  • Карты, Наборы / Слабые Карты, Слабые Наборы
  • Символы
  • Object.observe
  • обещания
  • Число
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • epsi;
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • математический
    • .clz32
    • .imul
    • .подписать
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot
Роберт Россманн
источник
9
«Я надеюсь, что этот вопрос (и его ответы) станет исчерпывающим описанием того, какие функции ES 6 теперь доступны разработчикам Node.js». - Скорее всего, это просто станет неорганизованным беспорядком ... который так же устарел, как и все другие ресурсы! Если только вы 1) не ответите себе и 2) не пожалеете времени, чтобы составить ответ на свой вопрос. Если вы готовы сделать эту работу, то, возможно, более целесообразно сделать это в блоге.
Стивен С
2
Или просто переключиться на io.js (который поставляется с гораздо более до даты V8 версии) и держать глаз на ES6 на io.js странице .
Фабрисио Мате
2
Таблица совместимости с ES6: kangax.github.io/compat-table/es6
Фабрицио Мате
2
@JonathanLonowski интересно, странно, что я не могу найти проблему / PR относительно Node 0.12. редактировать: подал вопрос .
Фабрицио Мате
1
@RobertRossmann - Любой может иметь блог. Я не сомневаюсь в твоей цели. Просто я не думаю, что это сработает ... если кто-то (то есть >> вы <<) не приложит усилия >>, чтобы заставить его работать.
Стивен С

Ответы:

250

Особенности без --harmonyфлага:

Я думаю, что это все, что у нас есть без --harmonyфлага.

Особенности с --harmonyфлагом:

Я думаю, что это все. Может быть, если я что-то забыл - я добавлю это позже в список.

alexpods
источник
8
Это именно тот ответ, который я надеялся получить - чистый и со ссылками на документы / примеры! Дополнительные баллы за перечисление функций под --harmonyфлагом. :)
Роберт Россманн
2
Шаблоны строк отсутствуют или нет --harmony? Как в ${varname}синтаксисе обратной галочки ?
Суким
5
@Sukima Node v0.12 не поддерживает строки шаблона , ни с --harmonyфлагом, ни без него. Но iojs поддерживает их без необходимости каких-либо флагов.
alexpods
1
У nodejs есть это где-нибудь? Это очень полезно.
Джастин Хамаде
1
@JonRed Может быть, ваш бег не удался по другой причине, а не из-за постоянной. Я только что попробовал это, и мой пробег работает довольно хорошо.
alexpods
4

Особенности ES6 просачиваются к узлу поэтапно. Узел использует Google V8 в качестве движка JavaScript. Функция, поддерживаемая в Node, означает, что сначала она должна быть реализована в V8, а затем команда Node должна включить ее в Node.js.

Команда Google выпускает новую версию V8 примерно каждые шесть недель, а затем команда разработчиков Node может использовать ее.

Вручную составленные списки языковых функций хороши, но могут быстро устареть. Узел 0.12 больше не является текучим, но обычно список, созданный вручную, становится устаревшим, как только выходит новая версия Node.

Вот два альтернативных способа проверить, какие функции поддерживает версия Node, не полагаясь на статический список. Для дальнейшего чтения и более подробных примеров их использования вы можете проверить «Как проверить, поддерживает ли Node.js языковую функцию ES 6»

# 1 Easy - таблица совместимости

Динамически генерируемый список, который опирается на небольшие тесты для подтверждения наличия языковой функции, остается в актуальном состоянии. Одним из таких популярных списков является kangax.github.io/compat-table/es6/. Нас интересуют только функции Node, поэтому вы можете использовать

http://node.green

который использует те же данные, что и сайт kangax.

# 2 Hard - версия с возвратом в V8

Node использует движок V8, поэтому определение, какая версия V8 включена в Node, говорит нам о том, какие функции языка ES6 поддерживаются. Вы можете узнать, какая версия V8 была включена в Node node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Затем, используя ресурсы проекта Google V8, вы можете найти, какие функции реализованы в каждой версии. Проект V8 поддерживает систему отслеживания проблем, где вы можете найти ES6 + помимо функций, отмеченных меткой гармонии .

ПГПИ
источник