详解vue服务端渲染(SSR)初探

发布时间 - 2026-01-11 01:57:11    点击率:

前言

首先来讲一下服务端渲染,直白的说就是在服务端拿数据进行解析渲染,直接生成html片段返回给前端。具体用法也有很多种比如:

传统的服务端模板引擎渲染整个页面

服务渲染生成htmll代码块, 前端 AJAX 获取然后js动态添加

服务端渲染的优劣

首先是seo问题,前端动态渲染的内容是不能被抓取到的,而使用服务端渲染就可以解决这个问题。还有就是首屏加载过慢这种问题,比如在SPA中,打开首页需要初始加载很多资源,这时考虑在首屏使用服务端渲染,也是一种折中的优化方案。但是使用SSR时,势必会增加服务器的压力,还有可能会需要前后端同构,使用同样的模板引擎,这似乎与前后端分离的观点又是矛盾的。废话就说到这里,下面来看一下vue框架中的服务器渲染。

vue-server-renderer

vue-server-renderer就是vue中处理服务端加载的一个模块了,官方文档:https://ssr.vuejs.org/en/,暂时没有中文版的,我也只是稍微看了一些,然后写了一个简单的demo。首先新建一个test.js文件,并用npm安装依赖express、vue、vue-server-renderer。引入vue-server-renderer之后,然后新建一个temp.html作为渲染的基本模板,用createRenderer方法新建一个render实例,这里我传入temp.html作为renderer的template的参数,在后面渲染时就会以这个temp.html作为基础模板。

const renderer = require('vue-server-renderer').createRenderer({
  template: require('fs').readFileSync('./temp.html', 'utf-8')
})

temp.html:

<!DOCTYPE html>
<html lang="en">
<head><title>{{title}}</title></head>
 <body>
  <!--vue-ssr-outlet-->
 </body>
</html>

接下来随便定义一些渲染用的数据,然后用express新建一个node服务器,再定义一个vue的实例。然后再调用renderer的renderToString方法来渲染生成html,渲染成功后返回给客户端。

const Vue = require('vue')
const server = require('express')()
const context = {
 title: 'hello'
}
const mocktitle = '我爱吃的水果'
const mockdata = ['香蕉', '苹果', '橘子']
server.get('*', (req, res) => {
 const app = new Vue({
  data: {
   url: req.url,
   data: mockdata,
   title: mocktitle
  },
  template: <div>The visited URL is: {{ url }}
  <h3>{{title}}</h3>
  <p v-for='item in data'>{{item}}</p>
  </div>
 })
 renderer.renderToString(app, context, (err, html) => {
  if (err) {
   res.status(500).end('Internal Server Error')
   return
  }
  res.end(html)
 })
})
server.listen(8080)

注意这里渲染的数据有两种,mockdata是作为vue实例的data来渲染在实例模板中的,而context是作为基础模板的data来渲染temp.html的。可以看到在服务端用vue进行渲染的规则和前端渲染时一样,v-for、v-if等都可以正常使用。最后命令行输入node test.js,然后在浏览器打开http://localhost:8080 查看结果如下:

可以看到服务端直接返回了一个渲染完成的Doc,示例demo到此结束。

结语

服务端渲染还是客户端渲染的问题,个人觉得还是要针对具体业务场景然后再做选择。然后作为前端我对服务端的东西了解的也不是很多,上面说的如果有不对的地方,欢迎指正拍砖。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # 服务端渲染  # ssr  # vue服务器渲染  # vue服务端渲染demo  # 基于vue-ssr服务端渲染入门详解  # 详解如何使用Vue2做服务端渲染  # 详解基于vue的服务端渲染框架NUXT  # vue服务端渲染的实例代码  # 详解vue服务端渲染浏览器端缓存(keep-alive)  # vue ssr服务端渲染(小白解惑)  # vue服务端渲染添加缓存的方法  # vue的ssr服务端渲染示例详解  # Vue3+TypeScript+Vite服务端渲染项目的实现  # 服务端  # 新建一个  # 可以看到  # 加载  # 客户端  # 后端  # 我也  # 看了  # 又是  # 的说  # 我对  # 说到  # 然后再  # 写了  # 暂时没有  # 正常使用  # 时就  # 在后面  # 有两种  # 到此 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在新浪SAE免费搭建个人博客?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  JS弹性运动实现方法分析  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  如何在腾讯云服务器上快速搭建个人网站?  详解阿里云nginx服务器多站点的配置  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel如何使用模型观察者?(Observer代码示例)  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  北京企业网站设计制作公司,北京铁路集团官方网站?  Linux网络带宽限制_tc配置实践解析【教程】  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  网站制作软件有哪些,制图软件有哪些?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  如何快速完成中国万网建站详细流程?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel如何使用Livewire构建动态组件?(入门代码)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  高端网站建设与定制开发一站式解决方案 中企动力  微信推文制作网站有哪些,怎么做微信推文,急?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  如何在万网自助建站中设置域名及备案?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  网站制作报价单模板图片,小松挖机官方网站报价?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Java垃圾回收器的方法和原理总结  如何利用DOS批处理实现定时关机操作详解  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何用搬瓦工VPS快速搭建个人网站?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】