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

162

Uma nova versão estável do Node.js (0.12) foi lançada recentemente com o mecanismo JavaScript v8 do Google atualizado, v3.28.73 .

Quais recursos do ECMAScript 6 estão presentes no Node.js, sem o uso do --harmonysinalizador?

Verifiquei vários sites que alegam listar os recursos do ES 6, mas todos parecem desatualizados - com destaque, esta tabela ( atualização: agora atualizada com o status atual do Node.js a partir de 0,12 ), porque vários dos recursos estão listados como exigindo a --harmonysinalização enquanto eu encontrava alguns deles ativados por padrão (mapas, conjuntos, símbolos, para citar alguns). Atualização : As tabelas específicas do nó foram disponibilizadas desde então

Além disso, tentar pesquisar essas informações no Google exclusivamente para o mecanismo da v8 fornece informações muito atualizadas - a versão atual da v8 é 4.2. * , Que está bem à frente do que o Node.js usa.

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

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

  • Mapas, Conjuntos / 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
Robert Rossmann
fonte
9
"Minha esperança é que esta pergunta (e suas respostas) se torne um resumo abrangente sobre quais recursos do ES 6 estão agora disponíveis para os desenvolvedores do Node.js." - As chances são de que isso simplesmente se torne uma bagunça desorganizada ... tão desatualizada quanto todos os outros recursos! A menos que você 1) responda a si mesmo e 2) reserve um tempo para selecionar as outras respostas nas suas. Se você estiver preparado para fazer esse trabalho, talvez seja mais apropriado fazê-lo em um blog.
Stephen C
2
Ou apenas mudar para io.js (que vem com uma versão muito mais atualizado V8) e manter um olho sobre o ES6 em io.js página .
Fabrício Matté 07/02
2
Tabela de compatibilidade ES6 com curadoria
Fabrício Matté 07/02
2
@ JonathanLonowski interessante, é estranho que eu não consiga encontrar um problema / PR referente ao nó 0.12. edit: registrou um problema .
Fabrício Matté 08/02
1
@RobertRossmann - Qualquer um pode ter um blog. Não estou duvidando do seu objetivo. É que não acho que isso funcione ... a menos que alguém (ou seja, >> você <<) faça o esforço >> para fazê-lo funcionar.
Stephen C

Respostas:

250

Recursos sem --harmonybandeira:

Eu acho que é tudo o que temos sem --harmonybandeira.

Recursos com --harmonybandeira:

Eu acho que isso é tudo. Talvez se eu esqueci alguma coisa - adicionarei mais tarde à lista.

alexpods
fonte
8
Esse é exatamente o tipo de resposta que eu esperava obter - limpo e com links para documentos / exemplos! Pontos extras para listar recursos sob a --harmonybandeira :).
Robert Rossmann
2
Modelos de string estão com ou sem --harmony? Como na ${varname}sintaxe da string de tick anterior ?
Sukima
5
O @Sukima Node v0.12 não suporta seqüências de caracteres de modelo , nem com --harmonyflag, nem sem ele. Mas os iojs suporta sem a necessidade de nenhuma sinalização.
Alexpods
1
O nodejs tem isso documentado em algum lugar? É muito útil.
11118 Justin Hamade
1
@ JonRed Talvez sua execução tenha falhado por outro motivo, não por causa de uma constante. Eu apenas tentei e minha corrida funciona muito bem.
Alexpods
4

Os recursos do ES6 chegam ao Nó em fases. O nó usa a V8 do Google como o mecanismo JavaScript. Um recurso suportado no Node significa que ele primeiro deve ser implementado 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 aproximadamente a cada seis semanas e, em seguida, cabe à equipe do Node usá-lo.

As listas com curadoria manual de recursos de idioma são boas, mas podem ficar desatualizadas rapidamente. O Nó 0.12 não está mais no fluxo, mas a lista com curadoria normalmente manual se torna obsoleta assim que uma nova versão do Nó é lançada.

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

# 1 Fácil - tabela de compatibilidade

Uma lista gerada dinamicamente que se baseia em pequenos testes para confirmar a presença de um recurso de idioma permanece melhor atualizada. Uma dessas listas populares é kangax.github.io/compat-table/es6/. Estamos interessados ​​apenas nos recursos 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 do V8 está incluída no nó indica quais recursos de idioma do ES6 são suportados. Você pode descobrir qual versão do V8 foi incluída no Node node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Em seguida, usando os recursos do projeto V8 do Google, você pode descobrir quais recursos são implementados em cada versão. O projeto V8 mantém um rastreador de problemas em que você pode encontrar o ES6 + além dos recursos marcados com o rótulo de harmonia .

pspi
fonte