使用 dojo 工具包,在不进行实际构建的情况下,本地测试将作为跨域执行的代码的正确方法是什么?

看起来, 有三个可能的选项 (每个选项都有自己的缺点):

  • 使用本地(非 xd)XMLHttpRequest dojo.require
  • 此选项并没有真正测试 xd 行为,因为它通过 XHR 同步 dojo.require[s] js。
  • djConfig.debugAtAllCosts = true;
  • 虽然这个选项会异步加载所需的代码(通过 'script' 标签),它也通过 XHR 拉入代码,解析里面的 dojo.require[s],并将它们拉入。这个(使用 loader_debug)再一次,这不是 loader_xd 正在做的事情。 More info on this topic in a different question.
  • 创建跨域构建
  • 这种方法需要构建,这在我运行代码的环境中是不可能的(我们正在使用我们自己的即时构建过程,其中仅包括特定页面所需的 js。这个过程不适合开发)。

  • 因此,我的问题是:有没有办法使用不需要 xd 构建的 loader_xd(它将 xd 前缀/后缀添加到每个文件)?

    第二种方式(使用 debugAtAllCosts)也让我质疑预解析 dojo.require[s] 的动机。如果 loader_xd 不会(或者更确切地说不能)预解析,为什么为测试/调试而创建的方法会这样做?

    最佳答案

    我认为没有任何方法可以在不构建和部署 XD 的情况下加载它。您对各种选项的分析似乎是正确的。

    debugAtAllCosts 专门用于解决调试问题,直到最近,大多数浏览器都无法对通过 eval 引入的代码执行任何智能操作。时至今日,Firefox 仍会在控制台中报告异常,因为它出现在 eval 站点 (bootstrap.js) 中,行号与 eval 偏移,而不是从实际的 eval 缓冲区中偏移,通常该 eval 缓冲区是匿名的。 Firebug 是第一个增强调试体验的调试器 to jump through some hoops,它允许 Dojo 的加载器在 XHR 和 eval 之间注入(inject)的特殊元数据,以确定源的文件路径。 Webkit/Safari 最近也实现了这一点。我相信 debugAtAllCosts 早于 XD 加载程序。

    关于dojo - 如何在本地测试跨域构建?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1922351/

    10-14 06:50