dojo 1.9编程风格
我是一个dojo新手,当我使用dojo时,我被dojo require块弄糊涂了,这里我给出了三种编写dojo的方法,哪一种是最好的? 编程风格1,您可以在dojo教程中看到,但我不喜欢这种风格,我喜欢将事件添加为html标记属性,如dojo 1.9编程风格,dojo,Dojo,我是一个dojo新手,当我使用dojo时,我被dojo require块弄糊涂了,这里我给出了三种编写dojo的方法,哪一种是最好的? 编程风格1,您可以在dojo教程中看到,但我不喜欢这种风格,我喜欢将事件添加为html标记属性,如,在这种风格中,我无法访问函数test1() require([“dojo/query”,“dojo/dom”,“dojo/domReady!”),函数(query,dom){ 函数test1(){} 函数test2(){} //……其他职能 }); 编程风格2
,在这种风格中,我无法访问函数test1()
require([“dojo/query”,“dojo/dom”,“dojo/domReady!”),函数(query,dom){
函数test1(){}
函数test2(){}
//……其他职能
});
编程风格2,定义require一次,然后在function中使用它
<script>
require(["dojo/dom"]);
function test1(){
var dom=require("dojo/dom");
//do something with dom
}
function test2(){
var dom=require("dojo/dom");
//do something with dom
}
</script>
需要([“dojo/dom”]);
函数test1(){
var dom=require(“dojo/dom”);
//用dom做点什么
}
函数test2(){
var dom=require(“dojo/dom”);
//用dom做点什么
}
编程风格3,函数内部的require块
<script>
function mytest(){
require(["dojo/query", "dojo/dom"], function(dom){
//do something with dom
})
}
function mytest2(){
require(["dojo/query", "dojo/dom"], function(dom){
//do something with dom
})
}
</script>
函数mytest(){
require([“dojo/query”,“dojo/dom”],函数(dom){
//用dom做点什么
})
}
函数mytest2(){
require([“dojo/query”,“dojo/dom”],函数(dom){
//用dom做点什么
})
}
对于您想要做的事情,我选择选项3。3和2几乎是一样的东西,只是它与AMD配合得很好
我认为,如果在执行此操作时启用了异步模式:
var dom = require("dojo/dom");
require(["dojo/dom"]);
dom在很短的一段时间内仍然是未定义的,这将导致AMD加载程序和后续代码之间的激烈竞争。
当您这样做时,机会是:
var dom = require("dojo/dom");
require(["dojo/dom"]);
在您声明函数之前,您要确保加载程序尽快找到dojo/dom,并且很可能在随后的代码找到dojo/dom之前解决,但您仍然在玩火。建议的方法是在javascript中而不是在dom中连接事件,如:
require(["dojo/on", "dojo/query", "dojo/dom","dojo/domReady!"], function(on, query, dom){
function test1(){}
function test2(){}
on(someNode, on.selector(".myClass", "click"), test1);
});
看
如果您真的想坚持声明式方式(这不是自1.7以来首选的dojo方式),可以通过将以下内容添加到html中,将模块放入全局空间:
<script type="dojo/require">
dom : "dojo/dom",
query : "dojo/query"
</script>
dom:“dojo/dom”,
查询:“dojo/query”
看
或者。。。通过将示例1修改为以下内容,可以将回调放在全局空间中:
<script>
require(["dojo/query", "dojo/dom","dojo/domReady!"], function(query, dom){
test1 = function(){};
test2 = function(){};
//...other functions
});
</script>
require([“dojo/query”,“dojo/dom”,“dojo/domReady!”),函数(query,dom){
test1=函数(){};
test2=函数(){};
//……其他职能
});