Heim Web-Frontend uni-app Wie man SSR mit Uniapp macht

Wie man SSR mit Uniapp macht

Apr 14, 2023 pm 01:53 PM

UniApp ist ein plattformübergreifendes Anwendungsentwicklungs-Framework, das auf dem Vue.js-Framework basiert und es Entwicklern ermöglicht, gleichzeitig iOS-, Android-, H5- und Miniprogramm-Anwendungen zu erstellen. Daher müssen Sie in Szenarien mit hohen Leistungsanforderungen möglicherweise SSR (Server-Side Rendering) verwenden, um Probleme mit der Rendering-Leistung zu lösen. In diesem Artikel wird erläutert, wie Sie SSR in UniApp implementieren.

Was ist SSR?
SSR schließt das erste Rendern der Seite auf der Serverseite ab und gibt den statischen HTML-Inhalt an den Browser zurück, sodass der Browser erkennen kann, dass HTML verfügbar ist, und dann die Seite rendern kann. Der Vorteil von SSR besteht darin, dass es den ersten Ladevorgang beschleunigen und das Benutzererlebnis verbessern kann.

UniApps SSR-Implementierungsmethode?
Die SSR-Implementierungsmethode von UniApp basiert auf der SSR-Implementierungsmethode von Vue.js, die die Verwendung einiger SSR-Plug-Ins im Vue.js-Ökosystem erfordert.
Zwei Vue.js-Plug-Ins werden unten vorgestellt:

  1. Vue-Router: Wird für die Routing-Verwaltung und die Zuordnung von Anfragen zu entsprechenden Komponenten verwendet.
  2. Vue-server-renderer: HTML-Zeichenfolge, die zum Rendern der Anwendung in der Node.js-Umgebung verwendet wird und HTML-Dateien generiert, um den aktuellen Status der Anwendung darzustellen.

Die spezifische Implementierungsmethode ist wie folgt:

  1. Vue-Router und Vue-Server-Renderer installieren: #🎜🎜 #

    npm install vue-router vue-server-renderer --save
    Nach dem Login kopieren
    # 🎜🎜#
  2. Erstellen Sie die SSR-Eintragsdatei:
  3. Erstellen Sie die Datei „entry-ssr.js“ unter src mit folgendem Inhalt:

    import createApp from './main'
    
    export default context => {
      return new Promise((resolve, reject) => {
     const { app, router, store } = createApp()
     const { url } = context
     const fullPath = router.resolve(url).route.fullPath
    
     if (fullPath !== url) {
       return reject({ url: fullPath })
     }
    
     // 设置 server router 的位置
     router.push(url)
    
     // 等待 router 将组件渲染完
     router.onReady(() => {
       const matchedComponents = router.getMatchedComponents()
       if (!matchedComponents.length) {
         return reject({ code: 404 })
       }
    
       Promise.all(
         matchedComponents.map(Component => {
           if (Component.asyncData) {
             return Component.asyncData({
               store,
               route: router.currentRoute
             })
           }
         })
       )
         .then(() => {
           context.state = store.state
           resolve(app)
         })
         .catch(reject)
     }, reject)
      })
    }
    Nach dem Login kopieren

    #🎜 🎜##🎜🎜 #SSR-Server erstellen: Erstellen Sie die Datei server.js im Stammverzeichnis mit folgendem Inhalt:
  4. const Koa = require('koa')
    const path = require('path')
    const fs = require('fs')
    const koaStatic = require('koa-static')
    const { createBundleRenderer } = require('vue-server-renderer')
    const serverBundle = require('./dist/vue-ssr-server-bundle.json')
    const clientManifest = require('./dist/vue-ssr-client-manifest.json')
    const template = fs.readFileSync(path.join(__dirname, './index.ssr.html'), 'utf-8')
    
    const app = new Koa()
    const renderer = createBundleRenderer(serverBundle, {
      runInNewContext: false,
      template,
      clientManifest
    })
    
    // 静态资源
    app.use(koaStatic(path.join(__dirname, './dist')))
    
    app.use(async (ctx, next) => {
      const context = { url: ctx.url }
    
      const html = await renderer.renderToString(context)
     .catch(err => {
       if (err.code === 404) {
         ctx.status = 404
         ctx.body = '404 Page Not Found'
       } else {
         ctx.status = 500
         ctx.body = '500 Internal Server Error'
         console.error(`${ctx.url}\n${err.stack}`)
       }
     })
    
      ctx.body = html
    })
    
    const port = process.env.PORT || 9090
    
    app.listen(port, () => {
      console.log(`server started at localhost:${port}`)
    })
    Nach dem Login kopieren

  5. Ändern Sie die Build-Konfiguration :

    in vue. Fügen Sie in der Datei config.js den folgenden Code hinzu:
  6. module.exports = {
      productionSourceMap: false,
      css: {
     extract: {
       ignoreOrder: true
     }
      },
      configureWebpack: config => {
     if (process.env.UNI_SSR) {
       config.output.libraryTarget = 'commonjs2'
       config.externals = [
         /^uni-app/,
         /^@dcloudio/,
         {
           vue: {
             root: 'Vue',
             commonjs: 'vue',
             commonjs2: 'vue'
           }
         }
       ]
       config.plugins.push(new VueSSRServerPlugin())
     }
      }
    }
    Nach dem Login kopieren

  7. Ändern Sie die Datei package.json im Stammverzeichnis: #🎜 🎜#Fügen Sie unter „Skripte“ den folgenden Code hinzu:

    "ssr-build": "cross-env UNI_SSR=1 vue-cli-service build --mode production --target server --dest dist && vue-cli-service build --mode production --target client --dest dist",
    "ssr-start": "cross-env NODE_ENV=production node server.js"
    Nach dem Login kopieren
  8. Führen Sie npm run ssr-build aus, um die SSR-Anwendung zu erstellen, und führen Sie dann npm run ssr-start aus, um die Anwendung zu starten.

  9. Zu diesem Zeitpunkt wurde UniApp SS erfolgreich ausgeführt.

    Zusammenfassung
  10. Da die Struktur von UniApp der von Vue.js sehr ähnlich ist, kann bei der Implementierung von SSR die SSR von UniApp gemäß der SSR-Implementierungsmethode von Vue.js durch eine Reihe von vervollständigt werden Es ermöglicht Anwendungen in UniApp, serverseitiges Rendering zu unterstützen, wodurch eine schnellere Seitenladegeschwindigkeit erreicht und die Benutzererfahrung verbessert wird.

