Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单的commonJS包装器在require.js中是如何工作的?_Javascript_Requirejs_Commonjs - Fatal编程技术网

Javascript 简单的commonJS包装器在require.js中是如何工作的?

Javascript 简单的commonJS包装器在require.js中是如何工作的?,javascript,requirejs,commonjs,Javascript,Requirejs,Commonjs,以他们的网站为例 define(function (require) { var foo = require('foo'); //Define this module as exporting a function return function () { foo.doSomething(); }; }); 我的问题是,由于“foo”是异步加载的,它下面的Javascript如何在加载之前不执行?这在和中进行了解释 Require.js将在某个

以他们的网站为例

define(function (require) {
    var foo = require('foo');

    //Define this module as exporting a function
    return function () {
        foo.doSomething();
    };
});
我的问题是,由于“foo”是异步加载的,它下面的Javascript如何在加载之前不执行?

这在和中进行了解释

Require.js将在某个时候(在运行函数之前)查看函数的字符串表示形式,找到所有
Require
调用以确定依赖项并加载它们

为了简化这一过程,并简化对CommonJS模块的简单包装,支持这种形式的定义,有时称为“简化CommonJS包装”:

AMD加载程序将使用
Function.prototype.toString()
解析出
require(“”)
调用,然后在内部将上述define调用转换为:

define(['require', 'dependency1', 'dependency2'], function (require) {
    var dependency1 = require('dependency1'),
        dependency2 = require('dependency2');
    return function () {};
});
这允许加载程序异步加载
dependency1
dependency2
,执行这些依赖项,然后执行此函数


你在哪里找到这个例子的?依赖项必须作为第一个参数传递给
define
@“设置导出值”下的FelixKling啊,好的。这是在这里解释的:和。
define(['require', 'dependency1', 'dependency2'], function (require) {
    var dependency1 = require('dependency1'),
        dependency2 = require('dependency2');
    return function () {};
});