Javascript System.import()和import()之间的区别?
在这种情况下,webpack 2中将使用Javascript System.import()和import()之间的区别?,javascript,import,webpack,ecmascript-6,webpack-2,Javascript,Import,Webpack,Ecmascript 6,Webpack 2,在这种情况下,webpack 2中将使用System.import()进行动态需求: 幸运的是,有一个JavaScript-API“loader”规范正在开发中 为处理动态用例而编写:System.load(或 系统。导入)。此API将是与上述API等效的本机API 需要变体 在这段时间里,网络上到处都在使用这个System.import() ,作者决定将System.import()更改为import(): 添加import()作为代码拆分构造。应该使用它,而不是 系统。尽可能导入系统。导入
System.import()
进行动态需求:
幸运的是,有一个JavaScript-API“loader”规范正在开发中
为处理动态用例而编写:System.load
(或
系统。导入
)。此API将是与上述API等效的本机API
需要
变体
在这段时间里,网络上到处都在使用这个System.import()
,作者决定将
System.import()
更改为import()
:
添加import()
作为代码拆分构造。应该使用它,而不是
系统。尽可能导入
<代码>系统。导入将在中被弃用
webpack 2发行版(在webpack 3中删除),因为其行为不正确
根据规范
这个import()
是基于规范的,您可以阅读更多关于他们为什么进行此更改的内容
有人能解释一下
System.import()
和import()
之间的区别吗?
尽管名称不同,但用法看起来相同:
导入(模块路径)
.then(module=>module.default())
.捕获(/*…*/);
系统导入(模块路径)
.then(module=>module.default())
.捕获(/*…*/);
但在weback 2中,doc是:“
System.import()
根据规范,行为是不正确的”-因此它表明System.import()
和import()
之间存在差异
正在编写的规范
当Webpack1实现System.import
时,规范仍在发展中。如果事实仍然如此。Webpack1实现了System.import
,因为这是当时作为潜在API被抛来抛去的东西
Webpack 2实现了
import()
,因为这是一个新的建议,旨在标准化语法方法,而不是基于库的方法。以下是您需要的:
实际函数
Loader ideas集合的草稿在不同的时间都有实际的函数(不仅仅是像语法形式一样的函数)命名为System.import()或System.Loader.import()或类似的,它们完成相同的用例
正如规范编辑器之前指出的,这里最大的问题是如何解释这些函数的说明符参数。由于这些只是函数,在整个领域中都是相同的,并且每个脚本或模块都不不同,因此无论从何处调用函数,函数都必须对其参数进行相同的解释。(除非实现了堆栈检查等真正奇怪的功能。)这很可能会遇到与上述importModule函数的文档基URL问题类似的问题,其中相关模块说明符会成为错误库,并且与任何附近的导入声明不匹配
如果我正确阅读了您提供的链接,一个非常重要的区别是
import()
知道调用它的脚本或模块,而System.import()
不知道。如果我是对的,这意味着可以导入('../foo'),即相对于当前模块的分辨率。我可能又弄错了,请纠正我。看来,由此产生的差异并不能解释这两者之间的实际差异(如果有的话)。