2

我对 node.js 的模块加载器以及新的和谐模块规范非常感兴趣。

总的来说,我喜欢这个规范,但有一个问题我不确定它是如何解决的。

如果想要构建一个跨平台的 JavaScript 库,有时需要在不同平台上使用不同的库来完成相同的工作。例如,node.js 中的 Buffer 模块在浏览器中不存在,因此必须编写一个抽象模块,根据平台加载不同的代码。

既然 Harmony 在执行任何代码之前解决了依赖关系,它怎么知道它只需要为一个平台加载代码,而不是为所有平台加载代码?

在浏览器中,我不想加载只在node.js中运行的代码,那么这个问题是怎么解决的呢?

4

1 回答 1

1

在 ES6 中加载模块有两种方法:(1) 静态地,通过module X at "url"声明(或任何最终的具体语法),或 (2) 动态地,通过loaderload的方法。对于您的方案,您可能希望对依赖于上下文的模块使用选项 2。

在浏览器中,您还可以使用多个标签来暂存<script>您的程序,但由于这不适用于 node.js,它可能对您的用例没有帮助。

于 2012-11-06T11:42:12.380 回答