i同时使用require
和import
,但两者都有一些不同的行为。到目前为止,我假设require
和import
只是ES5 vs ES6。我正在做以下操作:
abc.js
console.log("abc");
xyz.js
console.log("xyz");
hello.js
require("./abc");
import "./xyz";
第二次更改文件并交换了两行。
hello.js
import "./xyz";
require("./abc");
这两次给出相同的输出
xyz
abc
即。require
的输出始终是在导入之后。如果我仅使用导入或仅使用import
,则它是按预期提供的控制台。一个接一个地。谁能帮助理解这一点?
通过import
在CC_8中声明的模块在运行hello.js
中的任何代码之前。import
语句是否在另一个语句之后出现都没关系。在运行代码之前,该模块仍会加载。因此,这就是为什么无论您在何处放置import
语句。
require()
是程序化的。当您的程序运行时遇到require()
语句时,将运行模块代码。
由于ES6模块尚待在Node.js中实现(不确定),我假设您正在使用babel用于transplats transplatplats export, import
语句。
当Babel转移代码时,它总是将导入语句放置在模块顶部,因此发生这种情况。您可以在REPL中进行测试。
演示
import
和require