Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在运行时将AMD模块转换为ES6?_Javascript_Amd_Es6 Modules - Fatal编程技术网

Javascript 在运行时将AMD模块转换为ES6?

Javascript 在运行时将AMD模块转换为ES6?,javascript,amd,es6-modules,Javascript,Amd,Es6 Modules,我想使用Javascript库。不幸的是,他们没有成功 我想在我的代码中专门使用ES6模块。ES6模块是否有办法导出AMD异步初始化的变量?例如,我想这样做: const result = $.fn.select2.amd.require([ "select2/data/array", "select2/utils" ], function (ArrayData, Utils) { return "something"; }); export {result as defa

我想使用Javascript库。不幸的是,他们没有成功

我想在我的代码中专门使用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导入其他任何地方。

Per:

你根本不会写AMD。只需从“select2/array/data”写入
导入ArrayData(或者你需要的任何东西),剩下的就让webpack来处理

事实证明,
select2
比大多数库的问题要多一些。它只增加jQuery对象,而不导出任何有意义的内容。幸运的是,我不必跳过太多的障碍

一旦jQuery对象被扩充,调用
const ArrayAdapter=$.fn.select2.amd.require(“select2/data/array”)
返回了我想要的结果

我的理解是,一旦
import“select2”
返回,我们就可以保证模块完成加载。因此,我们不需要使用异步形式的
amd.require()
,因为所有组件都应该完全加载。至少,到目前为止,我还没有遇到任何错误…

Per:

你根本不会写AMD。只需从“select2/array/data”写入
导入ArrayData(或者你需要的任何东西),剩下的就让webpack来处理

事实证明,
select2
比大多数库的问题要多一些。它只增加jQuery对象,而不导出任何有意义的内容。幸运的是,我不必跳过太多的障碍

一旦jQuery对象被扩充,调用
const ArrayAdapter=$.fn.select2.amd.require(“select2/data/array”)
返回了我想要的结果


我的理解是,一旦
import“select2”
返回,我们就可以保证模块完成加载。因此,我们不需要使用异步形式的
amd.require()
,因为所有组件都应该完全加载。至少,到目前为止,我还没有遇到任何错误…

不确定这是否解决了您的问题,但您是否查看了?@jfriend00是的,我想ES6导出select2库的一个组件。这就是我所要求的,但我无法理解实现。您不能直接导出异步加载的内容,因为导出分配和模块返回发生在异步操作完成之前。@jfriend00我们可以导出承诺。问题是我们能否从AMD的
require
中得到承诺。你不需要从AMD那里得到承诺。您可以围绕AMD负载包装自己的承诺,并返还承诺。但是,这将通过promise为您提供一个异步加载的接口,而不是典型的ES6接口。不确定这是否解决了您的问题,但您是否看过?@jfriend00是的,我想ES6导出select2库的一个组件。这就是我所要求的,但我无法理解实现。您不能直接导出异步加载的内容,因为导出分配和模块返回发生在异步操作完成之前。@jfriend00我们可以导出承诺。问题是我们能否从AMD的
require
中得到承诺。你不需要从AMD那里得到承诺。您可以围绕AMD负载包装自己的承诺,并返还承诺。但是,这将通过promise为您提供一个异步加载的接口,而不是典型的ES6接口。