BlockLauncher社区生态与插件库:如何分享和获取高质量的游戏Mod
2026/7/19 13:17:32
在构建Vue.js应用时,客户端渲染(CSR)存在SEO不友好、首屏加载慢、白屏时间长等问题。服务端渲染(SSR)可以有效解决这些问题,但同时也带来了开发约束、构建配置复杂、服务器性能开销等挑战。
采用Vue SSR技术栈,通过在服务端渲染完整的HTML页面,然后在客户端激活为可交互应用。
// server.js - 服务端渲染入口constexpress=require('express');const{createBundleRenderer}=require('vue-server-renderer');constfs=require('fs');constpath=require('path');constapp=express();// 创建渲染器functioncreateRenderer(bundle,options){returncreateBundleRenderer(bundle,{runInNewContext:false,template:fs.readFileSync(path.resolve('./index.template.html'),'utf-8'),clientManifest:options.clientManifest,basedir:options.basedir});}// SSR渲染app.get('*',(req,res)=>{constcontext={url:req.url};renderer.renderToString(context,(err,html)=>{if(err){if(err.url){res.redirect(err.url);}elseif(err.code===404){res.status(404).send('404 | Page Not Found');}else{res.status(500).send('500 | Internal Server Error');}return;}res.send(html);});});module.exports=app;// client/app.js - 客户端入口importVuefrom'vue';importAppfrom'@/App.vue';import{createRouter}from'@/router';import{createStore}from'@/store';import{sync}from'vuex-router-sync';exportfunctioncreateApp(){constrouter=createRouter();conststore=createStore();// 将 router 挂载到 store 中,可以通过 store.state.route 访问sync(store,router);constapp=newVue({router,store,render:h=>h(App)});return{app,router,store};}