gpt4 book ai didi

javascript - 道场教程 : dojo is not defined

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:10 26 4
gpt4 key购买 nike

我想开始使用 dojo。

因此我正在使用他们的教程:http://dojotoolkit.org/documentation/tutorials/1.8/hello_dojo/

最简单的教程显示这个页面

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tutorial: Hello Dojo!</title>
</head>
<body>
<h1 id="greeting">Hello</h1>
<!-- load Dojo -->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.8.1/dojo/dojo.js"
data-dojo-config="async: true"></script>
</body>
</html>

我现在打开页面(在他们的页面上尝试了本地和托管版本)。当我写的时候

dojo.query("h1")

在我的 Firebug 控制台中,我收到消息:

ReferenceError: dojo is not defined

请帮忙

最佳答案

这个问题没有正确答案。这不起作用的原因是因为您启用了 async 模式。这实际上是 Dojo 核心将被异步加载。

Dojo 核心 是在加载 dojo.js 文件时自动加载的 Dojo 部分。它设置了一个名为 dojo 的全局变量,其中包含基本功能,例如 dojo.query 部分。

您的问题是您实际上并没有在等待核心加载。因为核心没有加载,dojo 将是undefined,给你那个错误。


在使用 AMD 加载器 (require()) 时,你应该只使用 async 模式,如果你不想使用它(传统模式),你只需将 async 设置为 false。但这种模式实际上已弃用,并将在 Dojo 2.0 中删除。

另一种解决方案是使用 AMD 加载器(异步模块加载器),正确的语法是:

require([ "dojo/query" ], function(query) {
query("h1");
});

在此示例中,您可能还没有加载 DOM,因此最好的答案是等待 DOM 也加载,结果是:

require([ "dojo/query", "dojo/domReady!" ], function(query) {
query("h1");
});

当您使用协议(protocol)隐含 URL 时,您表示它正在工作。然而,事实并非如此。它突然起作用的唯一原因是因为您离开了 async 属性,它默认为 false

不同于Christofer说,遗留模式仍然可用,但已弃用。

Agnes' answer会工作,因为它使用的是 AMD 加载程序。然而,将遗留代码和新语法结合起来看起来并不好。如果你选择 AMD,你应该把所有东西都放在 AMD 而不仅仅是某些部分。

关于javascript - 道场教程 : dojo is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com