Що робить `вузол - гармонія`?


180

Застосування вузла вимагає від мене запустити вузол із прапором гармонії, наприклад:

node --harmony app.js

Що це за прапор гармонії? Що це робить і чому додаток не може працювати без нього?

Я спробував розглянути параметри командного рядка вузла ( node --help), але він також не містить деталей. Документи з вузлами також не допомогли.

Відповіді:


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
Варто зазначити, що Гармонія - це ім'я, яке використовується для нового сценарію ECMA . Простір імен Harmony містить функції, що є пропозиціями для цієї мови .
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і т.д. Зітхання.
Джон Кумбс

@JonCoombs Я думаю /?, що більше використовується зі старими командами "dos". Але все одно немає одного стандарту, я не думаю, що я бачив, наприклад, що -hвикористовувався багато.
ей

10

Якщо ви хочете запустити функції ECMAScript 6 у старшій версії nodejs, ви можете використовувати прапор --harmony. Остання версія вузла підтримує ES6, тому немає необхідності - прапор гармонії



4

Як уже згадувалося в Документації про вузол, - прапор гармонії дозволяє нестабільні, але незабаром стабільні функції ES6

Поточна поведінка прапора --harmony на Node.js полягає в тому, щоб увімкнути лише поетапні функції. Зрештою, це тепер синонім --es_staging. Як було сказано вище, це завершені функції, які ще не вважалися стабільними. Якщо ви хочете грати в безпеку, особливо у виробничих середовищах, подумайте про видалення цього прапора, поки він не надходить за замовчуванням на V8 і, отже, на Node.js. Якщо увімкнено цю функцію, вам слід бути готовим до подальших оновлень Node.js, щоб порушити ваш код, якщо V8 змінить їх семантику, щоб більш чітко слідувати стандарту.


0

Усі функції ECMAScript 2015 (ES6) розділені на три групи для функцій доставки, поетапної та поточної роботи:

  • Усі функції доставки , які V8 вважає стабільними, увімкнено за замовчуванням на Node.js і не вимагають будь-якого прапора часу виконання.

  • Поетапні функції , які є майже завершеними функціями, які команда V8 не вважає стабільними, вимагають прапор часу виконання: - гармонія .

  • У процесі роботи функції можна активувати окремо відповідним прапором гармонії, хоча це вкрай не рекомендується, крім випадків тестування. Примітка: ці прапори піддаються впливу V8 і потенційно можуть змінюватися без будь-якого повідомлення про анулювання.

джерело : https://nodejs.org/en/docs/es6/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.