Javascript 模块在require列表中的用途是什么,而在回调函数中的用途是什么
我基本上有两个问题。 一,Javascript 模块在require列表中的用途是什么,而在回调函数中的用途是什么,javascript,jquery,dojo,Javascript,Jquery,Dojo,我基本上有两个问题。 一, <script type="text/javascript"> require( [ "dijit/registry", "dojo/ready", "awl/database/BaseEdit", "dojo/_base/connect", "awl/admin/Subscriptions", "abc/component/database/X
<script type="text/javascript">
require(
[
"dijit/registry",
"dojo/ready",
"awl/database/BaseEdit",
"dojo/_base/connect",
"awl/admin/Subscriptions",
"abc/component/database/XYZSettings"
],
function(registry, ready, BaseEdit, connect, Subscriptions){
ready(function(){
BaseEdit({
objId: "Settings",
readUrl:'/ui/settings/',
updateUrl:'/ui/settings/' ,
defaultsUrl:'/ui/settings',
creatable:false,
deletable:false
});
});
}
);
</script>
<script type="text/javascript">
require(
[
"dijit/registry",
"dojo/ready",
"awl/database/BaseEdit",
"dojo/_base/connect",
"awl/admin/Subscriptions",
"abc/component/database/XYZSettings"
],
function(registry, ready, BaseEdit, connect, Subscriptions){
ready(function(){
BaseEdit({
objId: "Settings",
readUrl:'/ui/settings/',
updateUrl:'/ui/settings/' ,
defaultsUrl:'/ui/settings',
creatable:false,
deletable:false
});
});
}
);
</script>
<script type="text/javascript">
require(
[
"dijit/registry",
"dojo/ready",
"awl/database/BaseEdit",
"dojo/_base/connect",
"awl/admin/Subscriptions",
"abc/component/database/XYZSettings"
],
function(registry, ready, BaseEdit, connect, Subscriptions){
ready(function(){
BaseEdit({
objId: "Settings",
readUrl:'/ui/settings/',
updateUrl:'/ui/settings/' ,
defaultsUrl:'/ui/settings',
creatable:false,
deletable:false
});
});
}
);
</script>
要求(
[
“dijit/注册表”,
“dojo/ready”,
“awl/数据库/基本编辑”,
“dojo/_base/connect”,
“awl/admin/Subscriptions”,
“abc/组件/数据库/XYZ设置”
],
功能(注册表、就绪、基本编辑、连接、订阅){
就绪(函数(){
基本编辑({
目标:“设置”,
readUrl:“/ui/settings/”,
updateUrl:“/ui/settings/”,
defaultsUrl:“/ui/settings”,
可创建:错误,
可删除:false
});
});
}
);
关于第一个问题,有些模块在加载时会产生副作用,不需要直接引用其返回值。Dojo本身中的一些例子包括:
<script type="text/javascript">
require(
[
"dijit/registry",
"dojo/ready",
"awl/database/BaseEdit",
"dojo/_base/connect",
"awl/admin/Subscriptions",
"abc/component/database/XYZSettings"
],
function(registry, ready, BaseEdit, connect, Subscriptions){
ready(function(){
BaseEdit({
objId: "Settings",
readUrl:'/ui/settings/',
updateUrl:'/ui/settings/' ,
defaultsUrl:'/ui/settings',
creatable:false,
deletable:false
});
});
}
);
</script>
dojo/domReady代码>插件,它没有有意义的返回值,但在DOM准备就绪之前不会解析,因此会延迟回调中的任何内容运行到该点
- 各种
模块,向所有dojo/NodeList-*
实例添加功能(例如,通过dojo/NodeList
调用返回)dojo/query
,用于事件委派支持(包括使用dojo/query
,但不需要直接调用dojo/on
)dojo/query
dojo/ready
在调用传递给它的回调之前,将等待所有挂起的模块被加载并且DOM准备就绪。通常不鼓励使用dojo/domReady在现代Dojo应用程序中,code>和需要
<script type="text/javascript">
require(
[
"dijit/registry",
"dojo/ready",
"awl/database/BaseEdit",
"dojo/_base/connect",
"awl/admin/Subscriptions",
"abc/component/database/XYZSettings"
],
function(registry, ready, BaseEdit, connect, Subscriptions){
ready(function(){
BaseEdit({
objId: "Settings",
readUrl:'/ui/settings/',
updateUrl:'/ui/settings/' ,
defaultsUrl:'/ui/settings',
creatable:false,
deletable:false
});
});
}
);
</script>
至于这里关于特定模块的问题,任何人都不可能在不知道这些模块实际是什么的情况下说出来,我假设它们是您项目中的专有代码。在使用声明性标记时,dojo/ready
不是常用的吗?这也是模块可能已加载但未在回调中使用的原因之一。。。因为它只用于声明性标记。@Ken Franqueiro他们在这里创建BaseEdit的实例吗?它正在被调用,但它是否创建实例将取决于什么是BaseEdit
,我无法从这里有限的代码中分辨出来。如果它是使用dojo/\u base/declare
创建的构造函数,那么是的,因为declare
确保构造函数无论是否使用new
关键字调用都能正常工作(但仍然鼓励使用new
)。无论哪种方式,都不会保留对BaseEdit
返回的任何内容的引用,因此我认为这是一种具有副作用的内容,这通常不适合构造函数。
<script type="text/javascript">
require(
[
"dijit/registry",
"dojo/ready",
"awl/database/BaseEdit",
"dojo/_base/connect",
"awl/admin/Subscriptions",
"abc/component/database/XYZSettings"
],
function(registry, ready, BaseEdit, connect, Subscriptions){
ready(function(){
BaseEdit({
objId: "Settings",
readUrl:'/ui/settings/',
updateUrl:'/ui/settings/' ,
defaultsUrl:'/ui/settings',
creatable:false,
deletable:false
});
});
}
);
</script>