Vue開発ウェブサイトSEO最適化方法の詳細な説明

Vue開発ウェブサイトSEO最適化方法の詳細な説明

ページデータの表示には Vue などの js のデータバインディング機構が使用されるため、クローラーが取得する HTML は最終データのレンダリングされたページではなくモデルページとなり、検索エンジンは要求された js の実行に戻りません。 Vue プロジェクトはすべて ajax を使用してデータを要求しており、エンジン クローラーはページに入るときにテキスト コンテンツを取得できません。現在、ほとんどのソリューションはデータのレンダリングに ajax を使用せず、サーバー側レンダリング (いわゆる SSR) を使用しています。
Vue に基づく現在のソリューションは Nuxt.js です。Nuxt.js の React バージョンもあります。サーバー側レンダリングとは、サーバーがブラウザーに送信する前にページにデータを配置して、クローラーがクロールできるようにすることです。

方法 1: prerender-spa-plugin を使用してシングルページ アプリケーションを複数のページにパッケージ化する

従来の Vue が vue-cli スキャフォールディングを通じて構築された後、npm run build を使用してパッケージ化し、オンラインに配置する最終的な HTML コードを生成します。
Vue で構築されたシングルページ プロジェクトには、メンテナンスの容易さ、簡潔なコード、優れた開発エクスペリエンスなど、さまざまな利点があります。しかし、一部の従来のインターネット企業にとって、Vue シングルページには SEO 最適化の問題という致命的な問題があります。以下は、通常パッケージ化された Vue シングルページ ディレクトリと index.html のコードです。

ここに画像の説明を挿入

ここに画像の説明を挿入

ディレクトリには index.html ファイルが 1 つだけあり、この html ファイルにはコンテンツがありません。vue インスタンスをマウントするために使用される、ID が app の div のみがあります。
Google検索エンジンはすでにシングルページ情報のクロールに非常によく対応していますが、Googleは海外の検索エンジンであり、国内での使用にはVPNが必要なため、考慮されていません。Baiduは中国で最も重要な検索エンジンであり、Baiduはシングルページデータをクロールできないため、このようなプロジェクトが開始されると、他の人がBaiduで検索するときにプロジェクトを見つけるのが難しくなります。現在の会社のほとんどのプロジェクトでは SEO 最適化が必要なので、この問題は私に課されました。

解決

ここで、パッケージ化時にエラーが発生した場合は、npm 経由で puppeteer をインストールする必要がある可能性があることを述べておきます (これは少し大きく、約 300 MB です)

最初のステップは、prerender-spa-pluginを介してvue.config.jsを構成することです。

npm isntall prerender-spa-plugin --save

これは、Vueがシングルページアプリケーションを複数のページにパッケージ化するために使用するサードパーティのプラグインです。インストール後、vue.config.jsで次のように設定します。

const PrerenderSPAPlugin = require('prerender-spa-plugin');
const レンダラー = PrerenderSPAPlugin.PuppeteerRenderer;
webpack は 'webpack' を必要とします。
定数パス = require('path');
 
モジュール.エクスポート = {
    Webpack の設定: config => {
        process.env.NODE_ENV !== 'production' の場合、戻り値は次のようになります。
        戻る {
            プラグイン: [
                新しいプリレンダリングSPAPlugin({
                    // 生成されたファイルのパスは、webpakc によってパッケージ化されたパスと一致する場合もあります。
                    // 次の文は非常に重要です! ! !
                    // このディレクトリには 1 つのレベルしか存在できません。ディレクトリ レベルが 1 レベルを超える場合、生成中にエラー プロンプトは表示されず、事前レンダリング中に停止するだけです。
                    staticDir: path.join(__dirname,'dist'),
                    // 独自のルーティング ファイルに対応して、たとえば、a にパラメーターがある場合は、/a/param1 と記述する必要があります。
                    ルート: ['/','/about','/store_vuex','/cssAnimate','/connectMongoDB','/childParent','/child1','/elementUI'],
                    // これは非常に重要です。このセクションが設定されていない場合、プリコンパイルは実行されませんrenderer: new Renderer({
                        注入: {
                            foo: 'バー'
                        },
                        ヘッドレス: 偽、
                        // main.js の document.dispatchEvent(new Event('render-event')) では、2 つのイベント名が対応している必要があります。
                        renderAfterDocumentEvent: 'レンダリングイベント'
                    })
                })
            ]、
        };
    }
}

次に、vueルーティングモードを履歴に変更します。
最後に、このコードを mian.js エントリ ファイルに追加します。レンダリングイベントはvue.config.jsのrenderAfterDocumentEventに対応している必要があります。

新しいVue({
  ルーター、
  店、
  レンダリング: h => h(App),
  マウントされた(){
    document.dispatchEvent(新しいイベント('render-event'))
  }
}).$mount('#app')

npm run build パッケージ化後のディレクトリ構造はこのようになり、各フォルダのindex.htmlコードも
現在の HTML コードには、.vue ファイルにテンプレート関連のコードが含まれていますが、各フォルダーの index.html コードがすべての js ファイルと css ファイルを参照するという追加の問題があり、これは SEO 最適化には役立ちません。だからまだ終わってないんです。

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

