5

更新

用户@TKoL 建议在窗口对象中定义一个属性。这产生了我想要达到的结果,尽管我不知道这是否是正确的方法。我将暂时使用这种方法。谢谢!


我在我的项目中使用esbuild(第一次使用捆绑器/以这种“风格”开发 JS)。该项目是一个小型 Web 组件,我为此开发了一个最终用户应该能够在其脚本中使用的类。

// this is the component, which is then bundled and minified by esbuild.
// i have omitted various imports required in the class here.

export default class Widget extends HTMLElement {
    /// code here is not relevant
}

customElements.define('custom-widget', Widget);

就目前而言,最终用户能够像这样使用 HTML 中的小部件:

<custom-widget some-custom-attribute="some-value"></custom-widget>

let widget = document.querySelector('custom-widget');
widget.someMethodDefinedInTheClass();

但是,我希望用户也可以通过 JavaScript 完成所有操作。

如何让esbuildWidget类暴露给全局范围?我想这样做以启用以下行为:

let wOptions = {}; // object of initialization options for the widget
let widget = new Widget(wOptions);
someContainer.append(widget);
widget.someMethodDefinedInTheClass();
4

0 回答 0