Maison >interface Web >uni-app >Comment faire du RSS avec Uniapp
UniApp est un framework de développement d'applications multiplateforme basé sur le framework Vue.js, permettant aux développeurs de créer simultanément des applications iOS, Android, H5 et des mini-programmes. Par conséquent, dans les scénarios nécessitant des performances élevées, vous devrez peut-être utiliser SSR (Server-Side Rendering) pour résoudre les problèmes de performances de rendu. Cet article explique comment implémenter SSR dans UniApp.
Qu’est-ce que la RSS ?
SSR termine le premier rendu de la page côté serveur, renvoyant le contenu HTML statique au navigateur, permettant au navigateur de voir qu'il y a du HTML disponible, puis restitue la page. L’avantage du SSR est qu’il peut accélérer le premier chargement et améliorer l’expérience utilisateur.
La méthode de mise en œuvre SSR d'UniApp ?
La méthode d'implémentation SSR d'UniApp est basée sur la méthode d'implémentation SSR de Vue.js, qui nécessite l'utilisation de certains plug-ins SSR dans l'écosystème Vue.js.
Deux plug-ins Vue.js sont présentés ci-dessous :
La méthode d'implémentation spécifique est la suivante :
Installer Vue-router et Vue-server-renderer :
npm install vue-router vue-server-renderer --save
Créer le fichier d'entrée SSR :
Créer le fichier Entry-ssr.js sous src avec le contenu suivant :
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) }) }
Créer un serveur SSR :
Créez le fichier server.js dans le répertoire racine avec le contenu suivant :
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}`) })
Modifiez la configuration de build :
Dans le fichier vue.config.js, ajoutez ce qui suit code :
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()) } } }
Modifiez le fichier Package.json dans le répertoire racine :
Ajoutez le code suivant sous "scripts" :
"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"
Exécutez npm run ssr-build pour créer l'application SSR, puis exécutez npm run ssr-start pour démarrer l'application.
À ce stade, UniApp SS a été exécuté avec succès.
Résumé
Étant donné que la structure d'UniApp est très similaire à celle de Vue.js, lors de l'implémentation de SSR, le SSR d'UniApp peut être complété selon la méthode d'implémentation SSR de Vue.js. Grâce à une série d'étapes, l'application dans UniApp peut prendre en charge le. Rendu côté serveur, permettant ainsi d'obtenir une vitesse de chargement des pages plus rapide et d'améliorer l'expérience utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!