`Nod --harmony` ne yapar?


180

Bir düğüm uygulaması, düğümü bir uyum bayrağıyla çalıştırmamı gerektirdi, örneğin:

node --harmony app.js

Bu uyum bayrağı nedir? Ne işe yarar ve uygulama neden onsuz çalışamaz?

Düğüm komut satırı seçenekleri ( node --help) bakarak denedim , ama herhangi bir ayrıntı sağlamaz. Düğüm dokümanları da yardımcı olmadı.

Yanıtlar:


135

Yazmanın man nodeuyum bayrağı üzerinde bu vardır:

 --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

Yani --harmonytüm uyum özelliklerini (örneğin --harmony_scoping, --harmony_proxiesvb.) Etkinleştirmek için bir kısayol Bu blog yazısından , uyum yeni ECMAScript 6 özelliklerini dilde etkinleştirir gibi görünüyor. Dosyanızın app.jsuyumsuz çalışmamasının nedeni , muhtemelen yeni ECMAScript 6 standardından geriye dönük uyumlu olmayan özellikler kullanmasıdır (blok kapsam belirleme, proxy'ler, kümeler, haritalar vb.)


59
Harmony'nin yeni ECMAscript için kullanılan isim olduğunu belirtmek gerekir . Uyum ad alanı, o dil için teklif olan özellikler içerir .
eis

1
Çok teşekkürler! Şimdi hepsi anlam kazanıyor. Btw. herhangi bir fikir man nodeWindows eşdeğeri nedir? :)
jsalonen

3
@jsalonen bir tane yok, ama > node --v8-optionsburada belirtilen şeyleri almak için yapabilirsiniz
eis

@eis Windows'da --help(veya -h) kullanma kuralı vardır ; çoğu konsol programında node -hçalışır , bu nedenle belirli bir man komutu olmasa bile çalışır. Ancak 'DOS' komutlarının kendileri için değil; Yapabileceğiniz olanlar için help dir, help setvb Kederlen.
Jon Coombs

@JonCoombs Bence /?daha eski "dos" komutları ile kullanılır. Ama yine de tek bir standart yok, örneğin -hçok fazla kullandığımı sanmıyorum .
eis

10

ECMAScript 6 özelliklerini nodejs'nin eski sürümünde çalıştırmak istiyorsanız, --harmony işaretini kullanabilirsiniz. Düğümün son sürümü ES6'yı destekler, böylece - uyum bayrağına gerek yoktur



4

Düğüm Dokümantasyonunda belirtildiği gibi, --harmony bayrağı ES6'nın kararlı olmayan ancak kısa bir süre boyunca sabitlenmiş özelliklerini mümkün kılar

Noharm.js üzerindeki --harmony bayrağının geçerli davranışı yalnızca aşamalı özellikleri etkinleştirmektir. Sonuçta, şimdi --es_staging ile eşanlamlı. Yukarıda belirtildiği gibi, bunlar henüz kararlı olarak kabul edilmeyen tamamlanmış özelliklerdir. Özellikle üretim ortamlarında güvenli oynamak istiyorsanız, bu çalışma zamanı bayrağını varsayılan olarak V8'de ve sonuç olarak Node.js'de gönderilinceye kadar kaldırmayı düşünün. Bunu etkinleştirirseniz, V8 anlamsallıklarını standardı daha yakından takip edecek şekilde değiştirirse, kodunuzu kırmak için daha fazla Node.js yükseltmesine hazır olmalısınız.


0

Tüm ECMAScript 2015 (ES6) özellikleri gönderim, aşamalı ve devam eden özellikler için üç gruba ayrılır:

  • V8'in kararlı olduğunu düşündüğü tüm gönderim özellikleri Node.js'de varsayılan olarak açıktır ve herhangi bir çalışma zamanı bayrağı GEREKMEZ.

  • V8 ekibi tarafından kararlı sayılmayan neredeyse tamamlanmış özellikler olan aşamalı özellikler için bir çalışma zamanı bayrağı gerekir: - uyum .

  • Devam eden özellikler , ilgili uyum bayraklarıyla ayrı ayrı etkinleştirilebilir, ancak test amaçları dışında bu durum kesinlikle önerilmez. Not: Bu bayraklar V8 tarafından gösterilir ve kullanımdan kaldırılma bildirimi olmadan değişebilir.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.