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

Docker-Compose-Installation DB2-Datenbankbetrieb

Es ist mühsam, die db2-Datenbank direkt auf dem H...

Detailliertes Tutorial zur Offline-Installation von MySQL unter CentOS7

1. Löschen Sie die ursprüngliche MariaDB, sonst k...

HTML-strukturierte Implementierungsmethode

DIV+CSS-Struktur Lernen Sie CSS-Layout? Sie beherr...

CSS3 realisiert den Animationseffekt der Lotusblüte

Schauen wir uns zunächst die Wirkung an: Dieser E...

Schreiben Sie einen einfachen Rechner mit JavaScript

Die Wirkung ist wie folgt:Referenzprogramm: <!...

Spezifische Schritte für den Vue-Browser zur Rückgabe der Überwachung

Vorwort Beim Teilen einer Seite hoffen Sie, durch...

Beispiel für die JavaScript-Funktion „CollectGarbage“

Sehen wir uns zunächst ein Beispiel für die Speic...

MySQL 8.0.18 fügt Benutzer zur Datenbank hinzu und erteilt Berechtigungen

1. Es wird empfohlen, den Root-Benutzer für die A...

Detaillierte Erklärung der Rolle des neuen Operators in Js

Vorwort Js ist heutzutage die am häufigsten verwe...