Vueプロジェクトが完了した後にプロジェクトを最適化する方法の例

Vueプロジェクトが完了した後にプロジェクトを最適化する方法の例

1. 開発モードとリリースモードに異なるパッケージエントリポイントを指定する

vue ui によって作成されたプロジェクトは、webpack 構成を非表示にします。src ルート ディレクトリに vue.config.js 構成ファイルを作成できます。構成ファイル内の構成オブジェクトをエクスポートします。

ここに画像の説明を挿入

ここに画像の説明を挿入

2. デフォルトでは、Vue プロジェクトの開発モードとリリース モードは、パッケージ化されたエントリ ファイル (src/main.js) を共有します。 configureWebpackまたはchainWebpackを使用して、webpackパッケージ構成を定義できます。

ここに画像の説明を挿入

main.js ファイルを main-dev.js に変更します。 main.jsをコピーしてmain-prod.jsに変更します。

2. 外部CDNリソースを外部から読み込む

デフォルトでは、インポート構文を通じてインポートされたサードパーティの依存関係パッケージは、最終的に同じファイルにパッケージ化されてマージされるため、パッケージ化が成功した後に 1 つのファイルが大きすぎるという問題が発生します (インポートした CSS スタイルシートも同じファイルにパッケージ化されるため、ファイルが大きすぎます)。

ここに画像の説明を挿入

上記の問題を解決するには、webpack の externals ノードを通じて外部 CDN リソースを設定およびロードすることができます。外部で宣言されたサードパーティの依存パッケージはパッケージ化されず、最終ファイルにマージされません。

①webpackのexternalsノードを設定し、リリースステージで設定する

ここに画像の説明を挿入

外部で宣言されたサードパーティの依存パッケージはパッケージ化されません。プロジェクトは、依存パッケージを使用するときに、ウィンドウ グローバルで対応するオブジェクトを検索します。したがって、CDNからのjsとcssのリソースをindex.htmlファイルに導入して、グローバルに見つけられるようにする必要があります。

public/index.html ファイルのヘッダーに次の CDN リソース参照を追加する必要があります。

具体的な操作手順:
① main-prod.js で、nprogress と quill が参照する css ファイルをコメントアウトする ② index.html の head 領域で、nprogress と quill の js と css スタイルを CDN 経由で読み込む ③ index.html の head 領域で、残りの依存 js を CDN 経由で読み込む

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

対応するオープンソースライブラリはstaticfile CDNから見つけることができます。

ここに画像の説明を挿入

CDN を使用する前のファイル サイズ:

ここに画像の説明を挿入

CDN 使用後のファイル サイズ:

ここに画像の説明を挿入

3. CDNを通じてElementUIパッケージを最適化する

開発段階では、パッケージ サイズを可能な限り削減するために element-ui コンポーネントのオンデマンド読み込みを有効にしましたが、オンデマンドで読み込まれるコンポーネントは依然として大きなファイル サイズを占めています。この時点で、CDN を介して element-ui のコンポーネントを読み込むこともできるため、パッケージ化されたファイルのサイズをさらに削減できます。

具体的な操作手順は以下のとおりです。
① main-prod.js で、element-ui がオンデマンドで読み込まれるようにコードをコメントアウトする ② index.html の head 領域で、CDN 経由で element-ui の js と css スタイルを読み込む

ここに画像の説明を挿入

ここに画像の説明を挿入

完成ファイルサイズ:

ここに画像の説明を挿入

4. ホームページコンテンツのカスタマイズ

①ホームページの内容はパッケージ環境によって異なる場合があります。プラグインを通じてカスタマイズできます。プラグインの構成は次のとおりです。

 // plugin('html') を通じて、HTML プラグインを検索します。 tap() を使用すると、このプラグインの固定構成項目を変更できます。// args を使用すると、現在のプラグインの関連するパラメータを取得できます。
  // args[0]にカスタム属性isprodを追加します。開発フェーズではtrueに割り当てられ、リリースフェーズではfalseに割り当てられます。

