インタビュー-webpack記事のフロントエンド

テストサイト:

唯一の中流階級のために、おそらく以下のいくつかを整理

  • WebPACKのは何ですか
  • コアの概念
  • の一口、イサキの違い
  • 包装工程
  • 需要の負荷を達成する方法
  • あなたは通常、プロジェクトはWebPACKの書いたん

WebPACKのは何ですか

WebPACKのは、静的なプロセッサ・モジュールがアプリケーションを処理しているとき、それは再帰的に構築する、依存関係グラフを、すべてのこれらのモジュールは、1つまたは複数のパッケージにパッケージング、各モジュールは、所望のアプリケーションを含み、。

コアの概念

  • エントリー(エントリー)

あなたが開始する内部依存グラフとして使用したいモジュールのWebPACKを伝えます

  • 出力(出口)

それを構築する場所のWebPACKの出力バンドルを知らせると、ファイルに名前を付ける方法

  • ローダ

JSファイルを非処理、WebPACKを扱うことができるモジュールにファイルを変換し、

ローダは、2つの属性があります。

- test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。
- use 属性,表示进行转换时,应该使用哪个 loader。
复制代码
  • 、環境変数を再定義するすべての方法を最適化し、圧縮をパッケージからプラグイン。非常に強力なプラグインインターフェイスは、さまざまなタスクを処理するために使用することができます。
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');  //引入plugin

module.exports = {
  // JavaScript 执行入口文件
  entry: './main.js',
  output: {
    // 把所有依赖的模块合并输出到一个 bundle.js 文件
    filename: 'bundle.js',
    // 输出文件都放到 dist 目录下
    path: path.resolve(__dirname, './dist'),
  },
  module: {
    rules: [
      {
        // 用正则去匹配要用该 loader 转换的 CSS 文件
        test: /\.css$/,
        use: [
            {loader: MiniCssExtractPlugin.loader},
            'css-loader',
        ],
      }
    ]
  },
  plugins: [
      new MiniCssExtractPlugin({
          filename: `[name]_[contenthash:8].css`,
          chunkFilename: '[id].css',
      })
  ]
};
复制代码
  • モジュール:

すべてはWebPACKのモジュールであるモジュールは、モジュールは、ファイルに対応しています。WebPACKのは、再帰的にすべての依存モジュールを見つけるエントリから起動するように設定されます。

  • チャンク

コードブロック、チャンクをした複数のモジュールの組み合わせ、マージおよび分割するためのコード。

の一口、イサキの違い

作男

既製の数が多いプラグインには、一般的なタスクをカプセル化するだけでなく、依存タスクを自動化し、タスク間の依存関係を管理します

飲み込みます

これは、自動化フローをベースのビルドツールです。タスクの管理と実行に加えて、監視し、ファイルのファイルの読み取りと書き込みをサポートしています。ガルプができるほとんどすべてのシナリオを構築することができる唯一の以下の5つの方法で、非常にシンプルになるように設計されています。

  • タスクを登録することにより、gulp.task。
  • タスクはgulp.runによって実行されています。
  • gulp.watchモニタファイルの変更によって、
  • gulp.srcによってファイルを読みます。
  • gulp.dest書き込みファイルで。

挿入の間を通過することができます流れをプラグインする一般的な処理の流れのリストを提供しながら、ガルプ最も重要な特徴は、流れの概念の導入です。ガルプの利点は、両方がその建設を終え、一人で他のツールで使用することができ、使いやすい、まだ柔軟性があります。

うなり声と一息はタスクベースとストリーミング(タスク、ストリーム)のです。その運営、更新されたデータ・ストリームを行う同様のjQuery、検索(またはクラス)ファイル、チェーンのシリーズは、全体が複数のタスクは、ウェブ全体のビルド・プロセスを構成する連鎖するタスクを構成しています。欠点は、箱から出してやることができない、コンフィギュレーションの多くを書くために使用することができます前に、統合は、高くはないということです。

WebPACKのベースの入口。WebPACKの自動再帰的にファイルのエントリを読み込むために必要なすべてのリソースを解析され、ファイルは、その後のWebPACKは、機能を拡張するプラグインで、様々な異なるローダーで処理されます。

だから、要約します:

飲み込むそれを構築するとうなり声が複数のフロントエンドに建物の分割のプロセス全体を開発する必要がありますアイデアからTask、すべての合理的な制御はTask入り口を見つけるために、開発者を必要とし、異なるリソースのための明確な必要性がどのようなものをローダ行うために使用されるべき関係のWebPACKを呼び出します構文解析と処理

WebPACKのあなたが使用する共通のローダとプラグインを、どのようなものです

  • ファイル・ローダー:コード内の相対URLを参照することにより、フォルダに出力ファイル、ファイル出力

  • ソースマップローダ:追加書類のソースマップのロードブレークポイントデバッグを容易にするために、

  • 画像ローダ:ロードされ、圧縮された画像ファイル

  • バベル - ローダー:ES6はES5に変換

  • CSS-ローダー:負荷CSS、サポートモジュラー、圧縮、ファイルのインポートおよびその他の特性

  • eslint-ローダー:ESLintをチェックしてJavaScriptコード

  • 定義-プラグインを:環境変数を定義

  • コモンズ・チャンク・プラグイン:共通のコードを抽出します

  • uglifyjs-のWebPACK - プラグイン:UglifyESによってES6の圧縮コード

包装工程

1. 初期化:スタート建設、読書と組み合わせパラメータ、ロードプラグイン、インスタンス化コンパイラ

2. コンパイル:問題のエントリ、ファイルの内容を翻訳して、モジュールの依存モジュール、再帰的にコンパイルプロセスを見つけるために、それぞれ対応するシリアルモジュールローダを求めます。

3、出力:ファイルシステムへのファイル出力を変換するためのチャンクにコンパイル組み合わせのためのモジュール、チャンク。

segmentfault.com/a/119000001...

ます。https://juejin.im/post/5cfa17a46fb9a07ef1617429で再現

おすすめ

転載: blog.csdn.net/weixin_34329187/article/details/91454750