谷歌';s托管dojox.gfx

谷歌';s托管dojox.gfx,dojo,Dojo,我使用以下html从Google的主机加载dojo <script src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("dojo", "1.1.1");</script> <script type="text/javascript"> dojo.require("dojox.gfx"); ... 加载(“doj

我使用以下html从Google的主机加载dojo

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("dojo", "1.1.1");</script>
<script type="text/javascript">
dojo.require("dojox.gfx");
...

加载(“dojo”,“1.1.1”);
dojo.require(“dojox.gfx”);
...
此错误出现在REQUER行上,错误类似于dojox.gfx,未定义。有没有办法做到这一点,或者谷歌不支持dojox扩展


或者,我是否可以为标准dojo版本使用另一个通用主机?

我相信google将成为导入库的名称空间。试试:
google.dojo.require


哦!!正如下面所指出的,不要忘记使用google.setOnLoadCallback而不是直接调用函数。

更好的问题是-为什么要这样做?如果您是在本地主机上开发,那么只需使用相对路径,如果您是在面向internet的服务器上开发,请将dojo文件粘贴在该服务器上


另外-确保您没有与直接从标记引用.js文件的情况不同(请注意,google js api也支持这一点,请参见),google.load不是同步的。这意味着当您的代码到达google.load时,它不会等待dojo完全加载以继续解析;它将直接进入dojo.require行,并在那里失败,因为dojo对象将未定义

解决方案(如果您不想使用direct标记)是将引用dojo的所有代码封装在start函数中,并通过执行以下操作将其设置为回调:

google.load("dojo", "1.1.1", {callback: start});

function start() {
    dojo.require("dojox.gfx");
    ...
}


dojox实际上没有维护,将从dojo-2中取出。dojox中的大多数小部件都有主要问题,只有少数几个好的


IMHO dojo应该是自托管的,因为总有一些东西需要覆盖-例如,您需要在这个dojox.gfx中进行一些修复。

使用外部版本可以让现在与其他用户更容易地共享单个文件原型。除此之外,谷歌把他们的产品卖给了我
google.setOnLoadCallback(start);
google.load("dojo", "1.1.1");

function start() {
    dojo.require("dojox.gfx");
    ...
}