2

require.js を使用して依存関係をロードするアプリに取り組んでいます。アプリで使用される jQuery 用のプラグインも作成しました。jQuery プラグインは Underscore に依存していますが、AMD をサポートしていません。私の問題は、アプリの実行時にプラグインでアンダースコアを使用できないことです。

いくつかのコード スニペット:

index.js

require.config({
    baseUrl: "js/app",
    paths: {
        underscore: "//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min",
        myPlugin: '../lib/myPlugin/myPlugin.js',
    },
    shim: {
        underscore_global: {
            exports: '_'
        },
        myPlugin: {'deps': ['jquery', 'underscore']},
    }
});

私のプラグインが使用されている場所:

define(function (require) {
    "use strict";

    var $ = require('jquery'),
        myPlugin = require('myPlugin')

コンソールは、プラグインがアンダースコア ( _) に対して関数を呼び出そうとすると、未定義であると表示します。

私は何を間違っていますか?

4

1 に答える 1

0

プラグインは に依存しunderscoreます。これはAMD モジュールではないため、RequireJS に関する限り、何もしませdefine()。(実際にはグローバル スコープで何かを定義しますが、Require はこれを気にしません。) これがunderscore_globalshim がある理由です。次の変更を提案します。

require.config({
    shim: {
        underscore_global: {
            exports: '_',
            deps: ['underscore']
        },
        myPlugin: {'deps': ['jquery', 'underscore_global']},
        ...
    }
});
于 2013-09-18T09:48:14.393 に答える