Beispiel einer Vorrendering-Methode für eine Vue-Einzelseitenanwendung

Beispiel einer Vorrendering-Methode für eine Vue-Einzelseitenanwendung

Vorwort

Mit vue-cli gepackte Projekte sind im Allgemeinen SPA-Projekte. Wie wir alle wissen, sind Single-Page-Anwendungen nicht förderlich für SEO. Es gibt zwei Lösungen: SSR (Server-Side-Rendering) und Pre-Rendering. Hier diskutieren wir nur das Pre-Rendering.

vue-cli 2.0 Version

Installieren

npm installiere Prerender-Spa-Plugin --Speichern

webpack.prod.conf.js fügt etwas Code hinzu

const Pfad = require('Pfad')
const PrerenderSPAPlugin = require('prerender-spa-plugin') // Plugin importieren const Renderer = PrerenderSPAPlugin.PuppeteerRenderer

Plugins:[
	// PrerenderSPAPlugin konfigurieren
    neues PrerenderSPAPlugin({
      // Der Pfad der generierten Datei kann auch mit dem von webpakc gepackten Pfad übereinstimmen.
      staticDir: Pfad.join(__dirname, '../dist'),
      
      // Entsprechend Ihrer eigenen Routing-Datei. Wenn beispielsweise der Index Parameter hat, müssen Sie ihn als /index/param1 schreiben.
      Routen: ['/', '/report','/genius','/index/param1'],
      // Muss geschrieben werden, wenn dieser Abschnitt nicht konfiguriert ist, wird keine Vorkompilierung durchgeführtrenderer: new Renderer({
          injizieren: {
            foo: "Leiste"
          },
          kopflos: falsch,
          // In main.js, document.dispatchEvent(new Event('render-event')), sollten die Ereignisnamen der beiden übereinstimmen.
          renderAfterDocumentEvent: 'Renderereignis'
      })
    })
]

In main.js hinzufügen

neuer Vue({
  el: '#pingce',
  Router,
  speichern,
  Komponenten: { App },
  Vorlage: '<App/>',
  // Mounted hinzufügen, sonst wird die Vorkompilierung nicht ausgeführt mounted () {
    document.dispatchEvent(neues Ereignis('Render-Ereignis'))
  }
})

Modus festlegen: „Verlauf“ in router.js

Führen Sie „npm run build“ aus und prüfen Sie, ob im generierten „Dist“-Verzeichnis ein Ordner vorhanden ist, der jedem Routennamen entspricht. Suchen Sie dann im Verzeichnis nach der Datei „index.html“ und öffnen Sie sie mit der IDE, um zu sehen, ob die Datei den gewünschten Inhalt hat.

Jede von Ihnen konfigurierte Route generiert einen Ordner und unter jedem Ordner wird dann eine Datei „index.html“ generiert.

vue-cli 3.0 Version

Die 3.0-CLI sieht viel einfacher aus, da die 2.0-Build- und Konfigurationsverzeichnisse entfernt wurden. Wie ändern wir also die Webpack-Konfiguration?

Erstellen Sie vue.config.js im Stammverzeichnis und nehmen Sie Ihre Konfiguration vor.

Installieren

npm installiere Prerender-Spa-Plugin --Speichern

vue-config.js hinzufügen

