ここで、CommonsChunkPlugin によるパブリック モジュールの抽出について簡単に説明します。これは非常に参考になるので、皆さんのお役に立てれば幸いです。
はじめに
Webpack プラグイン CommonsChunkPlugin の主な機能は、Webpack プロジェクトのエントリ チャンクの共通部分を抽出することです。あまり詳しくない場合は、具体的な使用方法はあまり紹介しません。 webpack 公式 Web サイト の概要を参照してください。
プラグインは、webpack プロジェクトで一般的に使用される最適化機能であり、ほぼすべての webpack プロジェクトで使用されます。このプラグインを使用する利点:
Webpack のパッケージ化速度とプロジェクト サイズの向上: Webpack エントリのチャンク ファイル内のすべての共通コードを抽出してコード サイズを削減し、同時に Webpack のパッケージ化速度を向上させます。
キャッシュ メカニズムを利用する: 依存するパブリック モジュール ファイルは通常、めったに変更されないか、変更されないため、独立したモジュール ファイルを長期間キャッシュできます。
しかし、プロジェクトでは、プラグインを開く方法が間違っていると、上記の 2 番目の点を達成することは実際には不可能です。この場合:
変更されていないパブリック コードまたはライブラリ コードによってパッケージ化されたエントリ チャンク他のビジネス コードが変更されると変更され、ページ上の長いキャッシュ メカニズムが失敗します。
それでは、CommonsChunkPlugin を正しく開きましょう。
CommonsChunkPlugin の間違った使用法
ビジネスコードから、react、react-dom、react-router などのプロジェクトのパブリック ライブラリを分離し、ベンダー チャンクとして抽出すると、webpack の設定は次のようになります。
const webpack = require("webpack"); const path = require('path'); module.exports = { entry: { app: "./app.js", vendor: ["react","react-dom", "redux", "react-redux", "react-router-redux"] }, output: { path: path.resolve(__dirname, 'output'), filename: "[name].[chunkhash].js" }, plugins: [ new webpack.optimize.CommonsChunkPlugin({names: ["vendor"]}) ] };
上記の内容は、プロジェクトのいくつかの基本ライブラリは、vendor という名前のチャンクにパッケージ化され、ビジネス関連のコードは、app という名前のチャンクにパッケージ化されます。
Webpack のパッケージ化とコンパイルの結果は次のとおりです。
その中のビジネスを分析しました コード app.js が変更された後の再コンパイル結果は次のとおりです:
CommonsChunkPlugin の設定では、ビジネス コード アプリが変更されると、ライブラリ コードも変更され、ベンダーのチャンクハッシュも変更されるため、ベンダー参照の名前もそれに応じて変更され、ブラウザ側のロング キャッシュ メカニズムが失敗します。
問題の原因webpackがパッケージ化されコンパイルされるたびにベンダーが変わる理由:
webpackはビルドされるたびにランタイムコードを生成します。ファイルが 1 つだけの場合、ランタイム コードはこのファイルに直接挿入されます。複数のファイルがある場合、ランタイム コードは共通ファイルに抽出されます。これは、上記の CommonsChunkPlugin によって構成されたベンダー チャンクです。
グローバル webpackJsonp メソッドの定義やモジュールの依存関係のメンテナンスを含む、webpack がコンパイルされるたびに生成されるランタイム コード 詳細については、こちらの commons.js を参照してください。
つまり、上記の webpack の CommonsChunkPlugin 設定では、これらのコードはコンパイルされるたびにベンダーにパッケージ化され、ベンダーのチャンクハッシュが毎回変更されることになります。
その後、ベンダー チャンクを構成し、共通コード、つまり Webpack ランタイム コードを抽出します。これにより、プロジェクトが依存する基本ライブラリ モジュールをビジネス モジュールから分離できます。これらのファイルは変更されないためです。 . なので、これらのファイルはロングキャッシュの機能を実現できます。具体的な構成は次のとおりです。
module.exports = { entry: { app: "./app.js", vendor: ["react","react-dom", "redux", "react-redux", "react-router-redux"] }, .... plugins: [ new webpack.optimize.CommonsChunkPlugin({names: ["vendor"]}), new webpack.optimize.CommonsChunkPlugin({ name: 'manifest', chunks: ['vendor'] }) ] };
このように、ビジネス アプリのコードが変更されても、プロジェクトが依存する基本ライブラリ ベンダー チャンクは毎回変更されず、抽出されたマニフェスト チャンクのみが変更されます。サイズが非常に小さいため、ベンダーに比べてメリットが大きいと言われています。以下に示すように:
アプリのコードを変更した後のパッケージ化とコンパイルの結果は次のとおりです。ベンダーのチャンクハッシュが変更されていないことがわかります
webpack の出力項目を設定します。ファイル名と chunkFilename には chunkhash を使用する必要があります。ハッシュを使用しないでください。使用しないと、上記の構成に従っても、期待される結果が得られません。ハッシュとチャンクハッシュの違いについては、github の回答を参照してください
上記は、皆さんのためにまとめたものです。将来的には皆さんのお役に立てれば幸いです。
関連記事:
Vue2.0の親コンポーネントと子コンポーネント間のディスパッチ機構の実装について(詳細なチュートリアル) jQuery+SpringMVC_jqueryでのチェックボックスの選択と値の受け渡しの例SpringMVC Getへの投稿方法複数選択ボックスの値 (コード例)Vue を使用して複数のクラスを設定する方法以上がCommonsChunkPlugin を使用してパブリック モジュールを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
