1

次の質問を読んだ後、コンパイルしたブートストラップ JS プラグイン ファイルを次のように AMD モジュールにラップしました。

define(['zepto'], function($){ ...Bootstrap pasted here... });

次に、これは私のmain.jsファイルが構成用にどのように見えるかです:

require.config({
    baseUrl: 'js',
    paths: {
        'zepto': 'lib/zepto',
        'underscore': 'lib/underscore',
        'backbone': 'lib/backbone',
        'text': 'lib/text',
        'bootstrap': 'lib/bootstrap'
    },
    shim: {
        'zepto': {
            exports: '$'
        },
        'underscore': {
            exports: '_'
        },
        'backbone': {
            deps: ['zepto', 'underscore'],
            exports: 'Backbone'
        }
    }
});
require([
    'app',
    'zepto',
    'underscore',
    'backbone',
    'bootstrap'
    ],
    function(App){
        //start the app
        App.initialize();
});

しかし、コンソールでは、bootstrap.jsファイルに次のエラーが表示されます。

Uncaught TypeError: undefined is not a function 

モジュールに渡されているにもかかわらず、 $ が定義されていないようです。完全にラップされたブートストラップ モジュールは、こちらから入手できます。

Bootstrap と互換性があるはずの zepto を使用しており、シムから $ をエクスポートしているため、これが機能しない理由がわかりません。

4

4 に答える 4

1

私はちょうどこれと同じ問題を抱えていました。ブートストラップ用のシムを追加しましたが、今はうまくいっているようです。これは、他のシムに追加されます。

shim: {
    'bootstrap': {
        deps: ['zepto']
    },
},
于 2013-06-21T19:42:09.063 に答える
1

ブートストラップ JS ファイルに次のコード行を追加して、これを修正しました。

window.jQueryZeptoグローバルオブジェクトを含むようにこれを修正した関数に渡される場所も同様ですwindow.jQuery || window.Zepto

詳細はこちら:

ブートストラップ付き Zepto

于 2013-04-10T02:50:42.467 に答える
0

ブートストラップ JS ファイルを編集したくない場合は、この shim を検討する価値があるかもしれません。ブートストラップがロードされる前に jQuery オブジェクトを設定する必要があります。

  'zepto': {
    exports: '$',
    init: function() {
      window.jQuery = $;
    }
  }
于 2013-11-12T10:02:24.793 に答える