Vue SPA ファースト スクリーン最適化ソリューション

Vue SPA ファースト スクリーン最適化ソリューション

序文

通常の vue プロジェクトをパッケージ化してアクセスすると、div のみを含む html が返され、その他のコンテンツ ブロックは js によって動的に生成されます。

大きな問題が 2 つあります。

  • SEOには良くない
  • 最初の画面の読み込みが遅く、ユーザーエクスペリエンスが良くない

この記事は、私がプロジェクト経験に基づいてまとめた解決策です。不備があれば指摘してください〜

最適化

ソ連

SSR (サーバーサイドレンダリング) はサーバーサイドレンダリングであり、Vue コンポーネントをサーバー側で組み立てられた HTML 文字列にレンダリングし、それを直接ブラウザに送信します。最後に、これらの静的タグをクライアント上で完全にインタラクティブなアプリケーションにミックスする必要があります。
ssr を使用してビルド プロジェクトを再デプロイした後:

返されたコンテンツには、最初の画面コンテンツの HTML コード ブロックがすでに含まれていることがわかります。完璧です!~.~

スピーディーポータル: vue-cli4.0+Typescript+SSR をベースにした小さなデモ

オンデマンドインポート

オンデマンドインポートにはes6モジュールを使用する

1. ルーティングファイルでコンポーネントをオンデマンドでインポートする

# ルータ.index.ts
関数createRouter()をエクスポートする{
 新しいルーターを返す({
 モード: '履歴'、
 ルート: [
  {
  パス: '/'、
  名前: 'ホーム'、
  コンポーネント: () => import(/* webpackChunkName: "Home" */ './views/Home.vue'),
  },
  {
  パス: '/about',
  名前: 'About'、
  コンポーネント: () => import(/* webpackChunkName: "about" */ './views/About.vue'),
  },
 ]、
 });
}

2. 静的ライブラリは、すべてのモジュールをインポートするのではなく、必要に応じてインポートします。

たとえば、element-ui ライブラリでは、ボタン コンポーネントのみを使用します。

輸入 {
 ボタン
} 'element-ui' から;

リクエストの最適化

1. CSSとJSの配置順序

css ファイルはヘッダーに配置され、js ファイルは body の前に配置されますが、vue がすでに処理してくれています〜

2. フォントアイコンを使用し、アイコンリソースにはスプライト画像を使用する

HTTP では接続を確立するために 3 回のハンドシェイクが必要であることはご存じのとおりです。リクエストが多すぎると読み込み速度に影響します。

Tencent の公式 Web サイトの次の図に示すように、ページ上のアイコンなどの不要な静的リソースを削減するように努める必要があります。

完成した画像を直接インポートし、background-positionに応じて画像の位置を設定します。

CDNを使用する

アクセス速度を向上させるために静的リソースがCDNにアップロードされます

CDNなし:

CDN の使用:

CDN を使用すると、静的ファイルが GZIP で圧縮され、ダウンロード速度が大幅に向上することがわかります。

エントリチャンクの最適化

エントリ チャンク ファイルを分割し、一部の静的ライブラリを分離すると、パッケージ化が高速化され、読み込みが最適化されます。

以下に示すように、vuejs、axios、vuex などの一部の静的ライブラリが分離されています。ブラウザがダウンロードのために複数のダウンロード スレッドを開くことがわかります。これらの静的ライブラリを分離しないと、エントリ チャンクが非常に大きくなり、読み込み速度が低下することが予想されます。

element-ui ライブラリを分離します。開発環境については心配する必要はありません。分離するのは、prod 環境のみです。vue パッケージ構成でライブラリを削除するだけです。

設定ファイル
Webpack を構成する: {
 外部:
 process.env.NODE_ENV === 'production'
  ? {
  '要素-UI': '要素-UI',
  }
  : 未定義、
},

# index.html 静的リソースを手動でインポートします <script src="/js/element-ui/element-ui.2.11.1.js"></script>

以上がVue SPAファーストスクリーン最適化プランの詳細です。Vue SPAファーストスクリーン最適化の詳細については、123WORDPRESS.COMの他の関連記事にご注目ください。

以下もご興味があるかもしれません:
  • Vue SPA シングルページ アプリケーションの最初の画面の最適化の実践
  • Vue のディスパッチとブロードキャストの自己実装の詳細説明 (ディスパッチとブロードキャスト)
  • 放送とディスパッチのVue実装例
  • vue-cli シングルページ事前レンダリング seo-prerender-spa-plugin 操作
  • vuex での store.commit と store.dispatch の使用
  • Vue SPAは最初に読み込みアニメーションの実装コードを入力します
  • Vueはデータテーブル行スパンの列を結合する効果を実現します
  • Vue SPA アプリケーションにおけるルーティング キャッシュの問題と解決策
  • Vuex の Dispatch が Vue+Electron では効果がない問題を解決する
  • VUEはWeChat署名とSPA WeChat無効署名問題を解決します(完璧な処理)
  • vuex のアクションがいつ完了するか、dispatch を正しく呼び出す方法について詳しく説明します。

<<:  Windows 7 の mysql6.x で中国語の文字化けが発生する問題に対する完璧な解決策

>>:  nginxプロキシsocket.ioサービスの落とし穴の詳細な説明

推薦する

MySQL のスローログオンラインの問題と最適化ソリューション

MySQL スロー ログは、MySQL DBA やその他の開発および運用担当者が細心の注意を払う必要...

ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

プロフェッショナルな Web デザインは複雑で時間がかかります。 HTML と CSS フレームワー...

Apache ポートに基づいて仮想ホストを作成する例

apache: ポートに基づいて仮想ホストを作成する仮想ホスト(a、b、c)の作成を例に挙げます1)...

Nginx を使用してグレースケール リリースを実装する

グレースケールリリースとは、白と黒をスムーズに移行できるリリース方法を指します。 ABテストとは、グ...

JS 内の Json 文字列 + Cookie + ローカルストレージ

目次1.Json文字列1.1Json構文1.2 例2. クッキー2.1 使い方は? 3. ローカルス...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

シンプルな画像ドラッグ効果を実現する js

この記事では、簡単な画像ドラッグ効果を実現するためのjsの具体的なコードを参考までに紹介します。具体...

VMware での Ubuntu Docker のインストール (コンテナ構築)

1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...

Linuxでサーバーのハードウェア情報を表示する方法

みなさんこんにちは。今日は12連休ですが、何かお買い物はしましたか?今日は「Linux View S...

重要なmysqlログファイルの概要

著者: 丁易出典: https://chengxuzhixin.com/blog/post/mysq...

Xshellの一般的な問題と関連する設定の詳細な説明

この記事では、Xshell と関連する構成の一般的な問題について説明します。この記事の構成は、主に ...

CSS トップに戻る コード例

最近のウェブサイトのほとんどはページが長く、4 画面または 5 画面の長さのものもあれば、2 画面ま...

クールなページング効果を実現するネイティブJS

この記事では、次のような効果を持つ JS ページング効果の例を紹介します。クールだと思いませんか? ...

Vue テンプレート構成と Webstorm コード形式仕様設定

目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...

DockerでJenkinsをインストールし、初期プラグインのインストール失敗の問題を解決する

Jenkins をインストールした後、プラグインの初期ダウンロードが常に失敗し、インストールが失敗し...