为什么JS模块在浏览器和服务器中加载不同(异步和同步)?

时间:2017-10-26 14:57:23

标签: javascript node.js ecmascript-6 v8

我最近读过这篇文章:" ECMAScript 6模块必须独立于引擎是否同步加载模块(例如在服务器上)或异步加载模块(例如在浏览器中)。"

为什么JS分别在服务器和浏览器中异步和同步加载?这是故意的吗?

1 个答案:

答案 0 :(得分:2)

服务器更喜欢同步导入模块,因为它们是从文件系统快速加载的。通常,同步代码更易于编写和读取。在Node中能够做到这一点非常棒:

var myModule = require("mymodule"),
    foo = require("foo");
myModule.doThing(foo);

而不是

require("mymodule", function(err, myModule) {
    require("foo", function(err, foo) {
        myModule.doThing(foo);
    });
});

相反,异步代码通常在浏览器中更受欢迎,因为网络加载可能需要更长的时间,而同步执行会阻止UI。最好保持浏览器的线程自由响应用户(并显示加载动画等),同时在后台安静地加载模块并异步响应它们的完成。