dojo 如何在本地测试跨域生成?

k5ifujac  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(152)

使用dojo工具包,什么是本地测试将作为跨域执行的代码而不进行实际构建的正确方法?
如表所示,有三种可能的选择(每种都有其缺点):

*使用本地(非xd)XMLHttpRequest dojo。需要

  • 这个选项实际上并不测试xd行为,因为它要求通过XHR同步地执行js。
    *djConfig.调试所有成本=真;
  • 虽然这个选项异步加载所需的代码(通过'script'标记),但它也通过XHR拉入代码,解析其中的dojo.require[s],然后拉入它们。这(使用loader_debug)同样不是loader_xd所做的。More info on this topic in a different question.
    *创建跨域生成
  • 这种方法需要一个构建过程,而这在我运行代码的环境中是不可能的(我们使用自己的动态构建过程,其中只包括特定页面所需的js。这个过程不适合开发)。

因此,我的问题是:有没有一种方法可以使用loader_xd,它不需要xd构建(为每个文件添加xd前缀/后缀)?
第二种方法(使用debugAtAllCosts)也让我质疑预解析dojo.require[s]的动机。如果loader_xd不会(或者更确切地说不能)预解析,为什么为测试/调试创建的方法会这样做?

ma8fv8wu

ma8fv8wu1#

peller已经描述了这种情况,如果你只想为你的模块生成. xd.js文件,你可以查看util/buildscripts/jslib/buildUtilXd.js和它的buildUtilXd.xdgen()函数。
编写自己的脚本需要一些工作,但是您可以查看util/buildscripts/build.js以获取指针。
我希望在Dojo的未来(可能是Dojo 2.x的时间框架),我们可以切换到一个加载器,它只使用模块格式的脚本标记,模块格式有一个函数 Package 器,由开发人员编写,这将允许相同的模块格式在本地和xd情况下工作。

zqdjd7g9

zqdjd7g92#

我不认为有任何方法可以在不构建和部署XD的情况下加载它。您对各种选项的分析似乎是正确的。
debugAtAllCosts是专门用来解决调试问题的,直到最近,大多数浏览器都不能对eval带来的代码进行任何智能处理。时至今日,Firefox仍会在控制台中报告eval站点出现的异常(bootstrap.js),其行号偏移量与eval的偏移量不同,而不是与实际eval缓冲区的偏移量不同,Firebug是第一个增强调试体验的调试器to jump through some hoops,它允许Dojo的加载器在XHR和eval之间注入特殊的元数据,以确定到源代码的文件路径。Safari最近也实现了这一点。我相信debugAtAllCosts早于XD加载器。

相关问题