なぜ js と css がこんなにたくさんあるのでしょうか? vue-cli がパッケージ化するときに、.vue ファイルの各スクリプトとスタイル タグは、タグに何も書いていなくても、対応する js と css にパッケージ化されるためです。

2番目のステップは、より小さなjsファイルとcssファイルを圧縮して結合することです。

vue-cli のドキュメントを検索しましたが、関連する情報が見つからなかったので、webpack に切り替えました。
このAPIは、マージされたファイルの最小サイズを設定するために使用できます。このコードを上記のWebpack構成のプラグインに追加します。推定値は10000 = 1kbです。

webpack は 'webpack' を必要とします。
 
新しい webpack.optimize.MinChunkSizePlugin({
                    minChunkSize: 10000 // minChunkSize より小さいチャンクをマージして、チャンク サイズを指定されたサイズ制限以上に保ちます }),

その後、 npm run build同じディレクトリを使用しますが、js と css は大幅に削減されます。

ここに画像の説明を挿入

方法 2: Vue SSR (サーバーサイドレンダリング)

つまり、元々ブラウザで作成されるはずだったコンポーネントが最初にサーバー上で作成され、次に対応する HTML が生成されてブラウザに直接送信され、最後にこれらの静的タグがクライアント上で完全にインタラクティブなアプリケーションとして「アクティブ化」されます。

SPA(シングルページアプリケーション)と比較したVue SSRのメリットとデメリット
1. 利点: 検索エンジンのクローラーが完全にレンダリングされたページを直接表示できるため、SEO が向上します。

特に低速ネットワークや低速デバイス上で、コンテンツまでの時間が短縮されます。

2. デメリット
1) 開発条件により制限されます。特定のライフサイクル フックでのみ使用できるブラウザ固有のコード。一部の外部ライブラリでは、サーバー レンダリングされたアプリケーションで実行するために特別な処理が必要になる場合があります。

2) ビルドのセットアップとデプロイメントに必要な要件が増える。任意の静的ファイル サーバーにデプロイできる完全に静的なシングル ページ アプリケーション (SPA) とは異なり、サーバー レンダリング アプリケーションを実行するには Node.js サーバーが必要です。

3) サーバー側の負荷が増大します。 Node.js で完全なアプリケーションをレンダリングすると、静的ファイルを提供するだけの場合よりも CPU への負荷が明らかに高くなります。そのため、トラフィック量の増加が予想される場合は、それに応じてサーバーの負荷に備え、キャッシュ戦略を賢く使用してください。

Vue 開発ウェブサイトの SEO 最適化方法の詳細な説明はこれで終わりです。より関連性の高い Vue SEO 最適化コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue-cli シングルページ事前レンダリング seo-prerender-spa-plugin 操作
  • Vue シングルページ SEO の 4 つのソリューションについての簡単な説明
  • prerender-spa-plugin を通じて単一の Vue ページの SEO を最適化する方法

<<:  VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

>>:  Tomcat サービスに Java 起動コマンドを追加する方法

推薦する

CSS3 回転キューブ問題の詳細な説明

3D座標の概念要素が回転すると、その座標軸も一緒に回転します。注 -y方向の問題立方体を回転させる効...

WeChatアプレットはキャンバスを使用して時計を描画します

この記事では、キャンバスを使用してWeChatアプレットに時計を描く具体的なコードを参考までに共有し...

ミニプログラムは、カスタムのマルチレベル単一選択と複数選択を実装します

この記事では、参考のために、ミニプログラムでカスタムのマルチレベル単一選択および複数選択機能を実装す...

MySQL テーブル構造を Excel にエクスポートする方法

要件は次のとおりですテーブル構造、フィールドコメント情報、テーブル名などをエクスポートします。これは...

入力タイプの制限(複数の方法)

1. 入力・貼り付けできるのは中国語のみ<input onkeyup="value=...

Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法

1. 原因公式の cerbot は面倒すぎます。野生の成長よりもさらに悪い acme.sh の使用は...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

a タグにはテキストと画像があります。テキストを非表示にして画像のみを表示するにはどうすればよいでしょうか?

多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...

Angularの親子コンポーネント通信の詳細な説明

目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...

仮想マシンに Windows Server 2008 オペレーティング システムをインストールする

この記事では、Windows Server オペレーティング システムのインストールと企業でのそのア...

Windows での MySQL データベースのマスター/スレーブ構成チュートリアル

WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...

Linux 面接で最もよく聞かれる 10 の質問のまとめ

序文Linux システムの運用および保守エンジニア職の面接を受ける場合は、次の 10 個の最も一般的...

MySQL ビューの原則と使用例の概要

この記事では、MySQL ビューの原理と使用法についてまとめます。ご参考までに、詳細は以下の通りです...

Linux デスクトップ用の 4 つのスキャン ツール

ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...

Nginx リバースプロキシの例の詳細な説明

1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...