Apa yang dilakukan `simpul --harmony`?

180

Aplikasi simpul mengharuskan saya untuk menjalankan simpul dengan tanda harmoni, seperti:

node --harmony app.js

Apa bendera harmoni ini? Apa yang dilakukan dan mengapa aplikasi tidak dapat berjalan tanpanya?

Saya sudah mencoba melihat ke opsi baris perintah node ( node --help), tetapi juga tidak memberikan detail. Node docs juga tidak membantu.

jsalonen
sumber

Jawaban:

135

Mengetiknya man nodeada di bendera harmoni:

 --harmony_typeof (enable harmony semantics for typeof)
       type: bool  default: false
 --harmony_scoping (enable harmony block scoping)
       type: bool  default: false
 --harmony_modules (enable harmony modules (implies block scoping))       
        type: bool  default: false
 --harmony_proxies (enable harmony proxies)       
        type: bool  default: false
 --harmony_collections (enable harmony collections  (sets,  maps,  andweak maps))
       type: bool  default: false 
 --harmony (enable all harmony features (except typeof))
       type: bool  default: false

Demikian --harmonyjuga jalan pintas untuk mengaktifkan semua fitur harmoni (mis --harmony_scoping. --harmony_proxies, Dll.) Dari posting blog ini , tampaknya harmoni memungkinkan fitur ECMAScript 6 baru dalam bahasa. Alasan file Anda tidak akan berjalan tanpa harmoni adalah karena app.jsmungkin menggunakan fitur yang tidak kompatibel dari standar ECMAScript 6 baru (seperti pelingkupan blok, proxy, set, peta, dll.)

theabraham
sumber
59
Perlu disebutkan bahwa Harmony adalah nama yang digunakan untuk skrip ECMA baru . Harmony namespace berisi fitur-fitur yang merupakan proposal untuk bahasa tersebut .
eis
1
Terima kasih banyak! Itu semua masuk akal sekarang. Btw. ada ide apa yang setara man nodedi Windows? :)
jsalonen
3
@ jsalonen tidak ada satu, tetapi Anda bisa lakukan > node --v8-optionsuntuk mendapatkan barang-barang yang dimaksud di sini
eis
@ ya di Windows ada konvensi menggunakan --help(atau -h); yang bekerja dengan sebagian besar program konsol, jadi node -hbekerja, meskipun tidak ada perintah man spesifik. Tetapi tidak untuk perintah 'DOS' sendiri; bagi mereka yang dapat Anda lakukan help dir, help set, dll Sigh.
Jon Coombs
@ JonCoombs saya pikir /?lebih banyak digunakan dengan perintah "dos" lama. Tapi bagaimanapun juga tidak ada satu standar, saya pikir saya belum pernah melihat misalnya -hbanyak digunakan.
eis
10

Jika Anda ingin menjalankan fitur ECMAScript 6 di versi nodejs yang lebih lama, Anda bisa menggunakan --harmony flag. Versi terbaru dari node mendukung ES6 sehingga tidak perlu --harmony flag

Raghuveer Jaisingh Varma
sumber
4

Seperti disebutkan dalam Dokumentasi Node, --harmony flag memungkinkan fitur ES6 yang tidak stabil tetapi segera distabilkan

Perilaku saat ini --harmony flag di Node.js adalah untuk mengaktifkan fitur yang dipentaskan saja. Bagaimanapun, ini sekarang adalah sinonim dari --es_staging. Seperti disebutkan di atas, ini adalah fitur lengkap yang belum dianggap stabil. Jika Anda ingin bermain aman, terutama di lingkungan produksi, pertimbangkan untuk menghapus bendera runtime ini sampai dikirimkan secara default di V8 dan, akibatnya, di Node.js. Jika Anda tetap mengaktifkan ini, Anda harus siap untuk pemutakhiran Node.js lebih lanjut untuk memecahkan kode Anda jika V8 mengubah semantik mereka untuk lebih mengikuti standar.

Ignatius Andrew
sumber
0

Semua fitur ECMAScript 2015 (ES6) dibagi menjadi tiga grup untuk fitur pengiriman, bertahap, dan sedang berlangsung:

  • Semua fitur pengiriman , yang dianggap stabil oleh V8, diaktifkan secara default di Node.js dan TIDAK memerlukan jenis bendera runtime.

  • Fitur bertahap , yang hampir merupakan fitur lengkap yang tidak dianggap stabil oleh tim V8, memerlukan bendera runtime: - harmoni .

  • Dalam progres fitur dapat diaktifkan satu per satu dengan bendera harmoni masing-masing, meskipun ini sangat tidak disarankan kecuali untuk tujuan pengujian. Catatan: flag-flag ini diekspos oleh V8 dan berpotensi akan berubah tanpa pemberitahuan penghentian.

sumber : https://nodejs.org/en/docs/es6/

Aravin
sumber