【发布时间】:2012-10-24 22:39:28
【问题描述】:
我正在尝试使用 Javascript 和 jQuery 编写一个相当厚实的客户端 Web 应用程序。为了组织我的代码,我阅读了 Javascript 模块系统并决定使用 AMD 模块。目前我使用 curl.js 作为我的模块加载器,但我并不特别喜欢它。
不幸的是,我现在遇到了一个问题,即我的两个模块需要相互依赖。我原以为它可以正常工作 --- 但实际发生的是,加载应用程序似乎只是中途停止,一切都停止了,没有错误消息。
快速的 Google 显示几乎没有提及 AMD 和相互递归模块。我真的可以这样做吗?如果可以,怎么做? (我是否需要更改为不同的模块加载器?)
如果没有,对支持相互递归模块的替代模块系统有何建议?
【问题讨论】:
-
如果只能自己走,不能放在同一个文件里吗?
-
嗯,是的,但是使用模块的全部意义在于避免这样做...
-
是的,但前提是你的代码是模块化的……如果这些东西相互依赖,你的模块加载器应该如何知道首先定义(执行)哪个模块?你会期待什么?
-
我希望模块 A 获得一个引用模块 B 的未填充对象,然后它可以使用它来定义方法。然后在加载模块 B 时填写。显然,在 A 和 B 都加载之前,我实际上不能使用任何这些方法,但我至少应该能够定义方法。这是所有其他模块系统适用于类 JS 语言的方式...
-
好的,我不知道有模块加载器将定义函数传递给定义方法的模块,我只有模块定义函数作为构造函数
标签: javascript js-amd