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サービスの落とし穴の詳細な説明

推薦する

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

Vueのトグルボタンをクリックしてボタンを有効にし、無効にします。

実装方法は3つのステップに分かれています。テンプレートに 2 つのボタンを設定し、v-if と v-...

Vueリスナーの使用例の詳細な説明

1つ目はjQueryのajaxを使用してリクエストを送信することです ユーザーが登録するときに、リス...

jsイベント委譲の詳細な説明

1. 各関数はオブジェクトであり、メモリを占有します。メモリ内のオブジェクトが増えるほど、パフォーマ...

CSSで背景ぼかしを設定する方法

ページを作成するときに、ページの見栄えを良くするために、背景画像を設定する必要があることがよくありま...

Vue はアップロードされた画像に透かしを追加する機能を実装します

この記事では、Vueでアップロードされた画像に透かしを追加する具体的な実装コードを参考までに共有しま...

2021年の花火効果をJSで描画(ソースコードダウンロード付き)

この作品はフロントエンド開発(JSコンテンツ)の知識を使用していますが、フロント部分の後半部分の知識...

WeChatミニプログラムでトークンの有効期限を処理する方法

目次まず結論から質問解決Promiseを使用してコールバック関数をカプセル化する要約するまず結論から...

ノードイベントループにおけるイベント実行の順序

目次イベントループブラウザ環境イベントループノード環境イベントループ6つのステージ(1)setTim...

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

イントラネット侵入を実現するためのSSHポート転送

LAN 内のマシンは外部ネットワークにアクセスできますが、外部ネットワークは内部ネットワークにアクセ...

vue+tp5はシンプルなログイン機能を実現

この記事では、参考までに、簡単なログイン機能を実装するためのvue+tp5の具体的なコードを紹介しま...

Docker+keepalived+nginx を使用してマスタースレーブホットスタンバイを実装する方法の例

序文単一障害点を解決するには、マスター/スレーブ ホット スタンバイ ソリューションを構成する必要が...

純粋な CSS を使用して脈動するローダー効果のソースコードを作成する

効果プレビュー右側の「クリックしてプレビュー」ボタンを押すと現在のページでプレビューが表示され、リン...