`Nút --harmony` làm gì?


180

Một ứng dụng nút đã yêu cầu tôi chạy nút có cờ hài hòa, như:

node --harmony app.js

Lá cờ hài hòa này là gì? Nó làm gì và tại sao ứng dụng không thể chạy mà không có nó?

Tôi đã thử xem xét các tùy chọn dòng lệnh nút ( node --help), nhưng nó cũng không cung cấp bất kỳ chi tiết nào. Các tài liệu nút không phải là bất kỳ trợ giúp.

Câu trả lời:


135

man nodecó cái này trên cờ hòa hợp:

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

Vì vậy, --harmonylà một phím tắt để cho phép tất cả các tính năng hòa hợp (ví dụ --harmony_scoping, --harmony_proxiesvv) Từ bài viết trên blog này , có vẻ như sự hài hòa cho phép mới ECMAScript 6 tính năng trong ngôn ngữ. Lý do tệp của bạn sẽ không chạy mà không hài hòa là vì app.jscó thể sử dụng các tính năng không tương thích ngược từ tiêu chuẩn ECMAScript 6 mới (như phạm vi khối, proxy, bộ, bản đồ, v.v.)


59
điều đáng nói là Harmony là tên được sử dụng cho ECMAscript mới . Không gian tên Harmony chứa các tính năng là đề xuất cho ngôn ngữ đó .
eis

1
Cảm ơn rất nhiều! Điều này thật ý nghĩa ngay lúc này. Btw. bất kỳ ý tưởng tương đương với man nodetrong Windows là gì? :)
jsalonen

3
@jsalonen không có ai, nhưng bạn có thể làm > node --v8-optionsđể có được những thứ được giới thiệu ở đây
eis

@eis trong Windows có quy ước sử dụng --help(hoặc -h); hoạt động với hầu hết các chương trình điều khiển, vì vậy node -hhoạt động, mặc dù không có lệnh man cụ thể. Nhưng không phải cho các lệnh 'DOS'; đối với những người bạn có thể làm help dir, help setvv Sigh.
Jon Coombs

@JonCoombs Tôi nghĩ /?được sử dụng nhiều hơn với các lệnh "dos" cũ. Nhưng dù sao không có một tiêu chuẩn, tôi không nghĩ rằng tôi đã thấy ví dụ -hđược sử dụng nhiều.
eis

10

Nếu bạn muốn chạy các tính năng ECMAScript 6 trong phiên bản cũ hơn của nodejs, bạn có thể sử dụng cờ --harmony. Phiên bản mới nhất của nút hỗ trợ ES6 nên không cần cờ --harmony



4

Như đã đề cập trong Tài liệu nút, cờ --harmony cho phép các tính năng không ổn định nhưng sẽ sớm ổn định của ES6

Hành vi hiện tại của cờ --harmony trên Node.js là chỉ bật các tính năng theo giai đoạn. Rốt cuộc, bây giờ nó là một từ đồng nghĩa của --es_staging. Như đã đề cập ở trên, đây là những tính năng đã hoàn thành chưa được coi là ổn định. Nếu bạn muốn chơi an toàn, đặc biệt là trên các môi trường sản xuất, hãy xem xét xóa cờ thời gian chạy này cho đến khi nó được mặc định xuất hiện trên V8 và do đó, trên Node.js. Nếu bạn bật tính năng này, bạn nên chuẩn bị cho các bản nâng cấp Node.js tiếp theo để phá mã nếu V8 thay đổi ngữ nghĩa của chúng để tuân thủ chặt chẽ hơn tiêu chuẩn.


0

Tất cả các tính năng ECMAScript 2015 (ES6) được chia thành ba nhóm để vận chuyển, dàn dựng và trong các tính năng tiến bộ:

  • Tất cả các tính năng vận chuyển , mà V8 coi là ổn định, được bật theo mặc định trên Node.js và KHÔNG yêu cầu bất kỳ loại cờ thời gian chạy nào.

  • Các tính năng được dàn dựng , là các tính năng gần như đã hoàn thành mà nhóm V8 không coi là ổn định, yêu cầu cờ thời gian chạy: - hài hòa .

  • Trong các tính năng tiến trình có thể được kích hoạt riêng bởi cờ hài hòa tương ứng của chúng, mặc dù điều này rất không được khuyến khích trừ khi cho mục đích thử nghiệm. Lưu ý: những cờ này được hiển thị bằng V8 và sẽ có khả năng thay đổi mà không có bất kỳ thông báo phản đối nào.

nguồn : https://nodejs.org/en/docs/es6/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.