vue中ssr的作用是什么
ssr 是 server-side rendering(服务端渲染)的缩写,指的是在服务器端将 vue 组件渲染成 html 字符串,然后直接发送给客户端的技术。
与客户端渲染(csr)的主要区别
vue ssr 的核心优势
- 更好的 seo:搜索引擎爬虫可以直接获取完全渲染的页面
- 更快的内容到达时间:用户无需等待所有javascript下载执行完就能看到内容
- 更一致的用户体验:特别在慢速网络或低性能设备上表现更好
vue ssr 的基本工作原理
服务器端:
- 创建vue实例
- 渲染为html字符串
- 将状态(store/route等)嵌入到html中
客户端:
- 接收服务器渲染的html
- "激活"(hydrate)静态html使其变为动态vue应用
- 接管后续的交互和路由
实现vue ssr的方式
- 手动配置:使用
vue-server-renderer
包自行搭建ssr环境 - nuxt.js:基于vue的ssr框架,提供开箱即用的ssr解决方案
npx create-nuxt-app my-ssr-app
- vite ssr:使用vite构建工具配置ssr
基本示例代码
// 服务器入口文件 import { createssrapp } from 'vue' import { rendertostring } from 'vue/server-renderer' const app = createssrapp({ data: () => ({ count: 1 }), template: `<button @click="count++">{{ count }}</button>` }) rendertostring(app).then((html) => { // 输出渲染结果 console.log(html) // <button>1</button> })
适用场景
- seo要求高的内容型网站(新闻、博客、电商等)
- 社交媒体分享需要正确预览的页面
- 首屏加载速度要求极高的应用
注意事项
- 生命周期钩子:只有
beforecreate
和created
会在服务端执行 - 特定代码:避免在服务端使用浏览器特有api(如window、document)
- 数据预取:需要在渲染前获取所有必要数据
- 复杂度:比纯客户端应用更复杂,需要考虑服务端和客户端两种环境
ssr虽然能解决某些特定问题,但也会增加开发复杂度和服务器成本,应根据项目实际需求权衡是否采用。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论