如何es6模块加载工作
How does es6 module loading work
我一直在阅读关于es6模块加载器,我只是不太明白它是如何工作的,我希望有人能启发我。
在上面的实际工作流程链接中,他们有一个这样的例子
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语句,并且只在这些require语句加载完成后才执行源代码。
通过这种方式,我们可以支持CommonJS在浏览器中动态加载。循环引用的处理方式与Node中的相同。 解析出需求的正则表达式实际上是非常可靠和快速的,同时考虑到注释和周围的令牌。SystemJS使用的模板见https://github.com/systemjs/systemjs/blob/master/lib/extension-cjs.js#L10。这种方法还有一个限制,那就是像if (condition) require('some' + 'name')
这样的动态和条件CommonJS要求不能正确检测。这是使CommonJS在浏览器中表现为完全异步模块格式的必要代价。
相关文章:
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- jQuery加载的async和ready函数不工作
- Javascript不工作/正在加载
- LokiJS自动加载回拨不工作
- 当加载几个js文件时,defer属性应该如何工作
- 在pjax完成其工作时加载脚本
- Scriptaculous dom:仅加载工作"有时“;
- 为什么动态加载的事件在我的代码中不能正常工作
- 加载Soundcloud嵌入式播放器OnClick在FireFox中不工作
- 我无法在发布页面上加载peoplepicker.js它'正在工作的SitePages
- 异步加载的SVG过滤器feColorMatrix在Chrome中工作,而不是在Safari或Firefox中
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- 为什么不'加载$(document.ready(function)后,单击“工作”
- Jquery选择选项并获取只工作一次的更改值(页面加载时)
- 使jquery延迟加载插件在视口内工作
- 自动加载的html5播放器不工作
- 如何使它工作加载并一起准备好
- 剑道网格细节模板不工作加载网格再次(第二次)使用ajax表单post(MVC)
- w3C回答不工作加载XML在IE