Могу ли я заставить Reason+React импортировать модуль реакции из CDN?
Создание компонента с помощью Reason и React всегда дает мне оператор импорта модуля для "реакции", который не может быть найден, если React включен из CDN. Есть ли решение для этого? Я пытался определить
window.react = React
в index.html безуспешно.
es6-global
установка ничего не меняет.
Я не использую пакетную программу, такую как webpack.
Изменить: возможно, соответствующая тема на форуме Reason: https://reasonml.chat/t/can-one-load-reasonml-es6-modules-without-a-bundler/2219
Похожая проблема (не решена): можно ли загружать модули reasonml es6 без сборщика
importmap
(еще не реализовано в браузерах) может быть другим решением для этого: использование модулей ES6 без шага Transpiler/Bundler
1 ответ
Технически, да, можно, но это будет не так просто, как использовать поток npm и использовать сборщик.
Привязки ReasonReact написаны таким образом, что на выходе создается JavaScript, который импортирует такие модули, как:
import * as React from "react";
(При использовании стиля модуля ES6.)
Если вы используете CDN, вы, вероятно, захотите получить следующий результат:
import * as React from "https://some.cdn/react";
Синтаксис (из репозитория ReasonReact), который контролирует выходной JS:
[@bs.module "react"]
external createElement: (component('props), 'props) => element = "createElement";
Если вы изменили его на:
[@bs.module "https://some.cdn/react"]
external createElement: (component('props), 'props) => element = "createElement";
... тогда вы получите желаемый результат. Но проблема в том, что вам нужно изменить источники... то есть поддерживать или находить разветвленные привязки для React для этого CDN. Или настройте автоматизацию кода, которая выполняет поиск и замену
[@bs.module "react"]
с участием
[@bs.module "https://some.cnd/react"]
. Так или иначе, это не так просто, как использовать упаковщик.