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 結合クエリの原則の知識ポイント

MySQL 結合クエリ1. 基本概念2 つのテーブルの各行をペアで水平に接続して、すべての行の結果を...

JavaScript Sandboxについての簡単な説明

序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...

React のクラスからフックへの移行

目次リアクトフック序文なぜフックなのか?クラス関数クラスとフックの比較フックはコンポーネントの状態を...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

MySQL データテーブルのパーティション戦略と利点と欠点の分析

目次なぜパーティションが必要なのでしょうか?パーティショニング戦略パーティションの危険性なぜパーティ...

Vue の双方向イベントバインディング v-model の原理についての簡単な説明

目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...

MySQL Index Pushdown (ICP) とは何かを理解するための記事

目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

mysql5.7.22 ダウンロードプロセス図

1. 公式ウェブサイト www.mysql.com にアクセスし、ダウンロードを選択します。 2. ...

Git サーバーを使用してデバッグ ブランチを表示し、修正する方法を 1 日 1 分で学習します。

デバッグブランチプロジェクトの通常の開発中に、以前にリリースされたバージョンにバグがある場合がありま...

Vue パッケージアップロードサーバー更新 404 問題に対する 2 つの解決策

1: nginxサーバーソリューション、.conf構成ファイルを変更する解決策は2つある1: 位置 ...

フロア効果を実現するためのJavaScript

この記事では、フロア効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...

インタビュアーはCSSで固定アスペクト比を実現する方法を尋ねました

この質問に関連するニーズはまだないかもしれませんし、面接でこの質問をされたことがないかもしれませんが...

N キロメートル以内のデータを検索する MySQL の簡単な例

地球の円周率と半径、検索ポイントの経度と緯度から、検索ポイントと検索データテーブル間の距離はNキロメ...