2015-09-08 2 views
13

Я использую jspm 0.16.2.Могу ли я использовать JSPM без транспилера?

Я использую этот test project

Когда я установил Transpiler никому: transpiler: "none"

Я получаю сообщение об ошибке XHR error (404 Not Found) loading http://localhost:53404/none.js

Если я устанавливаю transpiler к «тесту» он дает ту же ошибку, кроме него ищет test.js

Это ошибка с jspm?

Я не хотел использовать транспилер, но для загрузки модулей AMD используйте system.js.

Когда я удалил параметр transpiler из config.js, он пытается загрузить Traceur.

Я бы не хотел, чтобы Transpiler работал во время работы.

ответ

8

Непонятно, что вы пытаетесь сделать. Если вы используете функции ES2015 (например, модули ES2015, let и т. Д.), Вам нужен транспилер. Если вы напишете свой код без функций ES2015, то транспилятор не будет загружен. Вы можете проверить это, поставив код ES5 в main.js и проверив вкладку «Сеть» вашего отладчика. browser.js не загружаются.

Строка, которую вы положили для transpiler в System.config, буквально является файлом транспилятора. В случае "babel", он отображаются на npm:[email protected] (от map поля), которое в сочетании с path поля относится к jspm_packages/npm/[email protected], а затем в этом каталоге, файл .jspm.json точек точки входа в browser.js, который на стороне клиента transpiler самого файла ,

Независимо строка, которую вы установите transpiler к, JSPM настроит System, чтобы указать на него (путь будет просто baseURL, если вы не замэпили) и извлечь его. Конечно, это не так для любой произвольной строки, такой как none или test. По умолчанию, если вы ничего не указали, как вы уже заметили, это traceur.

У вас есть возможность транслировать серверную сторону, делая jspm bundle, если переключение на стороне клиента - это то, чего вы пытаетесь избежать.

Для кода, который использует только ES5 и AMD, без перекоса, проверьте no-transpile ответвление вышеуказанного репо. Обратите внимание, что browser.js не загружен, хотя transpile по-прежнему установлен в "babel".

+0

+1 для получения более подробной информации. Думаю, теперь я понимаю, в чем ситуация. Я думаю, что меня вводит в заблуждение, что вы можете ответить «Нет» на вопрос Transpiler при запуске jspm init, и он будет вставлять «none» в config.js для транспилятора. –

+1

Да, но если ваш код имеет в нем функции ES2015, 'System' * будет * пытаться перевести его в любом случае - с помощью transpiler' none'. Безопасная вещь, если вы хотите убедиться, что нет транспиляции, заключается в том, чтобы установить это поле в любую недопустимую строку (например, 'none'), а затем написать код с прямым ES5. Таким образом, вы будете выходить из системы, если какой-либо код ES2015 пробирается, например. через какой-то модуль, который вы импортировали. – caasjj

+0

ОК, я понял. Огромное спасибо. –

Смежные вопросы