Fitur ECMAScript 6 tersedia di Node.js 0.12

162

Rilis stabil baru Node.js (0.12) baru-baru ini mendarat dengan mesin JavaScript v8 Google yang ditingkatkan, v3.28.73 .

Fitur ECMAScript 6 apa yang saat ini hadir di Node.js, tanpa menggunakan --harmonyflag?

Saya telah memeriksa beberapa situs yang mengklaim mencantumkan fitur ES 6 tetapi semuanya tampaknya ketinggalan zaman - yang paling penting, tabel ini ( Pembaruan: sekarang diperbarui dengan status Node.js saat ini pada 0,12 ), karena beberapa fitur terdaftar sebagai membutuhkan --harmonybendera sementara saya menemukan beberapa dari mereka diaktifkan secara default (Peta, Set, Simbol, untuk beberapa nama). Pembaruan : Tabel spesifik node sejak itu telah tersedia

Juga, mencoba untuk google informasi ini semata-mata untuk mesin v8 memberikan informasi yang terlalu up-to-date - rilis v8 saat ini adalah 4.2. * , Yang cukup maju dari apa yang Node.js gunakan.

Harapan saya adalah bahwa pertanyaan ini (dan jawabannya) akan menjadi ringkasan komprehensif tentang apa fitur ES 6 sekarang tersedia untuk pengembang Node.js.

Fitur ES 6 diaktifkan di Node.js 0.12 Saat ini saya tahu:

  • Maps, Sets / WeakMaps, WeakSets
  • Simbol
  • Object.observe
  • Janji
  • Jumlah
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • Matematika
    • .clz32
    • .imul
    • .tanda
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .tongkat pendek
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot
Robert Rossmann
sumber
9
"Harapan saya adalah bahwa pertanyaan ini (dan jawabannya) akan menjadi ringkasan komprehensif tentang apa fitur ES 6 sekarang tersedia untuk pengembang Node.js." - Kemungkinannya adalah itu akan menjadi kekacauan yang tidak terorganisir ... yang sudah ketinggalan zaman seperti semua sumber daya lainnya !! Kecuali jika Anda 1) menjawab sendiri dan 2) meluangkan waktu untuk mengumpulkan jawaban lain ke dalam jawaban Anda. Jika Anda siap untuk melakukan pekerjaan itu, maka mungkin lebih tepat untuk melakukannya di blog.
Stephen C
2
Atau hanya beralih ke io.js (yang kapal dengan jauh lebih up to date V8 versi) dan mengawasi pada ES6 pada halaman io.js .
Fabrício Matté
2
Tabel kompatibilitas Cur6 ES6: kangax.github.io/compat-table/es6
Fabrício Matté
2
@ JonathanLonowski menarik, aneh bahwa saya tidak dapat menemukan masalah / PR tentang Node 0.12. sunting: mengajukan masalah .
Fabrício Matté
1
@RobertRossmann - Siapa pun dapat memiliki blog. Saya tidak meragukan tujuan Anda. Hanya saja saya tidak berpikir ini akan berhasil ... kecuali seseorang (yaitu >> Anda <<) melakukan upaya >> << untuk membuatnya bekerja.
Stephen C

Jawaban:

250

Fitur tanpa --harmonybendera:

Saya pikir hanya itu yang kita miliki tanpa --harmonybendera.

Fitur dengan --harmonybendera:

Saya pikir itu saja. Mungkin jika saya lupa sesuatu - nanti saya tambahkan ke daftar.

alexpods
sumber
8
Ini adalah jawaban yang saya harapkan - bersih, dan dengan tautan ke dokumen / contoh! Poin ekstra untuk daftar fitur di bawah --harmonybendera. :)
Robert Rossmann
2
Templat string keluar dengan atau tanpa --harmony? Seperti pada ${varname}sintaks string centang belakang ?
Sukima
5
@Sukima Node v0.12 tidak mendukung string template , atau dengan --harmonyflag, atau tanpa itu. Tetapi iojs mendukung mereka tanpa perlu bendera apa pun.
alexpods
1
Apakah nodejs ini didokumentasikan di mana saja? Itu sangat berguna.
Justin Hamade
1
@JonRed Mungkin perjalanan Anda gagal karena alasan lain, bukan karena konstanta. Saya baru saja mencobanya dan menjalankan saya bekerja dengan cukup baik.
alexpods
4

Fitur ES6 mengalir ke Node secara bertahap. Node menggunakan Google V8 sebagai mesin JavaScript. Fitur yang didukung di Node berarti pertama-tama harus diimplementasikan di V8 dan kemudian tim Node harus memasukkannya di Node.js.

Tim di Google merilis versi baru V8 kira-kira setiap enam minggu, dan kemudian terserah tim Node untuk menggunakannya.

Daftar fitur bahasa yang dikuratori secara manual bagus tetapi dapat menjadi usang dengan cepat. Node 0.12 tidak lagi berubah, tetapi biasanya daftar yang dikuratori secara manual menjadi usang segera setelah Node versi baru diluncurkan.

Berikut adalah dua cara alternatif untuk memeriksa fitur apa yang didukung oleh versi Node, tanpa bergantung pada daftar statis. Untuk membaca lebih lanjut dan contoh-contoh lebih rinci tentang penggunaan ini, Anda dapat memeriksa "Bagaimana cara memeriksa apakah Node.js mendukung fitur bahasa ES 6"

# 1 Mudah - tabel kompatibilitas

Daftar yang dibuat secara dinamis yang mengandalkan tes kecil untuk mengonfirmasi keberadaan fitur bahasa tetap lebih baik. Salah satu daftar populer tersebut adalah kangax.github.io/compat-table/es6/. Kami hanya tertarik pada fitur Node, sehingga Anda dapat menggunakannya

http://node.green

yang memanfaatkan data yang sama dengan situs kangax.

# 2 Hard - backtrack versi V8

Node menggunakan mesin V8, jadi menentukan versi V8 mana yang termasuk dalam Node memberi tahu kami apa fitur bahasa ES6 yang didukung. Anda dapat mengetahui versi V8 yang dibundel dengan Node node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Kemudian menggunakan sumber daya proyek V8 Google Anda dapat menemukan fitur mana yang diterapkan di setiap versi. Proyek V8 menyimpan pelacak masalah di mana Anda dapat menemukan ES6 + di luar fitur yang ditandai dengan label harmoni .

pspi
sumber