9

webpackのrequire.ensure最初のパラメータの最初のパラメータの使用は何ですか?

https://webpack.github.io/docs/code-splitting.html

require.ensure(dependencies, callback)

次のように、最初のパラメーターを入力または空にしようとしました。

require.ensure(['./module'], function() {  //filled first param

require.ensure([], function() {  //empty first param
  let module = require('./module');
  $ocLazyLoad.load([{
    name: module.default,
  }]);
});

どちらも機能しています。では、最初のパラメーターの用途は何ですか?

require.includeドキュメントには、この関数の使用例を理解していない関数もあります。誰かも説明できますか?

4

2 に答える 2

11

これらの関数はコード分割と関係があります。これにより、コードの一部のセクションをメイン コードとは別にバンドルし、後でコードの実行中にロードして実行することができます。

コード例 1:

require.ensure(['./module'], function() {  //filled first param

最初のパラメーターは、コールバックを実行する前に確実にロードされるモジュールの配列です。./moduleバンドルのいずれかにまだロードされていない場合、このモジュールが新しい HTTP リクエストに含まれているチャンクをロードし、コールバック関数を呼び出します。

Webpack の例を使用するには:

require.ensure(["module-a", "module-b"], function(require) {
    var a = require("module-a");
    // ...
});

module-a異なるファイルにmodule-b分割できるようになり、ロードされるまでコールバック関数は実行されません。

コード例 2:

require.ensure([], function() {  //empty first param
  let module = require('./module');
  $ocLazyLoad.load([{
    name: module.default,
  }]);
});

ここrequire.ensureで分割点を定義します。配列に依存関係がないため、それ自体はモジュールをロードしません。ただし、requireコールバック内のステートメントは引き続き webpack の魔法によって動的にロード./moduleされ、別のファイルにバンドルされます。

require.include

ドキュメントには require.include 関数もありますが、この関数の使用例がわかりません。誰かも説明できますか?

require.includeモジュールがバンドルされていない場合でも、モジュールがバンドルされていることを確認するために使用できますrequire。通常、モジュールがrequire-ed でない場合、まったくバンドルされません。requirこれを使用して、バンドル自体に -ed でなくても、強制的にモジュールを含めることができます。

于 2016-04-06T02:11:26.200 に答える