dojo.require函数的源代码

时间:2014-05-21 03:41:51

标签: javascript dojo

全部,原谅我,我是Dojo的初学者,我从here下载Dojo基础。并尝试找到dojo.require函数的定义,以了解它是如何实现的。不幸的是,没有找到任何有用的东西。有人可以帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:0)

我调试代码并发现require函数指向下面的代码。

    // this will be the global require function; define it immediately so we can start hanging things off of it
            req = function(
                config,       //(object, optional) hash of configuration properties
                dependencies, //(array of commonjs.moduleId, optional) list of modules to be loaded before applying callback
                callback      //(function, optional) lambda expression to apply to module values implied by dependencies
            ){
                return contextRequire(config, dependencies, callback, 0, req);
            },
...

// the loader can be defined exactly once; look for global define which is the symbol AMD loaders are
    // *required* to define (as opposed to require, which is optional)
    if(global.define){
        if( 1 ){
            signal(error, makeError("defineAlreadyDefined", 0));
        }
        return;
    }else{
        global.define = def;
        global.require = req;//define the global variable require and define .
        if( 0 ){
            require = req;
        }
    }

还发现了其他有趣的东西。 如果dojo.require一个js文件,如下所示。在我的测试util/utiltest.js中的js文件位置。

require(
            ["dojo/ready", "util/utiltest"],
            function (ready, util) {
                ready(function () {
                    var id = "selected_text";
                    util.setRed(id);
                });
            });

utiltest.js中的代码是:

define("util/utiltest",["dojo/dom", 'require'], function (dom) {
    return {
        setRed: function (id) {
            dom.byId(id).style.color = "red";
        }
    };
});

实际上Dojo将创建脚本标记以将其加载到页面中。

enter image description here

希望这对你有所帮助。感谢。