Reason + React import react modülünü CDN'den yapabilir miyim?

Nov 06 2020

Reason and React ile bir bileşen oluşturmak bana her zaman "react" için bir modül içe aktarma ifadesi verir, bu da React bir CDN'den dahil edilmişse bulunamaz. Bunun için bir çözüm var mı? window.react = Reactİndex.html'de başarıyla tanımlamaya çalıştım . es6-globalayar hiçbir şeyi değiştirmez.

Webpack gibi bir paket programı kullanmıyorum.

Düzenleme: Muhtemelen Akıl forumundan alakalı başlık: https://reasonml.chat/t/can-one-load-reasonml-es6-modules-without-a-bundler/2219

Benzer sorun (çözülmedi): paketleyici olmadan bir neden ml es6 modüllerini yükleyebilir

importmap(tarayıcılarda henüz uygulanmamıştır) bunun için başka bir çözüm olabilir: ES6 Modüllerini Transpiler / Bundler adımı olmadan kullanma

Yanıtlar

3 Yawar Nov 07 2020 at 07:24

Teknik olarak, evet yapabilirsiniz, ancak npm akışıyla devam etmek ve bir paketleyici kullanmak kadar kolay olmayacak.

ReasonReact bağları, aşağıdaki gibi modülleri içe aktaran çıktı JavaScript üreten bir şekilde yazılmıştır:

import * as React from "react";

(ES6 modül stili kullanılıyorsa.)

Bir CDN kullanıyorsanız, muhtemelen şuna benzeyen bir çıktı istersiniz:

import * as React from "https://some.cdn/react";

JS çıkışını kontrol eden sözdizimi ( ReasonReact deposundan ) şöyledir:

[@bs.module "react"]
external createElement: (component('props), 'props) => element = "createElement";

Şu şekilde değiştirdiyseniz:

[@bs.module "https://some.cdn/react"]
external createElement: (component('props), 'props) => element = "createElement";

... o zaman istediğiniz çıktıyı elde edersiniz. Ama o zaman sorun şu ki, kaynakları değiştirmeniz gerekiyor ... yani, o CDN için React için çatallı bağlar bulmanız veya sürdürmeniz. Veya ile bul-ve-değiştir yapan bir kod otomasyonu [@bs.module "react"]kurun [@bs.module "https://some.cnd/react"]. Her iki durumda da, bir paketleyici kullanmak kadar basit değil.