dojo需要自定义函数版本2

时间:2013-04-11 19:28:06

标签: dojo amd

我有一个关于需要我自己定义的功能的问题。 在我的test.html中,我写道:

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

New是new.js文件,它与dojo文件夹位于同一位置。 在new.js中我写道:

define(["dojo/dom"], function(dom){return dom.byId("d1")});

在这种情况下,我可以在需要时调用我的新功能。

但如果我改变new.js的位置,那么当我再次要求“new”时, 有一个dojo Loader错误。

如果我改变new.js的位置,对于test.html我该怎么写呢?像:

require(["dojo/query", "../new"], function(query, New) {...});

这不起作用。

有人知道,如何要求自定义的js文件,它与dojo文件夹不在同一个地方?

...谢谢

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

首先,我在<head>中包含dojo,如下所示:

<script type="text/javascript"
src="https://myserver.com/dojo/1.7.2/dojo/dojo.js"></script>

现在dojo可以在require中找到。就这么清楚,我的dojo目录列表是这样的:

https://myserver.com/dojo/1.7.2/

enter image description here

您也可以尝试using dojo from a CDN


其次,我将所有javascript都放在一个文件夹/js中。当我require时,我会包含像"js/MyGrid.js"这样的文件夹名称。 js部署到服务器上项目的根目录中。现在我可以require这样:

require([ "dojo", "dijit/Dialog", "dojo/parser", "dojo/_base/lang",
  "dojo/query", "dojo/dom-class", "js/MyGrid.js", "js/MyUploader.js",
  "dijit/form/TextBox", "dijit/form/Textarea", "js/MyJsonHelper.js",
  "dijit/form/SimpleTextarea", "dojox/form/BusyButton", "dojo/dom-attr",
  "dijit/form/Select", "dijit/ProgressBar", "js/MyArray.js", 
  "dojo/domReady!" ], 
  function(dojo, Dialog, parser, lang, query, domClass) {

PS:我绝不赞成这是最佳做法。它对我有用。我知道还有其他方法可以做到这一点,比如设置 data-dojo-config

var dojoConfig = {
    packages: [
        { name: "my", location: "js", main: "app" }
    ]
};

http://dojotoolkit.org/documentation/tutorials/1.7/modules/