const PrerenderSPAPlugin = require('prerender-spa-plugin'); // Plugin importieren const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
const path = require('Pfad');
modul.exporte = {
    konfigurierenWebpack: config => {
        wenn (Prozess.env.NODE_ENV !== 'Produktion') zurückgeben;
        zurückkehren {
            Plugins: [
                neues PrerenderSPAPlugin({
                    // Der Pfad der generierten Datei kann auch mit dem von webpakc gepackten Pfad übereinstimmen.
                    // Dieses Verzeichnis kann nur eine Ebene haben. Wenn die Verzeichnisebene größer als eine Ebene ist, wird während der Generierung keine Fehlermeldung angezeigt und es bleibt einfach beim Vorrendern hängen.
                    staticDir: Pfad.join(__dirname,'dist'),
                    // Entsprechend Ihrer eigenen Routing-Datei. Wenn beispielsweise „about“ Parameter hat, müssen Sie es als „/about/param1“ schreiben.
                    Routen: ['/', '/Produkt', '/Über'],
                    //Muss konfiguriert werden, sonst wird keine Vorkompilierung durchgeführtrenderer: new Renderer({
                        injizieren: {
                            foo: "Leiste"
                        },
                        kopflos: falsch,
                        // In main.js, document.dispatchEvent(new Event('render-event')), sollten die Ereignisnamen der beiden übereinstimmen.
                        renderAfterDocumentEvent: 'Renderereignis'
                    })
                }),
            ],
        };
    }
}

In main.js hinzufügen

neuer Vue({
  Router,
  speichern,
  rendern: h => h(App),
  // Der Name von renderAfterDocumentEvent in vue-config.js: 'render-event' muss mit mounted () { übereinstimmen.
    document.dispatchEvent(neues Ereignis('Render-Ereignis'))
  }
}).$mount('#app')

Modus festlegen: „Verlauf“ in router.js

Führen Sie „npm run build“ aus und prüfen Sie, ob im generierten „Dist“-Verzeichnis ein Ordner vorhanden ist, der jedem Routennamen entspricht.

Zusammenfassen

1. Am besten verwenden Sie den Verlaufsmodus zum Routing. Sie können die generierte Datei auch ausführen, ohne sie zu verwenden, aber der Inhalt jeder index.html-Datei ist derselbe.

2. Die Einstellungen in 3.0 sind ungefähr dieselben wie in 2.0, aber es gibt einige Stellen, die Aufmerksamkeit erfordern.

Legen Sie in 2.0 staticDir fest: path.join(__dirname,'../dist')

Legen Sie in 3.0 staticDir fest: path.join(__dirname,'dist')

Wenn diese beiden Einstellungen falsch sind, wird beim Ausführen von „npm run build“ ein Fehler gemeldet.

Wenn Sie den Titel und die Metadaten jeder Seite festlegen möchten, wird die Verwendung von [vue-meta-info] empfohlen.

Dies ist das Ende dieses Artikels über das Vorrendern von Vue-Einzelseitenanwendungen. Weitere relevante Inhalte zum Vorrendern von Vue-Einzelseitenanwendungen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vorab-Rendering einzelner Seiten über Vue-CLI, SEO-Prerender-Spa-Plugin-Vorgang

<<:  Detailliertes grafisches Tutorial zur Installation der virtuellen CentOS7-Maschine in Virtualbox

>>:  Webseitenerstellung für Anfänger: Lernen Sie den Umgang mit dem A-Tag für HTML-Hyperlinks

Artikel empfehlen

So stellen Sie ein Vue-Projekt unter Nginx bereit

Heute werde ich den Server nginx verwenden und mu...

Vue + Express + Socket realisiert Chat-Funktion

In diesem Artikel wird der spezifische Code von V...

So löschen Sie schwebenden Beispielcode in CSS

Überblick Das Rahmendiagramm dieses Artikels ist ...

MySQL-Import- und Export-Sicherungsdetails

Inhaltsverzeichnis 1. Detaillierte Erklärung der ...

Detaillierte Erläuterung der Laderegeln der require-Methode in node.js

Laderegeln der Require-Methode Laden aus dem Cach...

CSS erreicht hochadaptiven Vollbildmodus

Beim Schreiben meiner eigenen Demo möchte ich dis...

CSS3 realisiert die Mask Barrage-Funktion

Kürzlich habe ich auf der B-Station einen Sperrfe...

So positionieren Sie die Kopfzeile mithilfe des CSS-Sticky-Layouts oben

Anwendungsszenarien: Eine der neuen Anforderungen...