Комментарии 13
Ну т.е. просто запускаем babel перед сборкой. Как-то тривиально для целой статьи.
Так же не забудем добавить плагины для Babel, без них от просто не будет работать, для этого добавим секцию Babel.
Можно просто создать в корне файл .babelrc
с таким содержимым:
{
"presets": ["es2015"]
}
"build-prod": "./node_modules/.bin/babel es6 -d app --comments=false --compact=true",
А почему для прода не генерируются source-map'ы?
И кстати, всё это дело можно настроить, чтобы поддерживало import'ы из es6?
Вполне может оказаться что когда всё остальное заработает и без babel — импорты придётся переделывать.
Хм, вообще-то синтаксис модулей (import/export) включён в стандарт и не изменится. Сейчас babel просто заменяет их на require. По-сути, это синтаксический сахар над CommonJs-овскими require/module.exports и деструктуризация (когда импортируется с фигурными скобками). Так что код менять не придётся.
А вот как загружать и где искать модули — пока не утверждено. Но есть загрузчики модулей, например webpack или SystemJs.
Так что тут больше вопрос в том, как настроить ещё и загрузчик в связке с ExtJS, удобно ли будет пользоваться, и т.д. На npmjs нет extjs.
Сам же extjs использует свою функцию require. И оно понятно почему: библиотека старая, создавалась когда модулей и в зачатках не было.
Но, например, ангуляр (первый) тоже использует свои функции для загрузки модулей и проверки зависимостей, так как он тоже уже достаточно древний. Однако, его легко включить в современную es6-инфраструктуру: модуль экспортирует просто своё имя. Потом мы импортируем его и добавляем в список зависимостей. Ну и почти все ангуляр-пакеты следуют этому принципу. Так что можно писать так:
import angular from 'angular';
import uiRouter from 'angular-ui-router';
angular.module('app', [uiRouter]);
А что у ExtJS?
Например, если вы использовали Babel на стороне Node.js и использовали import — с большой долей вероятности вам придётся как минимум поменять расширение всех файлов к тому времени, как это заработает нативно.
Одна из проблем при загрузке модулей — отличить модуль от обычного js файла, у них семантика различается (как минимум, модули всегда в strict mode). Плюс надо чтобы модули могли использовать cjs, и чтобы cjs мог использовать модули, и чтобы при использовании сторонних пакетов вам было всё равно, на чём они написаны.
В общем и целом, в Node.js решили идти по пути отдельного расширения файлов для модулей.
Что конкретно у ExtJS — не знаю =).
Добрый день!
Спасибо за статью!
А можно попросить готовый рабочий пример в репозитории?
У меня такие проблемы:
1) игнорирует изменения файла build.xml
2) команда sencha app watch игнорирует изменения в каталоге es6 (перекомпиляция не запускается)
PS: Видел тебя на javascript.ru не раз ))
Спасибо за подсказку! Я так понимаю речь идет об этой статье https://www.sencha.com/blog/getting-started-with-es2015-using-sencha-cmd-6-5/
Попробовал, действительно все работает. И es3 и es6 на выходе получается. Жаль TS нету)))
Надо будет проштудировать их бложик)) Я чет не подумал об этом.
П.С. Мир тесен.
Круто! А где можно посмотреть результаты опроса? И вообще, есть ли roadmap у них?
Похоже Roadmap они еще не опубликовали((( судя по инфе со страницы https://www.sencha.com/blog/roadmaps-updates-and-what-weve-been-up-to/
А вот на результаты опросника было бы неплохо глянуть...
Добавляем поддержку ECMAScript 2015 в ExtJS6