我正在查看另一个人写的JavaScript代码段,
define(
[
"dojo/a",
"dojo/b",
"dojo/c",
...,
"dojo/z"
],
function(a, b) {
var c = require("dojo/c");
...;
var z = require("dojo/z");
// code goes here
}
);
我想弄清楚你为什么会这样做。这个更短的片段是不是完全相同?:
define(
[
"dojo/a",
"dojo/b",
"dojo/c",
...,
"dojo/z"
],
function(a, b, c, ..., z) {
// code goes here
}
);
答案 0 :(得分:0)
导入模块一次后,您无需再次添加需求:
<script>require(['dojox/rpc/JsonRPC','dojo/store/Memory','dijit/form/FilteringSelect'],
function(FilteringSelect,JsonRPC,Memory){
##your code goes here..
});
</script>
答案 1 :(得分:0)
第一个片段中的片段不同,加载器首先将数组中传递的所有模块加载到require
,并且仅在加载了数组中列出的所有模块后才执行回调。在回调中,您可以在其他代码require
之前运行其他代码。
示例:
define(
[
"dojo/a",
"dojo/b",
"dojo/c",
...,
"dojo/z"
],
function(a, b) {
// execute some code here
var c = require("dojo/c");
var z = require("dojo/z");
// code execute here even if c and z are not loaded yet
}
);
您的第二个片段仅在加载所有模块时执行回调。
一般来说,我会选择第二种方法,即使你需要根据某些条件加载某些模块,第一种方法也很方便。