我想使用select2 Javascript库。不幸的是,他们force the use of AMD on their users。
我想在代码中专门使用ES6模块。 ES6模块是否可以导出由AMD异步初始化的变量?例如,我想做这样的事情:
const result = $.fn.select2.amd.require([
"select2/data/array",
"select2/utils"
], function (ArrayData, Utils)
{
return "something";
});
export {result as default};
这样,我可以将AMD丑陋包装在一个地方,然后将其作为ES6导入其他任何地方。
答案 0 :(得分:0)
每Bergi:
您根本不会编写任何AMD。只需编写
import ArrayData from 'select2/array/data';
(或您需要的其他任何内容),然后让webpack处理其余的内容即可。
事实证明,select2
比大多数库都存在更多问题。它仅增强了jQuery对象,而不导出任何有意义的东西。幸运的是,我不必经历太多的麻烦。
一旦扩充了jQuery对象,调用const ArrayAdapter = $.fn.select2.amd.require("select2/data/array")
就会返回我想要的东西。
我的理解是,一旦import "select2"
返回,我们可以保证模块已完成加载。因此,我们不需要使用amd.require()
的异步形式,因为所有组件都应完全加载。至少到目前为止,我还没有遇到任何错误...