我可以让 Reason+React 从 CDN 导入 react 模块吗?

Can I make Reason+React import react module from CDN?

使用 Reason 和 React 构建组件总是给我一个“react”的模块导入语句,如果 React 包含在 CDN 中,则无法找到该语句。有解决办法吗?我试图在 index.html 中定义 window.react = React 但没有成功。 es6-global 设置不会改变任何东西。

我没有使用像 webpack 这样的打包程序。

编辑:可能来自 Reason 论坛的相关主题:https://reasonml.chat/t/can-one-load-reasonml-es6-modules-without-a-bundler/2219

类似问题(未解决):can one load reasonml es6 modules without a bundler

importmap(尚未在浏览器中实现)可能是另一种解决方案:

从技术上讲,是的,你可以,但它不会像使用 npm 流程和使用捆绑器那么容易。

ReasonReact 绑定的编写方式会产生输出 JavaScript 导入模块,例如:

import * as React from "react";

(如果使用 ES6 模块样式。)

如果使用 CDN,您可能需要如下所示的输出:

import * as React from "https://some.cdn/react";

控制输出JS的语法(来自ReasonReact repo)是:

[@bs.module "react"]
external createElement: (component('props), 'props) => element = "createElement";

如果您将其更改为:

[@bs.module "https://some.cdn/react"]
external createElement: (component('props), 'props) => element = "createElement";

...那么您将获得所需的输出。但问题是您需要更改源...即维护或查找该 CDN 的 React 的分叉绑定。或者设置一些代码自动化,用 [@bs.module "https://some.cnd/react"] 执行 [@bs.module "react"] 的 find-and-replace。所以无论哪种方式,它都不像使用捆绑器那么简单。