ここに画像の説明を挿入

② public/index.htmlホームページでは、isProdの値に基づいてページ構造をどのようにレンダリングするかを決定できます。

ここに画像の説明を挿入

ここに画像の説明を挿入

5. ルートの遅延読み込みを使用する

プロジェクトをパッケージ化してビルドすると、ルートに対応するすべてのコンポーネントが 1 つのファイルにパッケージ化されるため、ファイルが大きくなりすぎてページの読み込みに影響します。異なるルートに対応するコンポーネントを異なるコード ブロックに分割し、ルートにアクセスしたときに対応するコンポーネントをロードできれば、より効率的になります。

ここに画像の説明を挿入

これで、Vue プロジェクトが完了した後に最適化する方法に関するこの記事は終了です。Vue プロジェクトの最適化に関するその他のコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueプロジェクトの最適化とパッケージ化の詳細な説明
  • Vueプロジェクトのフロントエンドを最適化およびパッケージ化するための必須のボーナスアイテム
  • Vueプロジェクト最適化のための実践的な戦略
  • キープアライブデータキャッシュによるVueプロジェクトの最適化方法
  • Vue プロジェクトの最適化のためのページのオンデマンド読み込みに関する簡単な説明 (vue+webpack)
  • Vue プロジェクトの最適化、オンデマンド コンポーネントの読み込みの詳細説明 - webpack require.ensure の使用

<<:  MySQL データベース面接に必須の 3 つのログの紹介

>>:  HTML で 2 列レイアウトを実装する方法の例 (左側は固定幅、右側は適応幅)

推薦する

MySQLとOracleの違いを簡単に説明してください

1. Oracle は大規模データベースですが、MySQL は小規模から中規模のデータベースです。O...

Ubuntu 18.04 向け VMware Tools のインストールと構成のチュートリアル

この記事では、Ubuntu 18.04でのVMware Toolsのインストールと設定について記録し...

Linux にソフトウェアをインストールするときにソフトウェア パッケージが存在しない問題を解決する方法

ソフトウェア パッケージが存在しない場合は、インストールされているソフトウェアのソフトウェア ソース...

MySQL で遅い SQL 文を見つける方法

MySQL で遅い SQL ステートメントを見つけるにはどうすればよいでしょうか?これは、多くの人を...

vue-resource インターセプターの使用に関する詳細な説明

序文インターセプター最近のフロントエンド フレームワークでは、インターセプターは基本的に非常に基本的...

Linux インストール Redis 実装プロセスとエラー解決

今日、redis をインストールしたところ、今までになかったいくつかのエラーが発生しました。ここで記...

CSS スタイルの導入方法とその長所と短所の紹介

CSSを導入する3つの方法1. インラインスタイル利点: 書きやすく、重みがある 欠点: 構造とスタ...

DOSBox を起動後に自動的にコマンドを実行する方法

DOSBox を使用すると、Windows で DOS をシミュレートし、楽しい作業を行うことができ...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

Reactでコンポーネントを作成する方法

目次序文コンポーネントの紹介クラスコンポーネントの作成状態についてレンダリングについて関数コンポーネ...

MySQLのビューの詳細な説明

ビュー: MySQL のビューはテーブルと多くの類似点があります。ビューも複数のフィールドと複数のレ...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

MySQL シリーズ データベース設計 3 つのパラダイム チュートリアルの例

目次1. データベース設計の3つのパラダイムに関する知識の説明1. デザインパラダイムとは何ですか?...

MySQL 8.0.18 ハッシュ結合は左/右結合をサポートしていません 左と右の結合の問題

MySQL 8.0.18 では、インデックスが作成されていないフィールドに適用でき、等価値の関連付け...

nginx + php の「入力ファイルが指定されていません」の解決策

本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。...