【问题标题】:How to locally test cross-domain builds?如何在本地测试跨域构建?
【发布时间】:2009-12-17 15:07:52
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: dojo doh


    【解决方案1】:

    peller 描述了这种情况。如果您只想为您的模块生成 .xd.js 文件,您可以查看 util/buildscripts/jslib/buildUtilXd.js 及其 buildUtilXd.xdgen() 函数。

    制作自己的脚本需要一些工作,但您可以查看 util/buildscripts/build.js 中的指针。

    我希望在未来的 Dojo(可能是 Dojo 2.x 时间框架)中,我们可以切换到只使用脚本标签的加载器,该加载器的模块格式有一个函数包装器,由开发人员编写.这将允许相同的模块格式在本地和 xd 情况下工作。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-15
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 2013-12-02
        • 2023-02-07
        • 1970-01-01
        相关资源
        最近更新 更多