ページデータの表示には 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 起動コマンドを追加する方法
3D座標の概念要素が回転すると、その座標軸も一緒に回転します。注 -y方向の問題立方体を回転させる効...
この記事では、キャンバスを使用してWeChatアプレットに時計を描く具体的なコードを参考までに共有し...
この記事では、参考のために、ミニプログラムでカスタムのマルチレベル単一選択および複数選択機能を実装す...
要件は次のとおりですテーブル構造、フィールドコメント情報、テーブル名などをエクスポートします。これは...
1. 入力・貼り付けできるのは中国語のみ<input onkeyup="value=...
1. 原因公式の cerbot は面倒すぎます。野生の成長よりもさらに悪い acme.sh の使用は...
1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...
多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...
目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...
この記事では、Windows Server オペレーティング システムのインストールと企業でのそのア...
WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...
序文Linux システムの運用および保守エンジニア職の面接を受ける場合は、次の 10 個の最も一般的...
この記事では、MySQL ビューの原理と使用法についてまとめます。ご参考までに、詳細は以下の通りです...
ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...
1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...