Javascript 当我将一个JS文件导入另一个JS文件时会发生什么?
假设我有以下文件 file.jsJavascript 当我将一个JS文件导入另一个JS文件时会发生什么?,javascript,Javascript,假设我有以下文件 file.js import Package from 'package'; Package.method(); main.js import Package from 'package'; Package.method(); 当我以以下方式将file.js导入main.js时 import './file'; Package.someOtherMethod(); 它是否等同于在main.js中包含以下内容 import Package from 'package'
import Package from 'package';
Package.method();
main.js
import Package from 'package';
Package.method();
当我以以下方式将file.js
导入main.js
时
import './file';
Package.someOtherMethod();
它是否等同于在main.js
中包含以下内容
import Package from 'package';
Package.method();
Package.someOtherMethod();
也就是说,我可以考虑使用import./file'导入JS文件吗
就像在main.js中插入代码一样
import Package from 'package';
Package.method();
Package.someOtherMethod();
它是否等同于在main.js
中包含以下内容
import Package from 'package';
Package.method();
Package.someOtherMethod();
不是真的。从“/file”
导入意味着加载了“/file”
的任何依赖项,这(在本例中)意味着加载了“包”
,这意味着将运行其顶级代码(package.method()
)。这将在运行main.js
的顶级代码之前发生(循环关系除外)。但这并不是说源代码已经从“/file”
中取出并粘贴到main.js
中。特别是,如果另一个文件也从“/file”
导入,则其顶级模块代码是而不是第二次运行
Lin Clark有一篇关于模块加载的好文章,其中讨论了模块加载的三个阶段(解析、实例化和评估)以及如何处理循环关系。使用import
将运行文件并返回导出,或者如果文件已运行,则仅返回导出。包
在main.js文件中未定义。模块有一个单独的名称空间。