Vue プロジェクトのパッケージ化と最適化の実装手順

Vue プロジェクトのパッケージ化と最適化の実装手順

Vueプロジェクトのパッケージ化、起動、最適化

プロジェクトが完了したら、プロジェクトをオンラインで開始します。パフォーマンスを向上させるために、多くの場合、いくつかの最適化処理を実行します。

Vueプロジェクトのパッケージ化

スキャフォールディング プロジェクトにはデフォルトのパッケージ化コマンドがあります。プロジェクトをパッケージ化するには、npm run bulid と入力できます。

ターミナルを開き、プロジェクトのルートディレクトリに切り替えます

コマンドを入力してください: npm run build

現在のプロジェクトのルートディレクトリにdistフォルダが生成され、パッケージ化されたファイルが含まれます。

ここに画像の説明を挿入

プロジェクトホスティング

パッケージ化されたプロジェクトをホストするシンプルなノードサーバーを作成し、サーバープロジェクトへのアクセスをシミュレートすることができます。

1. サーバーのルート ディレクトリとして新しいディレクトリを作成し、小さな黒いウィンドウで node init -y を実行して初期化を実行し、npm i express を実行して express パッケージをダウンロードし、app.js ファイルを作成して次のコードをコピーします (express パッケージを使用してサーバーを開きます)

2. パッケージ化したdistディレクトリをノードサーバーディレクトリにコピーします。

3. リソースはdistディレクトリにあるので、静的リソースホスティングを使用してリソースを提供し、distディレクトリをリソースホスティングディレクトリとして使用できます。

エクスプレスサーバーの作成

var express = require('express')
定数パス = require('path')

// 2. サーバーを作成する var app = express();

// 静的リソースのホスティング // すべての静的リソースを public などの指定されたディレクトリに配置し、次の構成を追加することもできます app.use(express.static('dist'))
app.use('/'、express.static(path.join(__dirname、'dist')))

// 3. サーバーを起動し、ポートをリッスンします app.listen(3001, () => {
  コンソールログ('http://127.0.0.1:3001')
})

サーバーを起動する

サーバーディレクトリでターミナルを開き、node app.jsと入力します。

ブラウザにサーバーアドレスを入力してください

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-woOTHmF2-1627475455630) (img\02-access server resources.jpg)]

プロジェクトの共通最適化

プロジェクトがパッケージ化された後、以前に使用されたデプロイメント依存パッケージとプロジェクトで使用された外部リソースがパッケージ化されます。

以前に多くのパッケージを導入したり、不必要なパッケージを導入したりすると、プロジェクトのサイズが大きくなり、ユーザーが正常にアクセスするためにさらに多くのデータを要求することになり、ユーザーエクスペリエンスに悪影響が出るため、パッケージ化プロセスを最適化する必要があります。

一般的に言えば、コードの最適化の観点からプロジェクトを最適化することも、CDN のような方法を使用してプロジェクトを最適化することもできます。

スキャフォールディングは、プロジェクトリソースの分布(占有率)を確認できるコマンドを提供します: npm run build – --report

プロジェクトレポートファイルを生成する

npm 実行ビルド – --report 

ここに画像の説明を挿入

レポートページを開く

ここに画像の説明を挿入

1. レポート ページでは、ブロックが大きいほど、テンプレートが占めるボリュームが大きくなります。
2. モジュールが大きな容積を占める場合は、製品にパッケージしないことを検討する必要がある。

CDNアクセラレーションの最適化

cdn: CDN の本質は、メディア リソース、動的および静的画像 (Flash)、HTML、CSS、JS などのコンテンツをより近くの IDC にキャッシュし、ユーザーがリソースを共有して、サイト間の応答時間を短縮するなどのニーズを満たすことです。オンライン ゲーム アクセラレータの本質は、高帯域幅のコンピューター ルームを確立し、マルチノード サーバーを設定することで、ユーザーのために加速することです。

大容量モジュールを使用し、CDN を利用して対応するリソースを提供すると、自社のサーバーにかかる負荷が軽減され、より高速で優れたリソース応答が実現します。

設定ファイル

スキャフォールディングプロジェクトで、独自のプロジェクト構成を追加する場合は、ルートディレクトリにvue.config.jsファイルを追加し、このファイルにカスタム構成を実装できます。

パッケージング時には、この構成は足場構成と組み合わされます

パッケージ除外を追加する

モジュール.エクスポート = {
    Webpack を構成する: {
        外部:{
            'vue': 'vue',
            '要素-ui': '要素',
            '羽根ペン': '羽根ペン'
        }
    },
}

ここに画像の説明を挿入

ご覧のとおり、パッケージ化されたプロジェクトのサイズは大幅に縮小されましたが、問題は解決されていません。これらのパッケージがないと、パッケージ化されたプロジェクトを実行できません。

ここに画像の説明を挿入

これは、パッケージ化されたプロジェクトに Vue パッケージがないため、エラーが発生するためです。これらのリソースを提供するには、CDN を使用する必要があります。

CDNのユーザーカスタマイズを追加

vue.config.jsに次のコードを追加します。

cdn = {とする
  css: [
    //要素UI CSS
    'https://unpkg.com/element-ui/lib/theme-chalk/index.css', // スタイルシート // リッチテキストボックスプラグインスタイル 'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.bubble.css'
  ]、
  js: [
    // 最初に vue が必要です。
    'https://unpkg.com/vue/dist/vue.js', // vuejs
    // 要素 UI js
    'https://unpkg.com/element-ui/lib/index.js', // 要素UI
    // リッチ テキスト ボックス プラグイン 'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.js'
  ]
}

