Recursos do ECMAScript 6 disponíveis no Node.js 0.12

Uma nova versão estável do Node.js (0.12) chegou recentemente com o motor JavaScript do Google v8, v3.28.73 .

Quais resources do ECMAScript 6 estão atualmente presentes no Node.js, sem usar o flag --harmony ?

Eu verifiquei vários sites alegando listar os resources do ES 6, mas todos parecem desatualizados – mais proeminentemente, esta tabela ( Atualização: agora atualizada com o status atual do Node.js a partir de 0,12 ), porque vários dos resources são listados como exigindo o flag --harmony enquanto eu encontrei alguns deles sendo habilitados por padrão (Maps, Sets, Symbols, para citar alguns). Atualização : Tabelas específicas de nós já foram disponibilizadas

Além disso, tentar obter informações do Google exclusivamente para o mecanismo da versão 8 fornece informações atualizadas demais – a versão atual da versão 8 é 4.2. * , O que está bem à frente do que o Node.js usa.

Minha esperança é que essa pergunta (e suas respostas) se torne um resumo abrangente sobre quais resources do ES 6 estão agora disponíveis para os desenvolvedores do Node.js.

Recursos do ES 6 ativados no Node.js 0.12 Atualmente conheço:

  • Mapas, Sets / WeakMaps, WeakSets
  • Símbolos
  • Object.observe
  • Promessas
  • Número
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • Matemática
    • .clz32
    • .imul
    • .placa
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

    Funcionalidades sem flag --harmony :

    • loop “for-of”
    • Mapa , Set , WeakMap , WeakSet (já especificado em questão)
    • Símbolo (já especificado em questão)
    • Promessa (já especificada em questão)
    • Métodos de matriz:
      • .chaves()
      • .values ​​()
      • .entries ()
      • [Symbol.iterator]
    • Objeto:
      • .observe () (inicialmente foi planejado para ES7 , mas foi removido da especificação inteiramente em 2 de novembro de 2015)
      • .é()
      • .setPrototypeOf ()
      • .getOwnPropertySymbols ()
      • .getNotifier () (não es6, exemplo aqui )
      • .apply () e .call () (não es6, mesmo propósito que Funciton.prototype.call e Function.prototype.apply)
    • Propriedades numéricas e methods (já especificados em questão)
      • .isInteger ()
      • .isSafeInteger ()
      • .isNaN ()
      • .isFinite ()
      • EPSILON
      • MIN_SAFE_INTEGER
      • MAX_SAFE_INTEGER
    • Métodos matemáticos ( muitos deles ) (já especificados em questão)
    • constantes

    Eu acho que é tudo o que temos sem bandeira de --harmony .

    Recursos com flag --harmony :

    • geradores
    • funções de seta (sem necessidade de sinalizador --harmony_arrow_functions em contraste com io.js )
    • deixar variables – somente no strict mode
    • Literais binários e octal
    • Métodos de string:

      • .contains () (foi substituído por includes() na especificação real do ES6)
      • .começa com()
      • .termina com()
      • .codePointAt ()
      • .repetir()
      • .normalizar()
      • String.fromCodePoint
    • Proxy (atrás da --harmony-proxies )

    Eu acho que isso é tudo. Talvez se eu esqueci alguma coisa – vou adicioná-lo mais tarde à lista.

    Os resources do ES6 gotejam até o nó em fases. O Node usa o V8 do Google como o mecanismo JavaScript. Um recurso suportado no Node significa que ele deve ser implementado primeiro na V8 e, em seguida, a equipe do Node deve incorporá-lo no Node.js.

    A equipe do Google lança uma nova versão do V8 a cada seis semanas, e cabe à equipe do Node usá-lo.

    As listas de resources de idioma criadas manualmente são boas, mas podem ficar desatualizadas rapidamente. O nó 0.12 não está mais em stream, mas geralmente a lista curada manualmente torna-se obsoleta assim que uma nova versão do Node é lançada.

    Aqui estão duas maneiras alternativas de verificar quais resources uma versão do Node suporta, sem depender de uma lista estática. Para ler mais e exemplos mais detalhados de como usá-los, você pode verificar “Como verificar se o Node.js suporta o recurso de linguagem ES 6”

    # 1 Mesa de fácil compatibilidade

    Uma lista gerada dinamicamente que depende de pequenos testes para confirmar a presença de um recurso de idioma permanece atualizada. Uma dessas listas populares é kangax.github.io/compat-table/es6/. Estamos interessados ​​apenas nos resources do Node, para que você possa usar

    http://node.green

    que aproveita os mesmos dados que o site kangax.

    # 2 Hard – backtrack versão V8

    O nó usa o mecanismo V8, portanto, determinar qual versão da V8 está incluída no Nó nos diz quais resources da linguagem ES6 são suportados. Você pode descobrir qual versão do V8 foi empacotada no nó com o node -p process.versions.v8 .

     $ node -p process.versions.v8 4.6.85.31 

    Depois, usando os resources do projeto V8 do Google, você pode descobrir quais resources são implementados em cada versão. O projeto V8 mantém um rastreador de problemas, onde você pode encontrar o ES6 + além dos resources marcados com o label de harmonia .