我有一个关于需要我自己定义的功能的问题。 在我的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文件夹不在同一个地方?
...谢谢
答案 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/
您也可以尝试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" }
]
};