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

使用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

ani66cn 回答:我可以从CDN制作Reason + React导入react模块吗?

从技术上讲,是的,但是,这不会像使用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"]的查找和替换。所以无论哪种方式,它都不像使用捆绑器那样简单。

本文链接:https://www.f2er.com/1265111.html

大家都在问