我可以让 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。所以无论哪种方式,它都不像使用捆绑器那么简单。
使用 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。所以无论哪种方式,它都不像使用捆绑器那么简单。