行$("body").slimScroll();引发错误,因为未定义slimScroll。这是因为require.js可能不会自动加载shim键,如果您需要任何模块,该键在shim中指定为依赖项(我想如果我有shim jquery.slimscroll并且其依赖项为,然后当我需要jquery时,它会自动加载jquery-不会发生此行为)。因此正确的方法是调用jquery.slimscroll,所以require知道我需要define(['jquery', 'jquery.slimscroll') function ($) ...,并且由于它在填充程序中,因此加载方式会有所不同,因为它与AMD不兼容。问题是,如果我有很多jquery.slimscroll,我需要始终在jquery plugins调用中传递我需要的所有插件。有什么办法解决这种烦人的行为并只写define吗?require.config({ baseUrl: 'js/bower', paths: { react: 'react/react-with-addons', jquery: 'jquery/dist/jquery', 'jquery-private': '../jquery-private', 'jquery.slimscroll': 'jquery-slimscroll/jquery.slimscroll.min' }, map: { '*': { jquery: 'jquery-private', }, 'jquery-private': { jquery: 'jquery' } }, shim: { 'jquery.slimscroll': ['jquery'] }});require(['jquery'], function ($) { $("body").slimScroll();}); (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您可以将jquery插件添加到jquery-private模块的依赖项中。define(['jquery', 'jquery.slimscroll', ...], function (jQuery) { return jQuery.noConflict(true);});这样,当任何模块需要jquery时,插件也会同时加载。我假设jquery-private旨在加载jQuery,以便它与其他版本的jQuery不冲突。这就是我的示例在上面反映的内容,但是模块实际执行的操作通常并不重要。使用这种方法,您仍然需要为每个不是AMD模块的插件配置shim。此外,您的插件将必须获得map设置,就像jquery-private才能获得真正的jquery模块一样。否则,将存在循环依赖关系。 (adsbygoogle = window.adsbygoogle || []).push({});
10-04 21:51
查看更多