`node --harmony 'ทำอะไร


180

แอปพลิเคชันโหนดต้องการให้ฉันเรียกใช้โหนดด้วยค่าสถานะความสามัคคีเช่น:

node --harmony app.js

ธงความสามัคคีนี้คืออะไร? มันทำอะไรและทำไมแอพไม่สามารถทำงานได้หากไม่มี?

ฉันได้ลองดูตัวเลือกบรรทัดคำสั่งของโหนด ( node --help) แต่ก็ไม่ได้ให้รายละเอียดใด ๆ Node docs ไม่ได้ช่วยอะไรเลย

คำตอบ:


135

การพิมพ์man nodeมีสิ่งนี้บนธงความสามัคคี:

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

ดังนั้น--harmonyทางลัดในการเปิดใช้งานคุณสมบัติความสามัคคีทั้งหมด (เช่น--harmony_scopingและ--harmony_proxiesอื่น ๆ ) จากโพสต์บล็อกนี้ดูเหมือนว่าความสามัคคีจะเปิดใช้งานคุณสมบัติ ECMAScript 6 ใหม่ในภาษา เหตุผลที่ไฟล์ของคุณจะไม่ทำงานหากไม่มีความสอดคล้องกันapp.jsอาจเป็นเพราะอาจใช้คุณสมบัติที่เข้ากันได้แบบไม่ย้อนกลับจากมาตรฐาน ECMAScript 6 ใหม่ (เช่นการกำหนดขอบเขตบล็อกพร็อกซีชุดแผนที่และอื่น ๆ )


59
มันเป็นมูลค่าการกล่าวขวัญว่าความสามัคคีเป็นชื่อที่ใช้สำหรับ ECMAscript Harmony namespace มีคุณสมบัติที่เป็นข้อเสนอสำหรับภาษานั้น
eis

1
ขอบคุณมาก! ทุกอย่างสมเหตุสมผลแล้ว Btw ความคิดใดที่เทียบเท่ากับman nodeใน Windows :)
jsalonen

3
@jsalonen มีไม่หนึ่ง แต่คุณสามารถทำได้> node --v8-optionsเพื่อให้ได้สิ่งที่เรียกว่าที่นี่
EIS

@eis ใน Windows มีระเบียบปฏิบัติในการใช้--help(หรือ-h); ที่ทำงานกับโปรแกรมคอนโซลส่วนใหญ่ได้node -hผลแม้ว่าจะไม่มีคำสั่ง man แต่ไม่ใช่สำหรับคำสั่ง 'DOS' ด้วยตนเอง สำหรับผู้ที่คุณสามารถทำได้help dir, help setฯลฯ เฮ้อ
Jon Coombs

@ JonCoombs ฉันคิดว่า/?ใช้กับคำสั่ง "dos" แบบเก่ามากกว่า แต่อย่างไรก็ตามไม่มีมาตรฐานเดียวฉันไม่คิดว่าฉันเคยเห็นตัวอย่างที่-hใช้มากนัก
eis

10

หากคุณต้องการรันคุณลักษณะ ECMAScript 6 ใน nodejs เวอร์ชันเก่ากว่าคุณสามารถใช้ --harmony flag โหนดรุ่นล่าสุดรองรับ ES6 ดังนั้นไม่จำเป็นต้องใช้ --harmony flag



4

ดังที่กล่าวไว้ในเอกสารโหนด - แฟล็กฮาร์โมนีช่วยให้คุณสมบัติไม่เสถียร แต่ tobe เร็ว ๆ นี้คุณลักษณะที่เสถียรของ ES6

พฤติกรรมปัจจุบันของแฟล็ก --harmony บน Node.js คือการเปิดใช้งานฟีเจอร์ staged เท่านั้น ท้ายที่สุดมันก็กลายเป็นคำพ้องความหมายของ - es_staging ตามที่กล่าวไว้ข้างต้นสิ่งเหล่านี้เป็นคุณสมบัติที่สมบูรณ์ซึ่งยังไม่ได้รับการพิจารณาว่าเสถียร หากคุณต้องการเล่นอย่างปลอดภัยโดยเฉพาะอย่างยิ่งในสภาพแวดล้อมการผลิตให้ลองลบการตั้งค่าสถานะรันไทม์นี้จนกว่าจะมีการจัดส่งตามค่าเริ่มต้นใน V8 และตามลำดับบน Node.js หากคุณเปิดใช้งานนี้คุณควรเตรียมพร้อมสำหรับการอัพเกรด Node.js เพิ่มเติมเพื่อทำลายรหัสของคุณหาก V8 เปลี่ยนซีแมนทิกส์ของพวกเขาให้เป็นไปตามมาตรฐานอย่างใกล้ชิดยิ่งขึ้น


0

ฟีเจอร์ ECMAScript 2015 (ES6) ทั้งหมดจะถูกแบ่งออกเป็นสามกลุ่มสำหรับการขนส่งการจัดแสดงและคุณลักษณะที่กำลังดำเนินอยู่:

  • คุณลักษณะการจัดส่งทั้งหมดซึ่ง V8 พิจารณาว่ามีความเสถียรจะเปิดใช้งานตามค่าเริ่มต้นบน Node.js และไม่ต้องการการตั้งค่าสถานะรันไทม์ใด ๆ

  • คุณลักษณะฉากซึ่งมีคุณสมบัติที่จะไม่ถือว่ามีเสถียรภาพโดยทีม V8 เกือบเสร็จต้องใช้ธงรันไทม์: - ความสามัคคี

  • คุณลักษณะความคืบหน้าสามารถเปิดใช้งานแยกกันได้โดยการตั้งค่าสถานะความสามัคคีที่เกี่ยวข้องแม้ว่าจะไม่ได้รับการยกเว้น หมายเหตุ: แฟล็กเหล่านี้ถูกเปิดเผยโดย V8 และอาจเปลี่ยนแปลงได้โดยไม่ต้องแจ้งให้ทราบล่วงหน้า

แหล่งที่มา : https://nodejs.org/en/docs/es6/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.