プラグインを通じてページにリソースを自動的に追加する

プラグインにリソースをマウントする

モジュール.エクスポート = {
  // 次の構成のパッケージが将来プロジェクトにパッケージ化されないことを示すためにパッケージ化除外を追加します。configureWebpack: {
    外部:{
            'vue': 'vue',
            '要素-ui': '要素',
            '羽根ペン': '羽根ペン'
        }
  },
  //CDNリソースをプラグインチェーンにマウントするWebpack (config) {
    config.plugin('html').tap(args => {
      args[0].cdn = cdn
      引数を返す
    })
  }
}

プラグインを使用して、指定された CDN リソースをページに追加し、プロジェクトのパブリック インデックス (プロジェクトがパッケージ化される前のインデックス ファイル) に次のコードを追加します。

CSSインポートを追加する(ヘッド構造内)

<% for(var css of htmlWebpackPlugin.options.cdn.css) { %>
  <link rel="スタイルシート" href="<%=css%>" />
<% } %>

js インポートを追加する (body 構造内)

<% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
  <script src="<%=js%>"></script>
<% } %>

再梱包、OK

実稼働段階でのみ CDN を使用するように設定する

プロジェクトを開発する際には、実際にはCDNを使用する必要はありません。CDNを使用すると、ページの読み込み効率が低下し、ローカル開発には適していません(ネットワーク接続が必要です)。

環境変数に応じて対応する処理を実行し、製品が使用されている場合にのみ、プラグインが対応するリソース ファイルを HTML ページに自動的に挿入するようにすることができます。

const isProd = process.env.NODE_ENV === 'production' // 本番環境ですか? let externals = {
  'vue': 'vue',
  '要素-ui': '要素',
  '羽根ペン': '羽根ペン'
}


cdn = {とする
  css: [
    //要素UI CSS
    'https://unpkg.com/element-ui/lib/theme-chalk/index.css', // スタイルシート // リッチテキストボックスプラグインスタイル 'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.bubble.css'
  ]、
  js: [
    // 最初に vue が必要です。
    'https://unpkg.com/vue/dist/vue.js', // vuejs
    // 要素 UI js
    'https://unpkg.com/element-ui/lib/index.js', // 要素UI
    // リッチ テキスト ボックス プラグイン 'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.js'
  ]
}

cdn = isProd ? cdn : { css: [], js: [] }
外部 = isProd ? 外部: {}


モジュール.エクスポート = {
  // 次の構成のパッケージが将来プロジェクトにパッケージ化されないことを示すためにパッケージ化除外を追加します。configureWebpack: {
    外部
  },
  // 
  チェーンWebpack(設定){
    config.plugin('html').tap(args => {
      args[0].cdn = cdn
      引数を返す
    })
  }
}

これで、vue プロジェクトのパッケージ化と最適化の実装手順に関するこの記事は終了です。vue プロジェクトのパッケージ化と最適化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueプロジェクトのフロントエンドを最適化およびパッケージ化するための必須のボーナスアイテム
  • Vue プロジェクトのパッケージ化、マージ、圧縮により、Web ページの応答速度を最適化します。
  • Vue プロジェクトのパッケージ化とコンパイルの最適化ソリューション
  • Vueで実装された複数ページのプロジェクトのパッケージを最適化する方法の詳細な説明
  • Vue プロジェクトの概要: webpack 従来のパッケージ最適化ソリューション
  • Vueプロジェクトの最適化とパッケージ化の詳細な説明

<<:  Deepin で virtualenv をインストールして使用するチュートリアル

>>:  Mysqlのインポートとエクスポート時に発生する問題の解決

推薦する

ボタンを使用してフォームを送信する代わりに、画像を使用してフォームを送信します。

コードをコピーコードは次のとおりです。 <フォームメソッド="post" ...

Vueフィルターとカスタム命令の使用

目次フィルター01.とは02. やり方(1)フィルターを定義する(2)使用方法(3)フィルタパラメー...

MySQLにおけるテーブルインデックスの定義方法と導入

概要インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される...

少なくとも7日間連続して注文を行ったユーザーに対するSQLクエリ

テーブルを作成するテーブル order(id varchar(10),date datetime,o...

MySQLデータベース移行により、大量のデータを迅速にエクスポートおよびインポートできます

データベースの移行は、よく遭遇する問題です。データ量が少ない場合、移行は基本的に問題になりません。実...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

HTML でよく使われるメタ百科事典 (推奨)

メタタグは、HTML言語のヘッド領域にある補助タグです。HTML文書のヘッダーにあるヘッドタグとタイ...

円形グラデーションプログレスバー効果を実現する CSS サンプルコード

実装のアイデア一番外側は大きな円(グラデーションカラー)グラデーションの円を覆うように、内側に半円を...

HTML 要素に注釈を付けるときにクラスと ID のどちらが優れているかを分析する

Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...

ブラウザが登録できるイベントの概要

HTML イベント リスト一般イベント: onClick HTML: マウスクリックイベント。主にオ...

Vue2.0は適応解像度を実装する

この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...

Tencent Cloudでhive3.1.2を構築する方法を教えます

環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...

CSSはBEM命名規則の実践を使用する

クラスを見るとき、どのような情報を得たいですか?このクラスはどこで使用され、その機能は何ですか?この...

JavaScriptのスリープ関数の使用

目次1.スリープ機能2.タイムアウトを設定する3. 約束4. 非同期待機5. 1秒後に出力1、2秒後...

Vue 3 カスタムディレクティブ開発の概要

指令とは何ですか? Angular と Vue はどちらもディレクティブの概念を持っており、これは通...