无法弄清楚为什么requirejs优化器不能及时加载某些模块

时间:2014-08-25 22:20:10

标签: javascript jquery requirejs

我花了很长时间来梳理文档,示例和问题......但似乎仍无法解决我的问题。

我有例如:

require.config({
    paths: {
        "jquery": "lib/require-jquery",
        "underscore": "lib/underscore.min",
        "backbone": "lib/backbone.min",
        "tooltipster": "lib/tooltipster",
        "perfectScrollbar" : "lib/perfect-scrollbar",
        "otherstuff": "lib/otherstuff",
        ...
    },
    shim: {
        backbone: {
            'deps': ['jquery', 'underscore'],
            'exports': 'Backbone'
        },
        underscore: {
            'exports': '_'
        },
        tooltipster: {
            'deps': ['jquery'],
            'exports': 'Tooltipster'
        },
        perfectScrollbar: {
            'deps': ['jqueryMousewheel'],
            'exports': 'PerfectScrollbar'
        },
        otherstuff: {
            'deps': ['jquery', 'ajaxQueue', 'tooltipster', 'perfectScrollbar'],
            'exports': 'otherstuff'
        },
        ...
    }
});

我已成功运行命令r.js -o build.js,并且所有文件都成功缩小为我的文件。该应用程序似乎在游戏中加载和运行直到......

在转换为优化器之前工作的代码不再识别工具提示器和perfectscrollbar。在运行时,“$('。tooltipster')。tooltipster不是一个函数”,“element.perfectscrollbar不是一个函数”,但在加载所有内容后,在控制台中,如果我输入相同的选择器和调用,它正在发挥作用。

我似乎无法弄清楚我错过了什么。除了在路径和垫片中使用tooltipster / perfectscrollbar之外还有什么必要?我的模块也定义如下:

define(['jquery', 'underscore', 'backbone', 'tooltipster', 'perfectscrollbar', ...], function($, _, Backbone, Tooltipster, PerfectScrollbar, ...)

我希望有足够的示例代码,我一直在反对google,stackoverflow和我的IDE,现在已经有一段时间了,我不知所措。

1 个答案:

答案 0 :(得分:0)

答案最终成为一个古老的问题,需要两次jquery。

问题在于,因为我使用了require-jquery.js,所以

<script data-main="js/dist/main" src="js/lib/require-jquery.js?v=@VERSION@"></script>

加上

paths: {
    "jquery": "lib/require-jquery",
    ...
}

导致jquery被加载两次。

修复是使用此行代替:

paths: {
    "jquery": "empty:",
    ...
}