ページデータの表示には Vue などの js のデータバインディング機構が使用されるため、クローラーが取得する HTML は最終データのレンダリングされたページではなくモデルページとなり、検索エンジンは要求された js の実行に戻りません。 Vue プロジェクトはすべて ajax を使用してデータを要求しており、エンジン クローラーはページに入るときにテキスト コンテンツを取得できません。現在、ほとんどのソリューションはデータのレンダリングに ajax を使用せず、サーバー側レンダリング (いわゆる SSR) を使用しています。 方法 1: prerender-spa-plugin を使用してシングルページ アプリケーションを複数のページにパッケージ化する従来の Vue が vue-cli スキャフォールディングを通じて構築された後、npm run build を使用してパッケージ化し、オンラインに配置する最終的な HTML コードを生成します。 ディレクトリには index.html ファイルが 1 つだけあり、この html ファイルにはコンテンツがありません。vue インスタンスをマウントするために使用される、ID が app の div のみがあります。 解決 ここで、パッケージ化時にエラーが発生した場合は、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ルーティングモードを履歴に変更します。 新しいVue({ ルーター、 店、 レンダリング: h => h(App), マウントされた(){ document.dispatchEvent(新しいイベント('render-event')) } }).$mount('#app') npm run build パッケージ化後のディレクトリ構造はこのようになり、各フォルダのindex.htmlコードも なぜ js と css がこんなにたくさんあるのでしょうか? vue-cli がパッケージ化するときに、.vue ファイルの各スクリプトとスタイル タグは、タグに何も書いていなくても、対応する js と css にパッケージ化されるためです。 2番目のステップは、より小さなjsファイルとcssファイルを圧縮して結合することです。 vue-cli のドキュメントを検索しましたが、関連する情報が見つからなかったので、webpack に切り替えました。 webpack は 'webpack' を必要とします。 新しい webpack.optimize.MinChunkSizePlugin({ minChunkSize: 10000 // minChunkSize より小さいチャンクをマージして、チャンク サイズを指定されたサイズ制限以上に保ちます }), その後、 方法 2: Vue SSR (サーバーサイドレンダリング)つまり、元々ブラウザで作成されるはずだったコンポーネントが最初にサーバー上で作成され、次に対応する HTML が生成されてブラウザに直接送信され、最後にこれらの静的タグがクライアント上で完全にインタラクティブなアプリケーションとして「アクティブ化」されます。 SPA(シングルページアプリケーション)と比較したVue SSRのメリットとデメリット 特に低速ネットワークや低速デバイス上で、コンテンツまでの時間が短縮されます。 2. デメリット 2) ビルドのセットアップとデプロイメントに必要な要件が増える。任意の静的ファイル サーバーにデプロイできる完全に静的なシングル ページ アプリケーション (SPA) とは異なり、サーバー レンダリング アプリケーションを実行するには Node.js サーバーが必要です。 3) サーバー側の負荷が増大します。 Node.js で完全なアプリケーションをレンダリングすると、静的ファイルを提供するだけの場合よりも CPU への負荷が明らかに高くなります。そのため、トラフィック量の増加が予想される場合は、それに応じてサーバーの負荷に備え、キャッシュ戦略を賢く使用してください。 Vue 開発ウェブサイトの SEO 最適化方法の詳細な説明はこれで終わりです。より関連性の高い Vue SEO 最適化コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明
>>: Tomcat サービスに Java 起動コマンドを追加する方法
背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーショ...
ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...
目次1 違い1.1 スペース占有1.2 表現範囲1.3 タイムゾーン2 テスト3つの選択肢MySQL...
フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...
序文私が作成中の Markodwn エディターに同期スクロール機能を追加する必要があります。Baid...
MySQL には多くのデータベース管理ツールがあります。作業効率の向上に役立つ優れた GUI ツール...
この記事では、jQueryでカルーセルチャートを実装するための具体的なコードを参考までに共有します。...
画像タグ <IMG> を挿入します。今日私たちが目にするカラフルなウェブページはすべて、...
この記事では主に、クーポンの背景画像などでよく使われる CSS 円形ホローイングについて紹介し、皆さ...
MySQL自体は再帰構文をサポートしていませんが、自己接続を通じていくつかの単純な再帰を実現できます...
この記事の例では、画像比較を実現するためのjQueryプラグインの具体的なコードを参考までに共有して...
1. HTMLタグは常に閉じる前のページのソース コードでは、次のような記述がよく見られます。 &l...
任意のテキスト エディターを開き、次のコードをコピーして、たとえば SomeFilename.htm...
inode番号でファイルを削除するまずls -iを使用して、削除するファイルのinode番号を見つけ...
前提条件1. ローカルコンピュータとサーバーにDockerがインストールされています。ダウンロード方...