我开始对我的一些Dojo模块和dojo / domReady进行单元测试!造成麻烦。 (具体来说,任何时候我需要一个具有dojo / domReady的模块!在其子树的需求中的某个地方,Jasmine默默地假装测试不存在。)我在每个触及的模块中都要求它DOM,因为我认为它不会造成任何伤害。现在,我想知道我是否真的需要到处调用它,或者它是否真的只需要在顶层。
就我而言,我正在为Esri的Web AppBuilder编写一个小部件。它有一个名为Widget.js的入口点。如果我需要dojo / domReady!在Widget.js中,我可以在所有其他模块中安全地省略它吗?更好的解决方案是在单元测试中覆盖domReady,例如在this answer中谈到的内容吗?
答案 0 :(得分:2)
dojo/domReady!
是一个插件,用于延迟加载模块,直到加载DOM。 domReady!
插件将自己绑定到浏览器的dom-ready事件,一旦DOM准备好就会被触发。但是,这并不意味着您的所有小部件都已被解析...您可以在模块的依赖项中添加dojo/ready
,并将模块代码放在模块中的ready(function(){ // your code });
内,如果您需要运行解析完所有小部件后的代码。
Re:关于是否需要对所有小部件使用dojo/domReady!
一次的问题:您通常会在引导模块的根目录中使用ready()
一次,然后加载并解析所有其他依赖项。对于测试代码,您可能会使用ready()
来确保解析所有小部件。
至于dojo/domReady
与dojo/domReady!
之间的区别,Dojo加载器会将后者视为插件,并将!
之后的字符串视为插件的参数。在domReady的情况下,插件会导致延迟模块的加载,直到DOM准备就绪。如果你不包含!
,那么加载器会将domReady作为实用程序加载,并且不会像插件那样对待它。有关插件的更多信息,请查看here ...
+1以上的后续评论!