javascript - RequireJS + Backbone 没有 jQuery?

标签 javascript jquery backbone.js requirejs zepto

我正在尝试使用 RequireJS,这是我的配置文件:

require.config({
  baseUrl: "/scripts",
  paths: {
    zepto: "zepto.min",
    underscore: "underscore.min",
    backbone: "backbone.min"
  },
  shim: {
    zepto: {
      exports: "$"
    },
    underscore: {
      exports: "_"
    },
    backbone: {
      deps: ["underscore", "zepto"],
      exports: "Backbone"
    }
  }
});

这是我的 app.js :

require(['backbone'], function(Backbone) {
  console.log('loaded!');
});

这工作正常,但我不知道为什么 RequireJS 试图加载 jQuery。

最佳答案

因为Backbone需要名为jquery的模块(查看backbone.js顶部)文件。

  // Set up Backbone appropriately for the environment. Start with AMD.
  if (typeof define === 'function' && define.amd) {
    define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
      // Export global even in AMD case in case this script is loaded with
      // others that may still expect a global Backbone.
      root.Backbone = factory(root, exports, _, $);
    });

并且您尚未定义此模块。

要破解此问题,请使用 zepto 作为 jquery:

require.config({
  baseUrl: "/scripts",
  paths: {
    jquery: "zepto.min",
    underscore: "underscore.min",
    backbone: "backbone.min"
  },
  shim: {
    jquery: {
      exports: "$"
    },
    underscore: {
      exports: "_"
    }
  }
});

第二:shim 仅适用于非 amd 模块。 Backbone是AMD模块。

关于javascript - RequireJS + Backbone 没有 jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310913/

相关文章:

javascript返回包含特定数组项的随机数据

javascript - 我的 onbeforeunload 函数出了问题,但我找不到它

jQuery 加载和 SEO

javascript - 显示成功消息

jquery - Bootstrap 模式打开错误的模式

javascript - 一次保存多个 Backbone 模型

javascript - 这个正则表达式模式/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/在Javascript中意味着什么?

javascript - 多次克隆对象并在 jQuery 中附加克隆

javascript - 具有各种不同图标问题的 JQuery 切换图标

javascript - 在执行回调之前我不知道如何返回 true 或 false