【问题标题】:Why doesn't my plugin load its dependencies?为什么我的插件不加载它的依赖项?
【发布时间】:2013-09-18 09:14:21
【问题描述】:

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

一些代码sn-ps:

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

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

我做错了什么?

【问题讨论】:

    标签: javascript jquery jquery-plugins requirejs underscore.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 2019-03-25
      • 2017-01-23
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多