ページデータの表示には 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 起動コマンドを追加する方法
開発中に画像とテキストが 1 行に表示されることはよくあります。2 つのインライン要素を揃えるのは通...
目次1. $(".box1").click() メソッドを実装する2. $(&q...
ローカル データベースに接続すると、Navicat for MySQL は以下のように 1045 エ...
ssh-secure シェルは、安全なリモート ログインを提供します。組み込みシステムを開発し、Li...
Docker コンテナのタイムゾーンがホストマシンと一致しているかどうかを確認するにはどうすればよい...
このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...
SSDストレージを有効にしたMySQLインスタンスの詳細な説明特に OS と MySQL が同じディ...
ナビゲーションなどは日々の開発でよく使うので、記録として記事を書きます。ナビゲーションは終了/開始位...
2.1、msiインストールパッケージ2.1.1、インストール特に重要なのは、インストール前に、元の ...
ここでは、CSS テクニックを巧みに使用することで、HTML を変更せずにブログやテンプレートの外観...
この記事では、JavaScriptで派手なカルーセル効果を実装する2つの方法を紹介します。具体的な内...
目次手動展開1.アイデアを使ってSpring Bootプロジェクトを作成する2. プロジェクトをJa...
既存のビデオ プレーヤーがニーズを満たせない場合は、ビデオを自分でカプセル化する必要があります。ビデ...
視覚効果が非常に美しく、訪問者に強い印象を残すことがわかります。さらに、重要なポイントが強調され、訴...
ログイン + セッションストレージエフェクト表示ログインに成功すると、ユーザー ID がフロントエン...