Хром 49+, FF 45+, возможно, не принесет пользу Вавилон. Другие браузеры, возможно, нуждаются в транспиляции.
Оригинал
Я также в настоящее время разрабатывает расширение Chrome в ES6. Ваши вопросы, кажется, более общие, поэтому я пытаюсь ответить на это, основываясь на моем опыте.
В следующем compatibility table, хром 41 показывает, что она в настоящее время имеет 41% совместимость. Пара ключевых функций, таких как class
, не включена в это 41%, и поэтому мне было любопытно, были ли другие варианты , такие как пересылка.
Это правда. Вы можете легко использовать все существующие функции ES6 без забот и перекосов. В каждом новом выпуске Chrome есть еще несколько функций, что очень интересно ждать;) Chrome 44 теперь охватывает 48%, включая class
.
Однако, если вы хотите пойти полным ES6, то компилятор по-прежнему является лучшим вариантом. Вам не нужно беспокоиться о поддерживаемых функциях и просто писать код ES6, который будет скомпилирован с соответствующим кодом ES5.
Моя текущая настройка Browserify (через grunt-browserify
), используя Babelify как компилятор. Browserify позволяет вам также использовать модули ES6, которые дают вам полную мощность ES6.
Gruntfile.JS
browserify: {
dist: {
options: {
transform: [
['babelify', { loose: 'all' }]
],
browserifyOptions: { debug: true },
exclude: ''
},
files: {
'path/to/es5/app.js': ['path/to/es6/**/*.js']
}
}
}
// Then it will be uglified and copied to dist.
Это означает, что мое расширение до сих пор работает с ES5 кодом, хотя, но это не имеет большого значения для меня, как я могу еще написать в ES6.
Если вы действительно хотите использовать доступные функции ES6 (что я и делал раньше), это может быть довольно неприятно/раздражает, так как вам всегда нужно искать то, что возможно в Chrome, и в основном он ждет нового выпуска Chrome.
Однако при разработке удлинителя хрома я обнаружил, что процесс сборки немного отличается. Например, при тестировании расширения я создаю , загружая его в браузер через опцию «Загрузить распакованный вариант », который указывает прямо на исходный код.
Ну, это не совсем так, как мне кажется. В зависимости от того, какие конкретные функции Chrome вы используете, вы можете либо просто разработать свой проект, либо затем протестировать его, загрузив его в браузер или просто связав путь «Загрузите распакованный расширитель» в созданную папку dist/build/public
. Выполнение этого, это всегда текущее состояние. Это работает для меня лучше всего.
Надежда, что помогает немного :)
я использую Бабель в transpile ES6 к ES5 для расширения Chrome просто отлично с помощью задач хрюкать. Единственное, что у меня не получилось - это загружать модули асинхронно - мне пришлось объединить их в один файл. Хотя я не могу предоставить более полный ответ, потому что я не использую Yeoman – CodingIntrigue
Спасибо. Сможете ли вы предоставить пример соответствующей части вашего файла Grunt? Кроме того, я не думаю, что это имеет большое значение, что я использую йоман для расширения хрома. Я только что упомянул об этом, потому что он использует Грунт. –
Chrome 49 будет содержать полную поддержку классов, ср. https://kangax.github.io/compat-table/es6/. –