Das obige ist der detaillierte Inhalt vonWie man SSR mit Uniapp macht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie gehe ich mit lokalem Speicher in Uni-App um? Wie gehe ich mit lokalem Speicher in Uni-App um? Mar 11, 2025 pm 07:12 PM

In diesem Artikel werden die lokalen Speicher-APIs von UNI-App (Uni.setStorageSync (), Uni.getStorageSync () und ihre asynchronisierten Gegenstücke) beschrieben, wobei Best Practices wie die Verwendung beschreibender Schlüssel, die Begrenzung der Datengröße und die Bearbeitung von JSON-Parsen betonen. Es betont, dass lo

So benennen Sie Uniap -Download -Dateien um So benennen Sie Uniap -Download -Dateien um Mar 04, 2025 pm 03:43 PM

In diesem Artikel werden Workarounds für die Umbenennung heruntergeladener Dateien in UNIAPP beschrieben, ohne dass die direkte API -Unterstützung fehlt. Android/iOS benötigen native Plugins für die Umbenennung nach dem Herunterladen, während H5-Lösungen auf Dateinamen vorgeschlagen sind. Der Prozess beinhaltet zeitlich

So behandeln Sie die Dateicodierung mit UniApp -Download So behandeln Sie die Dateicodierung mit UniApp -Download Mar 04, 2025 pm 03:32 PM

Dieser Artikel befasst sich mit Fragen der Dateicodierung in UNIAPP -Downloads. Es betont die Bedeutung von Headertypen vom serverseitigen Inhalt und die Verwendung von JavaScripts TextDecoder für die clientseitige Dekodierung basierend auf diesen Headern. Lösungen für gemeinsame Codierungsprobleme

Wie benutze ich Uni-App-Geolocation-APIs? Wie benutze ich Uni-App-Geolocation-APIs? Mar 11, 2025 pm 07:14 PM

In diesem Artikel werden die Geolocation-APIs von UNI-App beschrieben und konzentriert sich auf Uni.getLocation (). Es befasst sich mit allgemeinen Fallstricken wie falschen Koordinatensystemen (GCJ02 vs. WGS84) und Erlaubnisproblemen. Verbesserung der Standortgenauigkeit durch Mittelung von Lesungen und Handhabung

Wie verwalte ich den Status in Uni-App mit Vuex oder Pinia? Wie verwalte ich den Status in Uni-App mit Vuex oder Pinia? Mar 11, 2025 pm 07:08 PM

Dieser Artikel vergleicht Vuex und Pinia für das staatliche Management in Uni-App. Es beschreibt ihre Funktionen, Implementierung und Best Practices, wobei die Einfachheit von Pinia gegenüber der Struktur von Vuex hervorgehoben wird. Die Wahl hängt von der Projektkomplexität mit Pinia Suita ab

Wie mache ich API-Anfragen und behandle Daten in UNI-App? Wie mache ich API-Anfragen und behandle Daten in UNI-App? Mar 11, 2025 pm 07:09 PM

In diesem Artikel werden API-Anfragen in UNI-App mit UNI.Request oder Axios erstellt und sichtbar. Es deckt die Bearbeitung von JSON -Antworten, die besten Sicherheitspraktiken (HTTPS, Authentifizierung, Eingabebereich), Fehlerbehebung Fehler (Netzwerkprobleme, CORS, S) ab

Wie benutze ich die Social Sharing APIs von Uni-App? Wie benutze ich die Social Sharing APIs von Uni-App? Mar 13, 2025 pm 06:30 PM

In dem Artikel wird beschrieben, wie die soziale Freigabe in UN-App-Projekte mit der UNI.SHARE-API integriert wird, die Setup, Konfiguration und Tests über Plattformen wie WeChat und Weibo abdeckt.

Wie verwende ich die Easycom-Funktion von Uni-App für die Registrierung der automatischen Komponenten? Wie verwende ich die Easycom-Funktion von Uni-App für die Registrierung der automatischen Komponenten? Mar 11, 2025 pm 07:11 PM

In diesem Artikel werden die Easycom-Funktion von UNI-App erläutert, in der die Komponentenregistrierung automatisiert wird. Die Konfiguration enthält die Konfiguration, einschließlich Autoscan- und benutzerdefinierter Komponentenzuordnung, die Vorteile wie reduzierte Kesselplatten, verbesserte Geschwindigkeit und verbesserte Lesbarkeit hervorheben.

See all articles