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. 这不是define()AMD 模块,因此就RequireJS 而言没有任何作用。(实际上它在全局范围内定义了一些东西,但 Require 并不关心这一点。)这就是你有underscore_globalshim 的原因。我建议进行以下更改:

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