3

RequireJS を使用して、jQuery 検証スクリプト ファイルへの参照を追加しようとしています。通常の 1 つではなく、3 つのスクリプト ファイルがあります。

  1. jquery.validate - jquery 検証ライブラリ
  2. jquery.validate.unobtrusive - これにより、jquery 検証ライブラリに目立たない検証が追加されます (データ属性を使用して自動的に関連付けることができます)。これは jquery.validate に依存します
  3. jquery.validate.custom - これは、独自の控えめな検証メソッドを追加し、jquery.validate.unobtrusive に依存します

次の構成をセットアップしました。

require.config({
    paths: {
        'jquery': 'Scripts/jquery-1.8.3.min',
        'jquery.validate': 'Scripts/jquery.validate.custom'
    },
    shim: {
        'Scripts/jquery.validate': ['jquery'],
        'Scripts/jquery.validate.unobtrusive': ['jquery', 'Scripts/jquery.validate'],
        'Scripts/jquery.validate.custom': ['jquery', 'Scripts/jquery.validate.unobtrusive']
    }
});

今、私は次のモジュールを持っています:

define(['jquery', 'jquery.validate'], function($) {
    alert('Yey!');
});

ただし、jquery.validate.custom ファイルにエラーがスローされ、目立たない依存関係が注入されていないことがわかります。ブラウザ ツールでデバッグを行い、ネットワーク タブを見ると、jquery.validate.custom.js ファイルと jquery.validate.js ファイルが正常にダウンロードされていることがわかりますが、jquery.validate.unobtrusive をダウンロードしようとさえしていません。 js ファイル。

誰かが私が間違っていることを教えてくれれば幸いです。ありがとう

編集:

私は今試しました:

require.config({
    paths: {
        'jquery': 'Scripts/jquery-1.8.3.min',
        'jquery.validate': 'Scripts/jquery.validate.custom'
    },
    shim: {
        'Scripts/jquery.validate': ['jquery'],
        'Scripts/jquery.validate.unobtrusive': ['jquery', 'Scripts/jquery.validate'],
        'jquery.validate': ['jquery', 'Scripts/jquery.validate.unobtrusive']
    }
});

そして、それは正しく動作します。見栄えが良いと思うので、次のことも試しました。

require.config({
    paths: {
        'jquery': 'Scripts/jquery-1.8.3.min',
        'jquery.validate': 'Scripts/jquery.validate.custom',
        'jquery.validate.core': 'Scripts/jquery.validate',
        'jquery.validate.unobtrusive': 'Scripts/jquery.validate.unobtrusive'
    },
    shim: {
        'jquery.validate.core': ['jquery'],
        'jquery.validate.unobtrusive': ['jquery', 'jquery.validate.core'],
        'jquery.validate': ['jquery', 'jquery.validate.unobtrusive']
    }
});

しかし、これによりタイムアウトエラーが発生します。

2番目のソリューションが機能しない理由を誰かが説明できれば、それは素晴らしいことです。ありがとう

4

2 に答える 2

1

構成内のキーを 1 つだけ修正する必要があります。この行を変更します。

'Scripts/jquery.validate.custom': ['jquery', 'Scripts/jquery.validate.unobtrusive']

次の場合:

'jquery.validate': ['jquery', 'Scripts/jquery.validate.unobtrusive']

そして、すべてがうまくいくでしょう。これは、パスとして使用している場合、すべての依存関係を正しく機能させるために構成jquery.validateで同じ名前を使用する必要があるためです。shim

于 2013-06-07T17:25:41.653 に答える