【问题标题】:Loading Dojo Library from AOL and Widget Codes from Local?从 AOL 加载 Dojo 库并从本地加载小部件代码?
【发布时间】:2025-12-21 18:10:06
【问题描述】:

我刚开始学习道场。我按照一个站点 Widget 示例使用了一些不同的方式来加载 Dojo 库。我喜欢像这样使用 AOL 引用来加载 dojo.js:

<script type="text/javascript" 
  src="http://o.aolcdn.com/dojo/1.2.0/dojo/dojo.xd.js">
</script>

并将我的小部件代码保存在本地网络服务器中,如下所示:

scripts/
   myWidget/
     widgetExample.js
   ...
test.html

其中 widgetExample.js 包含我的小部件类代码,test.html 是我的测试页面。我收到的错误消息是:“未捕获的异常:无法加载跨域资源:myWidget.widgetExample ...”。我不确定是否必须在本地加载 dojo 包?我真的很喜欢按原样分离 dojo 库包或从 AOL 加载,并且只将我自己的代码放在本地路径中。我试图用谷歌搜索不同的域加载、baseScriptUrl 和 moduleMapping?还是想不通。感谢您提供任何详细说明。

【问题讨论】:

    标签: dojo


    【解决方案1】:

    这可能会有所帮助:http://dojotoolkit.org/forum/dojo-core-dojo-0-9/dojo-core-support/xdomain-usage-dojo-loading-not-detecting-local-modules

    总结是:您需要一个 djConfig 项来注册您希望成为本地的 modulePaths,并指定一个 baseUrl 以“欺骗”Dojo,使其认为它知道这些路径在主机之间的相对位置。

    djConfig = { modulePaths: { "mine":"/js/mine" };

    然后你可以从 /js/mine/Thing.js 做 dojo.require("mine.Thing")

    问候, 彼得·希金斯

    【讨论】:

    • 我想补充几点。我需要设置 baseUrl: './' 否则 'xd' 字符串被插入到我的要求路径中。其次,djConfig 必须在加载 Dojo 之前定义。