requirejs – 如何使用require.js的hammer.js插件

我正在尝试使用带有require.js的hammer.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:无法读取undefined hammer.showtouches.js的属性’plugins’:7

未捕获的TypeError:无法读取未定义的require.js的属性’plugins’:8

未捕获的TypeError:无法读取undefined hammer.fakemultitouch.js的属性’plugins’:7

未捕获的TypeError:无法读取未定义的require.js的属性’plugins’:8

我试图在没有运气的情况下将Hammer包含在shim配置中(由于jquery.hammer的最新版本与AMD兼容,因此没有必要).

最佳答案 您的问题似乎是您没有包含hammerjs jquery插件所需的hammerjs库.

要解决这个问题,你需要在你的requirejs路径中添加类似’hammer’的东西:’lib / hammerjs / dist / hammer.min’,

另外,这里有一些关于我如何使用hammerjs和requirejs的相关信息.

在我的情况下,我希望它与backbone和requirejs一起工作.我用凉亭安装了库.

bower install --save hammerjs
bower install --save backbone.hammer

然后,我继续添加RequireJS配置:

>我注意到jquery.hammer.js是AMD并且自动需要jquery.它也默默地依赖于Hammer.它修改jquery以支持Hammer.不需要垫片.
>我注意到hammerjs是AMD并自动导出Hammer.不需要垫片.
>我注意到backbone.hammer是AMD并且自动需要下划线,主干和锤子.它修改了Backbone来支持Hammer.不需要垫片.

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

require.config({
    'baseUrl':'',
    'paths':{
        'underscore':'js/lib/underscore-amd/underscore-min',
        'backbone':'js/lib/backbone-amd/backbone-min',
        'jquery':'js/lib/jquery/jquery.min',
        'hammer':'js/lib/hammerjs/dist/hammer.min',
        'jquery-hammer':'js/lib/hammerjs/dist/jquery.hammer.min',
        'backbone-hammer':'js/lib/backbone.hammer/backbone.hammer'
    },
    shim:{
        'underscore': { exports: '_' },
        'backbone': { deps: ['underscore', 'jquery'], exports: 'Backbone' }
    }
});
点赞