gpt4 book ai didi

javascript - es6模块加载是如何工作的

转载 作者:搜寻专家 更新时间:2023-11-01 04:16:50 25 4
gpt4 key购买 nike

我去过reading about es6 module loaders我只是不太明白它是如何工作的,希望有人能启发我。

在上面的实际工作流程链接中,他们有一个这样的例子

System.import('app/app').then(function(app) {
// app is now the Module object with exports as getters
});

没问题 - 我明白了。但后来我看到了这样的东西

var $ = require('jquery');

然后变得很困惑。如果在此调用时 jquery 尚未传输到浏览器,会发生什么情况?线程只是旋转吗?浏览器是否会像 RequireJs 那样在幕后解析您的脚本并将其改造成回调?它的作用是可配置的吗?有具体限制吗?

谁能给我一个概要?

最佳答案

ES6 模块加载器将获取源代码、确定依赖项,并在执行模块之前等待这些依赖项加载完毕。因此,当 require 执行时,依赖项已经在那里等待执行。

当通过 ES6 模块加载器加载 CommonJS 时,我们依赖于从源代码中静态解析出 require 语句,并且仅在这些要求加载后才执行源代码。

这样我们就可以支持在浏览器中动态加载的 CommonJS。循环引用的处理方式与它们在 Node 中的处理方式相同。

解析需求的正则表达式实际上非常可靠和快速,同时考虑了评论和周围的标记。参见 https://github.com/systemjs/systemjs/blob/master/lib/extension-cjs.js#L10对于 SystemJS 使用的那个。

这种方法还有一个限制,那就是动态和有条件的 CommonJS 要求,比如 if (condition) require('some' + 'name') 没有被正确检测到。这是使 CommonJS 在浏览器中表现为完全异步模块格式的必要成本。

关于javascript - es6模块加载是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com