[解決済み] Webpack ProvidePluginとexternalsの違い?
質問
私は ウェブパック と Backbone.js .
クイックスタートガイドに従ったので、Webpackの動作は大体わかっていますが、jquery / backbone / underscoreなどの依存ライブラリをどのように読み込むのかが不明です。
これらは外部で
<script>
で読み込むべきなのか、それとも RequireJS の shim のように Webpack が処理できるものなのでしょうか?
によると
webpack doc: モジュールのシム化
,
ProvidePlugin
と
externals
はこれに関連しているようです(これは
bundle!
ローダーもどこかにあります)しかし、いつどれを使うのかがわかりません。
ありがとうございます。
どのように解決するのですか?
両方可能です。ライブラリをインクルードするには
<script>
(でライブラリをインクルードする(つまり、CDN からライブラリを使用する)か、生成されたバンドルにインクルードします。
経由で読み込んだ場合
<script>
タグを使用すると
externals
オプションを使うことで
require(...)
と書くことができます。
CDNからのライブラリを使用した例。
<script src="https://code.jquery.com/jquery-git2.min.js"></script>
// the artifial module "jquery" exports the global var "jQuery"
externals: { jquery: "jQuery" }
// inside any module
var $ = require("jquery");
バンドルに含まれるライブラリでの例。
copy `jquery-git2.min.js` to your local filesystem
// make "jquery" resolve to your local copy of the library
// i. e. through the resolve.alias option
resolve: { alias: { jquery: "/path/to/jquery-git2.min.js" } }
// inside any module
var $ = require("jquery");
は
ProvidePlugin
はモジュールを(フリー)変数にマップすることができます。ですから、次のように定義することができます: "私が (自由な) 変数を使うたびに
xyz
を使用するたびに、あなた (webpack) はモジュール内に
xyz
を
require("abc")
."
のない例
ProvidePlugin
:
// You need to require underscore before you can use it
var _ = require("underscore");
_.size(...);
の例
ProvidePlugin
:
plugins: [
new webpack.ProvidePlugin({
"_": "underscore"
})
]
// If you use "_", underscore is automatically required
_.size(...)
要約です。
-
CDNからのライブラリ:使用
<script>
タグとexternals
オプション -
ファイルシステムからライブラリを取得します。ライブラリをバンドルに含めます。
(たぶん
resolve
オプションを修正して、ライブラリを見つけることができます) -
externals
: グローバルバーをモジュールとして利用できるようにする -
ProvidePlugin
: モジュールをモジュール内の自由変数として利用できるようにする
関連
-
[解決済み] 初期化後のBackbone Collectionのソート
-
[解決済み] webpackでjQueryプラグインの依存関係を管理する
-
[解決済み] Webpackで静的ファイルをビルドディレクトリにコピーする方法は?
-
[解決済み] webpackで環境依存の変数を渡す
-
[解決済み] backbone.jsをベースにした数多くのフレームワークの実際の強みと弱みは何でしょうか?[クローズド]
-
[解決済み] backbone.js & underscore.js CDN推奨?
-
[解決済み] Backbone.js:現在のルートを取得する
-
[解決済み] Backbone.js:Backboneコレクションでモデルのインデックスを取得するには?
-
[解決済み] model.save()で成功コールバックをトリガーするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン