【问题标题】:How can I exclude subfolders in requirejs?如何排除requirejs中的子文件夹?
【发布时间】:2017-03-09 11:40:25
【问题描述】:

我的 Magento2 项目中有以下 requirejs 配置:

var config = {
  map: {
    '*': {
      productView: 'Mediahuis_Base/js/product-view',
      refreshCartScript: 'Mediahuis_Base/js/checkout/refresh-cart',
      addressCompletion: 'Mediahuis_Base/js/address/completion',
      addressCompletionHelper: 'Mediahuis_Base/js/address/completion-helper',
      prepareCheckoutShipping: 'Mediahuis_Base/js/checkout/shipping-prepare',
      jquery: 'js/jquery-private',
      /*'jquery/jquery.mobile.custom': 'jquery/jquery.mobile.custom',
       'jquery/jquery-migrate': 'jquery/jquery-migrate',
       'jquery/jquery-storageapi': 'jquery/jquery-storageapi',
       'jquery/ui': 'jquery/ui',
       'jquery/jquery.cookie': 'jquery/jquery.cookie',
       'jquery/validate': 'jquery/validate',
       'jquery/jquery-ui-timepicker-addon': 'jquery/jquery-ui-timepicker-addon',
       'jquery/jquery.metadata': 'jquery/jquery.metadata'/**/
    },
    'js/jquery-private': {
      jquery: 'jquery'
    }
  }
};

js/jquery-private.js

define([
  "jquery"
  ], function (jq) {
  return jq.noConflict();
});

我在示例中注释掉的路径应该动态解析,因为这个列表会一直变化(供应商文件)。

当我不手动添加这些时,我收到以下错误: 未捕获的错误:脚本错误:js/jquery-private/jquery-ui-timepicker-addon

在这种情况下,真正的文件位于 js/jquery/jquery-ui-timepicker-addon 中。如您所见,jquery/ 也在 jquery-private/ 中被解析。

此解决方法的原因是需要将所需的 jquery 模块作为 noConflict 版本插入。没有它,我会收到以下错误:Uncaught TypeError: $.widget is not a function。 由于我需要供应商 js 文件,因此我无法在此处更改源...

【问题讨论】:

    标签: jquery requirejs magento2


    【解决方案1】:

    我还没有真正找到解决问题的完美方法,但我是这样解决的:

    var config = {
      map: {
        '*': {
          ...
        },
        'js/jquery-private': {
          jquery: 'jquery'
        }
      }
    };
    
    (function (global) {
      require.baseLoad = require.load;
      require.load = function (context, moduleName, url) {
        if (url.indexOf('/jquery.js') !== -1) {
          url = url.replace('/jquery.js', '/js/jquery-private.js');
        }
        require.baseLoad(context, moduleName, url);
      };
    }(this));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多