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

推薦する

VUE ユニアプリの条件付きコーディングとページレイアウトに関する簡単な説明

目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...

Vue で PC アドレスをモバイル アドレスにリダイレクトする方法

要件:PC側とモバイル側は2つの独立したプロジェクトです。2つのプロジェクトの内容は基本的に同じで、...

ul リスト タグ デザイン ウェブ ページ 複数列レイアウト

数日前、CSS で 3 列レイアウトを書いていたときに、突然この方法を思いつきました。このアイデアは...

MySQL UPDATE ステートメントの非標準実装コード

今日は、MySQL データベースと SQL 標準 (および他のデータベース) の UPDATE ステ...

光沢のある輝くウェブサイトデザインの感動的なデザイン例

このコレクションには、あなたのデザインアイデアにインスピレーションを与える、輝いて光沢のある、優れた...

国内SNSのホームページを比較・分析して得た経験をみんなで共有(写真)

この記事では、ソーシャル ウェブサイトのホームページを比較分析することで洞察を得て、ソーシャル ウェ...

ファイルをアップロードするときに enctype フィールドを使用する理由は何ですか?

FORM 要素の enctype 属性は、フォーム データがサーバーに送信されるときに使用されるエン...

Markodwnによるタイトル配置による同期スクロールのアイデアの詳細な説明

序文私が作成中の Markodwn エディターに同期スクロール機能を追加する必要があります。Baid...

MySQLで行を列に変換する方法

MySQL の行から列への操作いわゆる行から列への操作は、テーブルの行情報を列情報に変換することです...

MySQLのROUND関数の丸め演算における落とし穴の分析

この記事では、MySQL の ROUND 関数を使用した丸め操作の落とし穴を例を使って説明します。ご...

MySQL が外部キーを作成できない理由と解決策

2 つのテーブルを関連付けるときに、外部キーを作成できませんでした。このブログから、問題は、ポイント...

JavaScript の parseInt() の魔法についての簡単な説明

原因このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(at...

MySQLのユーザーアカウント管理と権限管理の詳細な説明

序文MySQL の権限テーブルは、データベースの起動時にメモリにロードされます。ユーザーが ID 認...

Javascript の奇妙な点をご存知ですか?

私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...