ES6

4
にブートストラップのjQueryのプラグインを呼び出す方法を

私はポップオーバー、ツールチップ、モーダルのように、ブートストラップのjQueryのプラグインを呼び出そうとこだわっている、...ES6

私はWebPACKのを使用していますし、これは私のES6のjavascriptのです:

import $ from 'jquery'; 
//import Bootstrap from 'bootstrap-sass'; 
//import Bootstrap from 'bootstrap-loader'; 
import Bootstrap from '../vendor/bootstrap.min.js'; 

class Test { 
    constructor() { 
     $('[data-toggle="tooltip"]').tooltip({ html: true }); 
    } 
} 

私はnpmでブートストラップをインストールしようとしましたが、その後、どのノードモジュールをインポートしたかわかりませんでした(インポートのコメント行に表示されるように)。だから、私は直接bootstrap.min.jsをインポートすると思った。

事実は、私はまだ私のjavascriptはWebPACKのから生成された私のapp.jsで、このように(私はポップオーバー/モーダル/ツールチップで試す独立している場合)、エラーを持っているということです。

Uncaught TypeError: (0 , _jquery2.default)(...).tooltip is not a function 

私が言うように、私はここにこだわっている。

最後の事、ブートストラップCSSが正しくこれのおかげで動作します:ブートストラップライブラリは、あなたのWebPACKの「プラグイン」のアレイに次のプラグインを追加してみてください 、jQueryのに依存しているため

gulp.task('bootstrap-fonts', function() { 
    return gulp.src('node_modules/bootstrap-sass/assets/fonts/bootstrap/*') 
    .pipe(gulp.dest('./app/assets/fonts/bootstrap')); 
}); 

gulp.task('dev', ['css', 'bootstrap-fonts', 'browser-sync', 'webpack'], function() { 
    gulp.watch('src/scss/**/*.scss', ['css']); 
    gulp.watch('src/js/**/*.js', ['webpack']); 
    gulp.watch('app/*.html', ['bs-reload']); 
}); 

答えて

2

を。 config.jsのブートストラップモジュールは、jQueryのグローバルオブジェクトを使用するように:

new webpack.ProvidePlugin({ 
    $: "jquery", 
    jQuery: "jquery", 
    "window.jQuery": 'jquery' 
}), 

オブジェクトのjQueryを使用して、実際に彼(の手段を求めて他のモジュールの「jqueryの」モジュールを挿入します。このプラグインは、すべてのモジュールまたは$またはwindow.jクエリ)、ブートストラップのいずれかです。

+1

「jquery」から「import $」が不十分ですか? – luke88

+1

いいえ、このファイル(この現在のモジュール)内に 'jquery'をインポートしただけなので、このファイルだけが現在「jquery」を「知っています」。ブートストラップ自身がグローバルなjQueryオブジェクトを使用しています。これは、jQueryオブジェクトについてブートストラップに知らせるためのWebpackの方法です。 – Jumpa

+0

@Jumpaは他のライブラリと同じですか? 'library.js'を必要とする2つのコンポーネントがあるとしましょう。それをグローバルスコープに入れることは、それを2回(各コンポーネントに1回)インポートするよりも良い習慣だと思いますか? – JohnnyQ