1

require js でブートストラップを使用しようとしています。これまでのところ、jquery、アンダースコア、およびブーストラップは正常にロードされていますが、1 つのライブラリがロードされないという問題があります: bootstrap-tagsinput. requirejs をデバッグして、このライブラリがロードされているかどうかを確認するにはどうすればよいですか?

これが私のcommon.jsです

    requirejs.config({
        shim: {
            'jquery': {
              exports: '$'
            },
            'underscore': {
                exports: '_'
            },
            'bootstrap': {
                deps: [ "jquery" ]
            },
            'bootstrap-tagsinput': {
                deps: [ "bootstrap" ]
            }
        },
        baseUrl: "/",
        paths: {
            'jquery': [
                '//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min',
                'jquery/jquery.min'
            ],
            'underscore': [
                '//underscorejs.org/underscore-min',
                'underscore/underscore-min'
            ],
            'bootstrap': [
                '//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min',
                'bootstrap/dist/js/bootstrap.min'
            ],
            'bootstrap-tagsinput': 'bootstrap-tagsinput/dist/bootstrap-tagsinput.min'
        }
    });
4

2 に答える 2

1

「bootstrap-tagsinput」は、使用されている場所で定義する必要があることがわかりました。たとえば、このライブラリを利用するページでは次のようになります。

define(['bootstrap-tagsinput'], function() {
    // js for the page here
});

また、常に利用可能なモジュール (例: ブートストラップや jquery) を自動ロードするために、同じことができます。

define(['bootstrap'], function() {
    // main.js contents
});
于 2016-05-30T07:58:09.687 に答える
1

Require.js はモジュール間の依存関係を処理するために考案されたものであるため、既に回答で述べたように、使用するモジュールでそれらの依存関係を指定することは明らかです。2 番目のパラメーターとして指定された関数は、指定さdefine()れた順序でそれらのモジュールへのハンドルを取得します。

$通常は jQuery ライブラリに使用されますが、他のものに使用するのは良い考えではありません。これ$は多くの混乱を招くからです。ただし、通常はモジュールにも jQuery が必要なので、define()呼び出しはおそらく次のようになります。

define['jquery', 'bootstrap-tagsinput'], function($) {
  ...
});

この場合$、bootstrap-tagsinput ではなく、jQuery にバインドされます。代わりに jQuery メカニズムを介して呼び出されるため、関数に 2 番目のパラメーターは必要ありません。

于 2016-05-30T16:46:27.663 に答える