1

我正在查看另一个人编写的 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
    }
);
4

2 回答 2

0

导入一次模块后,无需再次添加 require:

<script>require(['dojox/rpc/JsonRPC','dojo/store/Memory','dijit/form/FilteringSelect'],
        function(FilteringSelect,JsonRPC,Memory){

        ##your code goes here..

        });
</script>
于 2013-05-17T20:01:23.857 回答
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
    }
);

您的第二个片段只有在加载所有模块时才会执行回调。

通常我会选择第二种方法,即使如果您需要根据某些条件加载一些模块,第一种方法可能很方便。

于 2017-03-21T19:58:38.723 回答