Вы, вероятно, можете, хотя это может быть не так идеально для производства, как пакетирование с Webpack (или другим инструментом сборки), потому что вы будете выполнять перенос на стороне клиента, а не на стороне сервера, что может замедлить процесс.lot.
Если вы хотите использовать Babel без процесса сборки, вы должны согласиться с тем, что вы будете выполнять всю свою работу на стороне клиента.Процесс сборки (также известный как пакетный процесс) - это то, что позволяет вам визуализировать все «на стороне сервера» (на вашем компьютере или хост-сервере) перед отправкой кода клиенту (браузеру). Вот полезная статья о разработке без упаковщика. Без транспиляции браузер не сможет запустить ваш код, потому что он только запускает определенную разновидность JavaScript изначально (в настоящее время это базовая форма ES5 или, для безопасности,commonJS).
В документации Babel для @ babel / standalone говорится, что вы можете запустить Babel в браузере, очевидно, включив type="text/babel"
в <script>
тег, который вы используете для импорта компонента React в добавляемый им HTML-код.
// Load Babel.
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
// Load your React component with type set to "text/babel".
<script src="my_component.js" type="text/babel"></script>
Из @ babel / standalone документы: Note that config files don't work in @babel/standalone, as no file system access is available. The presets and/or plugins to use must be specified in the options passed to Babel.transform.
^^ Это означает, что вам придется запускать код с помощью метода Babel.transform()
следующим образом:
var myCode = 'const getMessage = () => "Hello World";';
var output = Babel.transform(myCode, { presets: ['es2015'] }).code;
Это говорит о том, что вам нужно обернуть все своиJS код в кавычках (чтобы сделать его гигантской строкой) и затем передать эту строку в метод Babel.transform()
, который принимает два параметра: 1) ваш код и 2) вашу конфигурацию babel.Если вы спросите меня, это похоже на боль по сравнению с простым использованием упаковщика.
Это также означает, что вам не нужно включать Babel в ваши npm devDependencies, так как он не будет работать на вашем узлесреда, а в клиенте.Итак, поздравляем с удалением некоторых узловых модулей!
В любом случае, согласно документации , похоже, что это должно работать, если вы хотите сделать что-то таким образом.