微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我可以从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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。