1

これら2つのアーモンドの有無の違いは何ですか?

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

編集

ネストされています:

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

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

前者はrequirejsエラーを返します(はしごの使用を示唆しています)。

私が尋ねている理由は、

AMD モジュールとして使用できるライブラリを構築する方法について、example-libglobalを研究 しています。

エクスポートするライブラリ モジュール:

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

この例では、アーモンドを使用してrequire principiumreturn require('principium'))を使用しています。エクスポートされたライブラリオブジェクトが返されることを期待しています。

しかし、私はアーモンドを使用していません。require('principium')構文でエラーが発生し、require(['principium'])代わりに使用すると、エクスポートされたライブラリ オブジェクトが返されません。

エクスポートされたライブラリ オブジェクト、つまり でreturn { convert: convert }; 返されるということprincipium.jsです。

編集

次のように、ネストされたrequireを適切に使用するにはどうすればよいですか。

var moduleExport = require('module');

私が期待するように動作します。

編集

私はそれを解決しましたが、それがどのように機能したかはわかりません。ビルドにアーモンドを含めたところ、魔法のように機能しました。

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

そしてリファクタリング

File: lib/main.js

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

1 に答える 1