Requirejs 如何在require.js中使用hammer.js插件

Requirejs 如何在require.js中使用hammer.js插件,requirejs,hammer.js,Requirejs,Hammer.js,我正在尝试将hammer.js插件与require.js一起使用,但我运气不好 这是我的密码: requirejs.config({ paths: { "jquery": ('__proto__' in {}) ? "lib/zepto" : "lib/jquery", "hammer-jquery": "lib/jquery.hammer", "hammer-showtouches": "lib/hammer.showtouches", "h

我正在尝试将hammer.js插件与require.js一起使用,但我运气不好

这是我的密码:

requirejs.config({
  paths: {
      "jquery": ('__proto__' in {}) ? "lib/zepto" : "lib/jquery",
      "hammer-jquery": "lib/jquery.hammer",
      "hammer-showtouches": "lib/hammer.showtouches",
      "hammer-fakemultitouch": "lib/hammer.fakemultitouch"
  },
  shim: {
      "jquery": {
          exports: "$"
      },
      "hammer-showtouches": {
          deps: [ "hammer-jquery" ],
          exports: "Hammer.plugins.showTouches"
      },
      "hammer-fakemultitouch": {
          deps: [ "hammer-jquery" ],
          exports: "Hammer.plugins.fakeMultitouch"
      }
  },
  waitSeconds: 30
});

requirejs(["jquery","hammer-jquery","hammer-showtouches","hammer-fakemultitouch"], function ($,Hammer) {
    $(function(){
      if(!Hammer.HAS_TOUCHEVENTS && !Hammer.HAS_POINTEREVENTS) {
            Hammer.plugins.showTouches();
            Hammer.plugins.fakeMultitouch();
          }
    });
});
下面是错误:

未捕获的TypeError:无法读取未定义hammer.showTouchs.js:7的属性“plugins”

未捕获类型错误:无法读取未定义require.js:8的属性“plugins”

未捕获类型错误:无法读取未定义的hammer.fakemultitouch.js:7的属性“plugins”

未捕获类型错误:无法读取未定义require.js:8的属性“plugins”


我尝试在shim配置中包含Hammer,但运气不佳(这是不必要的,因为jquery.Hammer的最新版本与AMD兼容)。

您的问题似乎是没有包含
hammerjs jquery
插件所需的
hammerjs
库。

要解决此问题,您需要在
requirejs
路径中添加类似
'hammer':'lib/hammerjs/dist/hammer.min',


此外,这里还有一些关于我如何将
hammerjs
requirejs
结合使用的相关信息

在我的例子中,我希望它能够与
主干网
requirejs
一起工作。我用
bower
安装了这些库

bower install --save hammerjs
bower install --save backbone.hammer
然后,我继续添加RequireJS配置:

  • 我注意到
    jquery.hammer.js
    是AMD,并且自动需要jquery。它还默默地依靠锤子。它修改jquery以支持Hammer。不需要垫片

  • 我注意到
    hammerjs
    是AMD,并自动导出Hammer。不需要垫片

  • 我注意到
    backbone.hammer
    是AMD,自动要求
    下划线
    主干
    hammer
    。它修改主干以支撑锤子。不需要垫片

因此,我的配置仅使用路径(因为不需要垫片支持):


包裹HammerJS,然后绑定到全局窗口:

// @path utils/hammer
define([
  'hammer'
], function (Hammer) {
  window.Hammer = Hammer;
});

然后让依赖于HammerJS的插件或模块依赖于
utils/hammer

如果我想在主干视图上有swipeleft和swiperight事件,我应该如何集成这些插件或模块?
bower install --save hammerjs
bower install --save backbone.hammer