1

browersify-shimjquery、bootstrap、およびカスタム js ファイルを 1 つの最終パッケージにバンドルするために使用しています。

私のカスタム js ファイルには、依存関係はありませんが、依存関係はjQueryありbootstrapません。

私は次のものを持っていますpackage.json

"browser" : {
    "jquery": "path/to/jquery",
    "bootstrap": "path/to/bootstrap"
},
"browserify": {
    "transform": [ "browserify-shim" ]
},
"browserify-shim": {
    "jquery": "$",
    "bootstrap": {"depends" : "jquery:jQuery"}
},

スクリプトファイルで、次のことを行う必要があります。

require('jquery');
require('bootstrap');

package.jsonで「 jquery 」にエイリアスを追加することと、実行することの間に違いはありますかvar window.$ = require('jquery');

いくつかの場所では、人々が上記の両方を行っているのを見てきましたが、1 つだけで十分ではないでしょうか?

次に、カスタム js ファイルが依存していない場合でも、とのrequire両方を明示的に指定する必要があるのはなぜですか。にすべてをバンドルするように指示する方法はありますか?とにかく、そこにすべての依存関係とエイリアスを伝えています。スクリプト ファイルで各モジュールを要求するための二重の努力はなぜですか。jQuerybootstrapbrowserify-shimpackage.json

4

1 に答える 1

1

最初の質問:

package.json の「jquery」にエイリアスを追加することと、var window.$ = require('jquery'); を実行することの間に違いはありますか?

人々がこれを行う理由は、jQueryが bundle.jsのに存在する必要がある場合です。たとえば$(document).ready()、index.html にハンドラーを直接含めることができます。その場合、windowオブジェクトで jQuery を使用できるようにする必要があります。の外部に jQuery コードがない場合、これは必要なく、必要に応じて でbundle.js使用できます。var $ = require('jquery');bundle.js

あなたの2番目の質問は、上記が当てはまる可能性があると私に思わせます。答えは、絶対に Bootstrap と jQuery を の外部でロードできるということですbundle.js

<script></script>ここでの良い解決策は、タグを介して通常の方法でバンドルの外に追加することです。次に、バンドルでそれらが必要な場合は、それらをグローバルとして要求して、それらを参照した場合にbundle.js2 回ロードされないようにすることができます。

于 2016-02-02T13:15:33.000 に答える