ホームページ > 記事 > ウェブフロントエンド > Webpack の面接の質問 10 個、あなたは何個答えることができますか?
この記事では、Webpack に関する面接の質問 10 個を紹介します。不足がないか確認して埋めてください。これら 10 個の面接の質問のうち、何問正しく答えることができますか?全部正解できますか?
面接の質問は単なる導入に過ぎません。質問を手早く仕上げることは、ただ暗記するだけです
(面接官はあなたに質問しますが、あまり深く理解していない可能性があります) - Depth), 深く理解するにはまだ多くの努力が必要です
;
初期化パラメータ
: webpack 構成パラメータを解析し、シェルによって渡され、webpack.config.js ファイルで構成されたパラメータをマージして、最終的な構成結果を形成します。
コンパイルの開始
: 前のステップで取得したパラメーターを使用してコンパイラー オブジェクトを初期化し、構成されたすべてのプラグインを登録します。プラグインは Webpack ビルド ライフ サイクルのイベント ノードをリッスンします。それに応じて反応し、オブジェクトの run メソッドを実行してコンパイルを開始します;
エントリを決定します
: 構成されたエントリから、ファイルの解析を開始して AST を構築します構文ツリー、依存関係を見つけて再帰的に続行します;
コンパイル モジュール
: 再帰では、ファイル タイプとローダー構成に従って、構成されたすべてのローダーがファイルを変換するために呼び出されると、そのモジュールが依存するモジュールが見つかり、エントリに依存するすべてのファイルがこのステップで処理されるまでこのステップが再帰されます。
モジュールのコンパイルと出力を完了する
: 再帰が完了すると、各モジュールとそれらの間の依存関係を含む各ファイルの結果が取得され、エントリまたはサブコントラクト構成に基づいてコードが生成されます。ブロック チャンク;
#出力完了: すべてのチャンクをファイル システムに出力します。
を開き、Webpack コンパイルの監視を追加し、ブラウザーとの長い WebSocket 接続を追加し、ファイル変更時に Webpack をトリガーしてコンパイルしました。完了後、これは、sokcet メッセージを通じてブラウザに
を更新する準備をするように指示します。更新のコストを削減するために、 は Web ページを更新する必要はありません
が、 特定のモジュールを更新します
、webpack-dev-server はホット アップデートをサポートし、それを比較することができます生成されたファイルのハッシュ値 更新が必要なモジュールの場合、ブラウザはホット リプレースを実行します。
contenthash
ハッシュは、各 Webpack コンパイルで生成されるハッシュ値。このメソッドを使用するすべてのファイルは同じハッシュを持ちます。ビルドごとに、webpack が新しいハッシュを計算します。チャンクハッシュは、エントリ ファイルとそれに関連付けられたチャンクに基づいて形成されます。特定のファイルへの変更は、それに関連付けられたチャンクのハッシュ値にのみ影響しますが、ファイルのコンテンツに基づく他のファイルのコンテンツ ハッシュの作成には影響しません。ファイルのコンテンツが変更されると、コンテンツハッシュも変更されます<ul><li>webpack は、ハッシュを <code> 計算した後、チャンクを分割します。
これらのファイルは同じチャンクに属しているため、同じランダム値が生成される可能性があります。ファイルを独立したチャンクにメンションすることができます (エントリに入れるなど)
Use webpack-manifest-plugin と webpack-manifest-plugin を設定して、js リソースの違いを比較し、それらを置き換えるかどうかを決定するためのマニフェスト json ファイルを生成します。もちろん、キャッシュ スクリプトも記述する必要があります
##clean-wenpack-plugin
speed-measure-webpack-plugin
webpack-bundle-analyzer
function MyWebpackPlugin()( }; // prototype 上定义 apply 方法 MyWebpackPlugin.prototype.apply=function(){ // 指定一个事件函数挂载到webpack compiler.pluginCwebpacksEventHook"funcion (compiler)( console. log(“这是一个插件”); // 功能完成调用后webpack提供的回调函数 callback() })
: file-loader と似ていますが、ファイルのコンテンツをコードに挿入できます。
: ブレークポイントのデバッグを容易にするために追加のソース マップ ファイルをロードします
: 画像ファイルの読み込みと圧縮
: ES6 を ES5 に変換
: CSS の読み込み、モジュール化のサポートなどの機能圧縮およびファイルとしてインポート
: CSS コードを JavaScript に挿入し、DOM 操作を通じて CSS を読み込みます。
eslint-loader
: ESLint を介して JavaScript コードを確認する(cache-control)
:
import() メソッドを使用すると、動的にロードされたファイルを独立したチャンクに分割して、独自のチャンクハッシュを取得できます
: コンパイル プロセスとファイルの相互通信の変更は、他のファイルのハッシュの計算に影響を及ぼさないようにする必要があります。以前のバージョンの webpack によって生成される増分デジタル ID の不安定な問題については、 hashedModuleIdsPlugin を使用して生成できます。
: 冗長なコード、コメントを削除し、コードの記述を簡素化します。 Webpack の UglifyJsPlugin と ParallelUglifyPlugin を使用して JS ファイルを圧縮し、cssnano (css-loader?minimize) を使用して css を圧縮できます
: ビルド プロセス中に、css ファイル使用される静的リソース パスを CDN 上の対応するパスに変更します。 Webpack の出力パラメーターと各ローダーの publicPath パラメーターを使用して、リソース パスを変更できます。
: コード内に表示されないセグメントを削除します。これを実現するには、Webpack の開始時にパラメーター --optimize-minimize を追加します。
: ルーティングの次元またはコンポーネントに従ってコードをチャンクに分割し、ロードできるようにします同時に、ブラウザ キャッシュを最大限に活用することもできます
: SplitChunksPlugin プラグインを使用してパブリック モジュールを抽出します。パブリック コード
。これは、より多くのコードを除いて、パッケージ化ボリュームを最適化するために移動する方法であり、運用環境
ではデフォルトで有効になっています。
コードが実行されていない場合でも、;
#es6モジュールを使用します
仕様静的分析
のために導入されているため、
プログラム フローを静的に分析し、どのモジュールがモジュールと変数は使用または参照されず、対応するコードは削除されます
関連チュートリアルの推奨事項: 「
Webpack 入門ビデオ チュートリアル」
以上がWebpack の面接の質問 10 個、あなたは何個答えることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。