如何让curl.js解决循环依赖?

时间:2014-03-21 15:26:38

标签: amd circular-dependency curl.js

我有两个AMD模块应该互相引用,但是一旦我添加了向后依赖,它就会停止工作。我想它陷入了waiting状态。

index.html

<!DOCTYPE html>
<html>
  <head>
    <script src="/curl.js"></script>
  </head>
  <body>
    <script>
      curl(['m1', 'm2'], function(m1, m2) {
          console.log('done', m1, m2);
      });
    </script>
  </body>
</html>

m1.js

define(['m2'], function() {
    return 1;
});

m2.js

define(['m1'], function() {
    return 2;
});

1 个答案:

答案 0 :(得分:1)

UPD 看来我错了,curl.js并不总是解决circular dependencies


您应该以{{1​​}}方式声明:

CommonJS

index.html

<!DOCTYPE html> <html> <head> <script src="/curl.js"></script> </head> <body> <script> curl(['m1', 'm2'], function(m1, m2) { console.log('done', m1.v, m2.v); }); </script> </body> </html>

m1.js

define(function(require, exports) { var m2 = require('m2'); exports.v = 1; });

m2.js

另一种选择是混合方法(define(function(require, exports) { var m1 = require('m1'); exports.v = 2; }); AMD):

CommonJS

m1.js

UPD 但可能存在一些问题。我还没弄清楚发生了什么。我暂时为其中一个创建了an issue