使用Reason和React构建组件始终会为我提供“反应”的模块导入语句,如果CDN中包含React,则无法找到该语句。有解决方案吗?我试图在index.html中定义window.react = React
,但没有成功。 es6-global
设置不会更改任何内容。
我没有使用像webpack这样的捆绑程序。
编辑:原因论坛中可能相关的主题:https://reasonml.chat/t/can-one-load-reasonml-es6-modules-without-a-bundler/2219
类似的问题(未解决):can one load reasonml es6 modules without a bundler
importmap
(尚未在浏览器中实现)可能是对此的另一种解决方案:Using ES6 Modules without a Transpiler/Bundler step
答案 0 :(得分:3)
从技术上讲,是的,但是,这不会像使用npm流和使用捆绑程序那样简单。
ReasonReact绑定的编写方式可以生成输出JavaScript,该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 "react"]
进行[@bs.module "https://some.cnd/react"]
的查找和替换。所以无论哪种方式,它都不像使用捆绑器那样简单。