Зачем нужен Babel в проекте Electron

Я совершенно запутался во всей экосистеме Javascript. Я пробую Electron, который кажется многообещающим способом создания кросс-платформенных приложений, используя возможности node и Chrome. Я создаю небольшое приложение и использую некоторые "современные" (это заставляет смеяться программиста на С#) концепции javascript в качестве лямбда-выражений, и это работает "из коробки" (я полагал, что это было естественно, так как у меня есть последняя версия узла). Затем я пытаюсь двигаться дальше и вижу много шаблонов в примерах с использованием, например, Babel.

Зачем мне это нужно?

Если электрон работает в современной, заранее известной среде с обновленными узлами и хромом, и если я связываю это в одном приложении, почему бы мне просто не написать код напрямую в ES?


person Felice Pollano    schedule 04.11.2017    source источник
comment
Потому что эта среда поддерживает только ES-что-то еще? Или вы хотите попробовать некоторые новые экспериментальные синтаксические функции, которые еще не доступны изначально? Или вы даже хотите использовать свои собственные настройки?   -  person Bergi    schedule 04.11.2017
comment
@Bergi не так просто понять, что поддерживается, а что нет,   -  person Felice Pollano    schedule 04.11.2017
comment
Скорее всего, примеры, на которые вы ссылаетесь, относятся к тому времени, когда Electron использовал версию Chrome, которая еще не поддерживала этот синтаксис ES.   -  person ghybs    schedule 04.11.2017
comment
@FelicePollano Я создаю небольшое приложение и использую некоторые современные (это заставляет программиста на C # смеяться) концепции javascript в качестве лямбда-выражений ... В JavaScript были лямбда-выражения задолго до C # (C # 3.0 добавил это в 2007 году), а также в JavaScript есть много современных функций независимо если язык может быть немного непоследовательным   -  person VladNeacsu    schedule 04.04.2019


Ответы (1)


Вам не нужен Babel, если вам нужны только функции до ES7 в электроне. У вас есть два процесса: основной процесс и процесс рендеринга.

Основной процесс:

  • Использует узел (текущая версия узла v7.9.0 на электроне v1.7.x)
  • Support ES6/ES7 with 99% coverage, the exceptions are:
    • RegExp.prototype.compile does not return this
    • Symbol.toStringTag не влияет на существующие встроенные функции.
    • Array.prototype.values ​​(все равно это никто не поддерживает)

Процесс рендеринга:

  • Использует хром (текущая версия хрома — 58)
  • Поддерживает ES6 99% и ES7 с покрытием ~85%, вы можете увеличить поддержку, включив флаг экспериментальных функций через new BrowserWindow({ webPreferences: { experimentalFeatures: true } }).

Имейте в виду, что я рекомендую вам использовать ту же версию узла, которую использует электрон для разработки, это предотвратит проблемы несовместимости. вы можете проверить это, просмотрев файл .node-version в электронном репозитории. В текущей версии это будет v7.9.0.

Есть все еще действительные точки для использования BableJ, если вы хотите использовать еще более новые функции, некоторые операторы, такие как оператор распространения ..., почти все мои проекты по этой причине все еще используют babel с предустановкой «Stage 0».

Несколько хороших списков для проверки поддерживаемых спецификаций и методов ES

person Hans Koch    schedule 07.11.2017
comment
Это немного проясняет текущий беспорядок, отличный ответ. Вероятно, это связано с наличием отдельной организации, производящей стандарт языка и инструменты. - person Felice Pollano; 07.11.2017