服务器渲染SSR
npminstallvuevue-server-renderer--saverenderaVueinstance//第一步:创建Vue实例constVue=require('vue')constapp=newVue({template:`
HelloWorld
`})//第二步:创建渲染器constrenderer=require('vue-server-renderer').createRenderer()//第三步:将Vue实例渲染为HTMLrenderer.renderToString(app,(err,html)=>{if(err)throwerrconsole.log(html)//=>
HelloWorld })//2.5中.0+,如果没有传入回调函数,会返回一个Promise:renderer.renderToString(app).then(html=>{console.log(html)}).catch(err=>{console.error(err)})和服务端集成------npminstallexpress--saveVue+SSR完整实现完整实现过程分为【模板页面】(HTML),【客户端】(ClientBundle)如图下面),[ServerBundle]三个模块。三个模块的作用如下:模板页面:为客户端和服务端渲染提供的html框架,让客户端和服务端可以在这个框架中渲染页面client:只在浏览器端执行,到模板页面**注入js、css等静态资源**服务器端:只在服务器端执行,将Vue实例渲染为html字符串,注入模板页面相应位置Vue应用改造SPA模式,用户与Vue应用是一个SSR模式,由于Vue实例是在服务器端渲染的,而服务器是所有用户共享的,所以用户和Vue应用之间的关系变成了多对一的关系。这就导致多个用户共享同一个Vue实例,导致实例中的数据相互污染。解决这个问题,我们需要修改Vue应用的入口,将Vue实例的创建改为“工厂模式”,每次渲染都会创建一个新的Vue实例,避免用户共享同一个Vue实例的情况。具体修改代码如下: