実現したいこと
ES Module内で定義されたclassを非Moduleから扱う
前提
ES Module(hoge.mjs)があります。
このファイルで定義されたclassを使用したいのですが、諸々の事情より以下の制約があります。
- 利用側のファイル(index.js)をmoduleにすることはできない
- hoge.mjsをhoge.jsへトランスパイルすることはできない
下記の例ではHogeはmoduleのスコープに閉じ込められたままなので、index.jsから参照することができません。
javascript
1// hoge.mjs 2export class Hoge { 3 hello(x) { 4 return `Hello, ${x}!` 5 } 6}
javascript
1// index.js 2const hoge = new Hoge() 3alert(hoge.hello('World'))
html
1// index.html 2<script src="hoge.mjs" type="module"></script> 3<script src="index.js"></script>
試したこと
以下のようにwindowへ代入することを試しました。
しかしhoge.mjsの非同期のインポートがindex.jsの実行に間に合わず、
Hogeを参照することはできませんでした。
javascript
1// load.mjs 2import { Hoge } from 'hoge.mjs' 3window.Hoge = Hoge
html
1// index.html 2<script src="load.mjs" type="module"></script> 3<script src="index.js"></script>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/31 03:10 編集
2023/05/31 04:25 編集
2023/05/31 14:50