1

这两种加杏仁和不加杏仁有什么区别?

require('module'); require(['module']);

编辑

嵌套:

define(function() { require('module'); }

define(function() { require(['module']); }

前者给出了一个 requirejs 错误(建议使用梯子)。

我问的原因是,

我正在研究 example-libglobal如何构建可用作 AMD 模块的库。

我们要导出的库模块:

File: principium.js

/**
* The main module that defines the public interface for principium,
*/
define(function (require) {
    convert = require('principium/convert');

    //Return the module value.
    return {
        convert: convert
    };
});

返回库模块的主模块。

File: lib/main.js

define(function() {
    //Use almond's special top-level, synchronous require to
    //get the final module value, and export it as the public
    //value.
    return require('principium');
});

在这个例子中,它使用杏仁来要求principiumreturn require('principium')),我希望它返回导出的库对象。

但我不使用杏仁,require('principium')语法会出错,如果我使用require(['principium'])它,则不会返回导出的库对象。

导出的库对象,即我的意思是return { convert: convert };principium.js.

编辑

我怎样才能正确使用嵌套要求,以便:

var moduleExport = require('module');

按我的预期工作。

编辑

我解决了它,但我不知道它是如何工作的,我在构建中加入了杏仁,它神奇地工作。

"include": ["../bower_components/almond/almond", "lib/main"]

并重构

File: lib/main.js

define([], function() {
    return require('principium');
});
4

1 回答 1

-2

它是“后者”,因为它是两个选项的后一个子句,而不是梯子,梯子是你爬上或下爬才能到达的东西,否则不可能到达高度。

有了那一点“你知道的越多”:如果你使用 require.js,你不能只需要一个模块:require.js 用于加载依赖项,以便运行一个函数,所以语法是:

require(
  ['dependency1', 'dependency1',...],
  function codetorun(dep1, dep2) { ... }
);

您的函数依赖于来自dependency1等的代码,因此您“要求”在函数运行之前加载该代码并将其作为变量提供给您的函数。

就 require.js 而言,简单地在一个模块中要求,而不需要它,这是没有意义的,因此它会引发错误。

于 2014-08-01T05:50:59.240 回答