4

すべてが良さそうに見えますが、RequireJS でウェイポイントを使用できません。ここに私のコードがあります: http://jsfiddle.net/7nGzj/

main.js

requirejs.config({
    "baseUrl": "theme/PereOlive/js/lib",
    "paths": {
      "app":"../app",
      "jquery": "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min"
    },
    "shim": {
        "waypoints.min": ["jquery"]
    }
});
requirejs(["app/common"]);

common.js

define([
    'jquery',
    "waypoints.min",
], function () {
    $(function () {
        console.log($.waypoints);
        $('#loading').waypoint(function (direction) {
            // do stuff
        });
    });
});

jQueryが適切にロードされていることを確認するためにそれをシムしましたが、機能しません。私の他のライブラリは、本来あるべきように機能します (responsiveslides、flexslider、hoverintent、smoothscroll など)。

  • jQuery V1.10.2
  • ウェイポイント V2.0.3
  • RequireJS V2.1.8
4

1 に答える 1

7

AMD に準拠している (およびウェイポイントが準拠している) 依存関係はrequire、登録済みのモジュール名を使用して指定する必要があります。その名前が何であるかを知る最も簡単な (唯一の?) 方法は、lib のソース コードを調べることです。

// (...)
if (typeof define === 'function' && define.amd) {
  return define('waypoints', ['jquery'], function($) {
    return factory($, root);
  });
} // (...)

waypoints」です!

ライブラリは AMD 互換であるため、シムは必要ありませんが、シムへのパスを定義する必要があります (ファイル名は AMD モジュール名とは異なる可能性があるため)。

requirejs.config({
    "baseUrl": "theme/PereOlive/js/lib",
    "paths": {
      "app": "../app",
      "waypoints": "path/to/waypoints.min"
    }
});

それを行った後、呼び出しを変更する必要がありますrequire

define([
    "jquery",
    "waypoints" // this is the AMD module name
]

jsfiddle を修正しました: http://jsfiddle.net/jVdSk/2/

于 2013-10-11T15:40:45.973 に答える