【发布时间】:2014-07-03 00:14:50
【问题描述】:
我一直是readingaboutes6 module loaders,我只是不太明白它是如何工作的,希望有人能启发我。
在上面的实际工作流链接中,他们有一个这样的例子
System.import('app/app').then(function(app) {
// app is now the Module object with exports as getters
});
没问题 - 我明白了。但后来我看到这样的东西
var $ = require('jquery');
然后真的很困惑。如果在此调用时 jquery 尚未传输到浏览器,会发生什么情况?线程只是旋转吗?浏览器是否会像 RequireJs 那样在后台解析您的脚本并将其改造成回调?它的功能是可配置的吗?有具体限制吗?
谁能给我一个纲要?
【问题讨论】:
-
您看到的第二件事是“CommonJS 模块加载”,而不是 ES6 afaik。确实是doesn't work (well) within require.js
-
@Bergi 它在 require.js 中运行良好,虽然我不喜欢它,但我当前项目中的某些页面使用带有 commonjs 样式的 requirejs。 Requirejs 扫描您的脚本以查找 commonjs 表达式并将其重写为 amd 格式,因此它仍在使用回调。但是,除非我弄错了,否则 es6 提案不使用回调 - 因此我很困惑。
-
是的,除了最简单的情况外,扫描脚本并不适用于所有情况。你能链接你所指的 ES6 提案的部分吗?
System.import显然使用回调。 -
@Bergi 我找不到模块加载器提案期(尽管我一直在读到有一个并且接近完成)。但是 the es6 module loader 例如使用 import 语句在模块内部执行这种类型的操作。 The require statement above is from them systemjs README。我希望你能明白我为什么感到困惑。
标签: javascript module ecmascript-6