vue服务端渲染SSR

180 阅读2分钟

传统的web开发:网页的内容在服务端渲染完成,一次性传输到浏览器。打开页面查看源码,浏览器拿到的全部是dom结构。

1.png 单页应用single page app:单页应用的优秀用户体验,使起逐渐成为主流,页面内容由js渲染出来,这种方式成为客户端渲染。打开页面查看源码,浏览器拿到的仅有宿主元素#app,并没有内容。存在的问题有:seo差,首屏加载速度问题。

2.png

服务端渲染server Side Render: ssr解决方案,后端渲染出完整的首屏的dom结构返回,前端拿到的内容包括首屏以及完整spa结构,应用激活后依然按照spa方式运行,这种页面渲染方式被称作服务端渲染。

1.png

同构开发SSR应用 构建流程:目标是生成一个服务端bundle,用于服务端首屏渲染,和一个客户端bundle,用户客户端激活。

1.png

目录结构:

image.png

路由配置:@/router.js

image.png

**主文件:**跟之前不同,主文件是负责创建vue实例的工厂,每次请求均会有独立的vue实例创建@/main.js

image.png

**服务端入口:**上面的bundle就是webpack打包的服务端bundle,我们需要编写服务端入口文件src/entry-server.js 它的任务是创建Vue实例并根据传入url指定首屏。@/entry-server.js

image.png

**客户端入口:**客户端入口只需创建vue实例并执行挂载,这一步称为激活。创建@/entry-client.js

image.png

webpack配置: 安装依赖 npm install webpack-node-externals lodash.merge -D

具体配置,vue.config.js

image.png

image.png

脚本配置 npm i cross-env -D 定义创建脚本,package.json

image.png

宿主文件: 最后需要定义宿主文件,修改./public/index.html

image.png

服务器启动文件 修改服务器启动文件,现在需要处理所有路由,./server/ssr.js

image.png 总结: image.png