javascript - 为什么我的插件不加载它的依赖项?

标签 javascript jquery jquery-plugins requirejs underscore.js

我正在开发一个使用 require.js 加载依赖项的应用程序。我还为应用程序中使用的 jQuery 编写了一个插件。 jQuery 插件依赖于 Underscore 但不支持 AMD。我的问题是在运行应用程序时我的插件无法使用 Underscore。

一些代码片段:

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

当插件尝试在其上调用函数时,控制台显示下划线 (_) 未定义。

我做错了什么?

最佳答案

您的插件依赖于 underscore。这不是一个 AMD 模块,因此就 RequireJS 而言,它没有 define() 任何东西。 (实际上它在全局范围内定义了一些东西,但 Require 并不关心这个。)这就是为什么你有 underscore_global 垫片。我建议进行以下更改:

require.config({
    shim: {
        underscore_global: {
            exports: '_',
            deps: ['underscore']
        },
        myPlugin: {'deps': ['jquery', 'underscore_global']},
        ...
    }
});

关于javascript - 为什么我的插件不加载它的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868217/

相关文章:

javascript - JWPlayer 8 中的playerInstance.setup 值未定义

javascript - 如何使变量成为全局变量以满足需求

javascript - 获得 parent 的第n个 child

jquery - JqPlot 条形图和折线图

jquery - 旧版本与新版本的 jquery 冲突

javascript - jquery animate 使用 Promise 调用两次完成

javascript - canvas.drawImage() 在指定位置和尺寸时使用什么单位?

php - ajax+php+mysql : (another) issue with charsets

javascript - Bootstrap Popover 隐藏在浏览器边缘。如何解决呢?

javascript - 无法将文本框值分配给 jquery 中的另一个文本框