2014-08-28 38 views
2

我想加载一个模块,其中可能那里。Dojo AMD可以用'undefined'来解析一个不存在的模块吗?

Evil requires   requires 
BlackBox --------> myModule --------> mayExist 
  • 如果mayExist是不存在的,我不想失败加载myModule。我希望回调变量中的值为nullundefined

  • 由当时的AMD加载器将返回myModule到​​,我需要知道我是否能依靠mayExist与否。我真的不能负担第一次加载myModule,然后启动mayExist的异步请求,然后处理可能的错误。那是因为那个黑匣子不会等待它做坏事。

是否有define的配置对象指定我不想一般故障,如果依赖不存在某种可靠的方式?

+0

在[这里]链接(http://www.sitepen.com/blog/ 2014/02/25/dojo-faq-how-can-i-conditionally-load-amd-modules /)可以帮助你。 – frank 2014-08-28 08:56:05

+0

'has!'可以帮助在已知条件下进行条件加载。但我看到两个区别: ** 1/**这里我的条件就是'mayExist'是否存在。这个文件的存在与任何可以用'has!'测试的函数都没有关系,并且这不是我能控制的任何东西。这将取决于我的框架的用户有没有这个文件。 ** 2/**'has!'插件期望在任何情况下都必须解析为模块的三元表达式。我没有看到一个明确的文件化的方式来解决'undefined' – 2014-08-28 09:06:10

回答

1

为什么不把它留给你的框架用户来决定,或者留下一个空的有效存根以供用户覆盖?

假设这是不是一种选择,你可以尝试inline- require -ing它,一拉......

define([... "require", ...], 
... 
postCreate: function() { 
    this.inherited(arguments); 
    try { 
     require(["my/custom/Thing"], lang.hitch(this, function(Thing) { 
      this.thing = new Thing(); 
     })); 
    catch (e) { 
     // do something else (or not). 
    } 
} 
... 
+0

我很晚在这里......不幸的是,这个构造不能保证模块解决时的答案。而且由于我正在构建可以考虑框架的框架(邪恶的框),因此无法为依赖注入或插件可用性测试提供合适的API。 – 2015-08-03 14:11:28

相关问题