全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

前言

首先来讲一下服务端渲染,直白的说就是在服务端拿数据进行解析渲染,直接生成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服务端渲染项目的实现  # 服务端  # 新建一个  # 可以看到  # 加载  # 客户端  # 后端  # 我也  # 看了  # 又是  # 的说  # 我对  # 说到  # 然后再  # 写了  # 暂时没有  # 正常使用  # 时就  # 在后面  # 有两种  # 到此 


相关文章: 如何通过远程VPS快速搭建个人网站?  C++中引用和指针有什么区别?(代码说明)  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Android使用GridView实现日历的简单功能  宝塔Windows建站如何避免显示默认IIS页面?  建站主机无法访问?如何排查域名与服务器问题  如何零基础在云服务器搭建WordPress站点?  如何配置IIS站点权限与局域网访问?  5种Android数据存储方式汇总  如何在阿里云高效完成企业建站全流程?  C#怎么创建控制台应用 C# Console App项目创建方法  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何通过FTP服务器快速搭建网站?  中山网站推广排名,中山信息港登录入口?  建站之星安装后如何自定义网站颜色与字体?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  招贴海报怎么做,什么是海报招贴?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  如何快速辨别茅台真假?关键步骤解析  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  已有域名如何快速搭建专属网站?  ,怎么在广州志愿者网站注册?  建站之星微信建站一键生成小程序+多端营销系统  如何快速搭建高效可靠的建站解决方案?  建站主机选购指南:核心配置与性价比推荐解析  如何在自有机房高效搭建专业网站?  如何用景安虚拟主机手机版绑定域名建站?  自助网站制作软件,个人如何自助建网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何通过.red域名打造高辨识度品牌网站?  如何用花生壳三步快速搭建专属网站?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何选择香港主机高效搭建外贸独立站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何通过西部数码建站助手快速创建专业网站?  Swift中swift中的switch 语句  建站之星官网登录失败?如何快速解决?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  宝塔建站无法访问?如何排查配置与端口问题?  建站主机如何选?性能与价格怎样平衡?  如何选择适配移动端的WAP自助建站平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。