require和require之间有什么区别

时间:2014-08-01 05:39:42

标签: javascript node.js requirejs amd almond

这两种有杏仁和有杏仁的区别是什么?

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');
});

在此示例中,它使用almond来要求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');
});

1 个答案:

答案 0 :(得分:-2)

它"后者",因为它是两个选项的后一个条款,而不是梯子,这是你向上或向下攀爬以达到不可能达到高程的东西。

有了这个"你知道得越多"解决方法:如果您使用require.js,则不能只需要一个模块:require.js用于加载依赖项,以便运行函数,因此语法为:

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

您的功能取决于dependency1等代码,因此您需要"需要"在函数运行之前,要加载并作为变量提供给函数的代码。

只要在一个模块中,只需要一个模块而不需要它就没有任何意义,只要require.js可以告诉它,所以它会抛出一个错误。