Reason + React import react 모듈을 CDN에서 만들 수 있나요?
Reason 및 React로 구성 요소를 빌드하면 항상 "react"에 대한 모듈 가져 오기 문이 제공됩니다. React가 CDN에 포함되어 있으면 찾을 수 없습니다. 이에 대한 해결책이 있습니까? 나는 window.react = React성공하지 않고 index.html 에서 정의하려고했습니다 . es6-global설정은 아무것도 변경하지 않습니다.
webpack과 같은 번들링 프로그램을 사용하지 않습니다.
편집 : 이유 포럼의 관련 스레드 : https://reasonml.chat/t/can-one-load-reasonml-es6-modules-without-a-bundler/2219
유사한 문제 (해결되지 않음) : 번 들러없이 reasonml es6 모듈을로드 할 수 있습니까?
importmap(아직 브라우저에서 구현되지 않음) 다른 솔루션이 될 수 있습니다 . Transpiler / Bundler 단계없이 ES6 모듈 사용
답변
기술적으로는 가능하지만 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 "react"]와 [@bs.module "https://some.cnd/react"]. 따라서 어느 쪽이든 번 들러를 사용하는 것만 큼 간단하지 않습니다.