【问题标题】:RequireJS + Backbone without jQuery?没有jQuery的RequireJS + Backbone?
【发布时间】:2016-03-22 12:34:24
【问题描述】:

我正在尝试使用 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。

【问题讨论】:

    标签: javascript jquery backbone.js requirejs zepto


    【解决方案1】:

    因为 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 as jquery:

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

    其次:shim 仅适用于 非amd 模块。 Backbone 是 AMD 模块。

    【讨论】:

    • Backbone 不再需要 jquery,请参阅github.com/jashkenas/backbone/wiki/… 了解如何在没有它的情况下运行
    • @ivani 查看backbone.js 文件 (v. 1.2.3)。骨干需要模块称为jquery
    • 感谢@TomaszJakubRup!我不知道这个黑客,非常好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多