我们可以在我们的html页面中使用dojo工具包。
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/dojo.js"></script>
<script type="text/javascript">
require(["dojo/dom"], function (dom) {
var button = dom.getById("ok");
});
</script>
我们可以在我们的脚本中使用" Dojo/dom" 。
我想在服务器中创建自己的JavaScript模块并在每个地方使用它。
例如,我有一个域http://mydomain.com/api/v1/app.js
我应该使用此 app.js 这样。
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/dojo.js"></script>
<script src="//mydomain.com/api/v1/app.js"></script>
<script type="text/javascript">
require(["dojo/dom","app/something"], function (dom,something) {
var st = new something();
});
</script>
i创建 app.js 这样的文件,但不起作用。
declare(["dojo/_base/declare"],
function (declare) {
return declare(null, {
constructor: function () {
console.log("hello");
}
});
})
我应该如何创建我的app.js文件?
这里有多个问题。第一个(和真正的问题)是Dojo将相对寻找您的模块。这意味着它将在您的应用模块的CDN上查看某个位置(显然找不到)。
要更改包的位置,您必须配置Dojo配置的软件包部分。在您的情况下是:
<script type="text/javascript">
dojoConfig = {
packages: [{
name: 'custom',
location: 'http://mydomain.com/api/v1/'
}]
}
</script>
然后您可以使用:
获得模块require(["custom/app"], function(app) {
// Do something
});
重要:确保在Dojo加载器(dojo.js
)之前加载Dojo配置。因此,您必须将此<script>
-TAG放在dojo.js
脚本标签上方才能使其正常工作。
另一个问题是,在app.js
中,您必须将define()
用作第一个语句,而不是 declare()
。例如:
define(["dojo/_base/declare"],
function (declare) {
return declare(null, {
constructor: function () {
console.log("hello");
}
});
})