开篇N问

SSR解决了什么问题?SSR存在那些问题?SSR优点缺点是什么如何使用以及原理

自我总结了有如下优势

-  SSR利于seo优化,因为实现了在node中解析vue,将实例渲染成一个字符串直接返回给客户端,
- 而spa页面只有一个空标签,内容是通过js动态渲染的,所以传统SPA单页页不利于SEO,搜索引擎无法爬取页面中的内容
- SSR页面在服务端渲染完成之后返回给客户端,所以可以有更快的首屏到达时间

而缺陷也很明显

- SSR 会占用服务器内存(可以使用一些缓存来减少压力)

- 浏览器一些API无法使用,例如钩子函数只有beforeCreate created,因为服务器不知dom什么时候渲染完

- 我们做项目的某些钩子就不能使用了,原因为了和服务端渲染保持一致,例如将ajax请求放在created中而不放在mouted中

基本原理

通过一份vue项目代码打包出两份代码,服务端使用 node渲染打包后的结果返回给客户端, 是一个字符串,没有交互,所以需要另一份打包的结果插入页面中,页面就有了交互功能

基本实现思路

通过一份vue项目代码打包出2份代码  ---> 使用node渲染打包后的结果 ( 字符串)--> 然后把另一份代码(客户端js)插入到页面

- 通过vue-servre-renderer 生成实例和模板成字符串,然后渲染

server 基本代码如下

const Vue = require('vue');
const VueServerRenderer = require('vue-server-renderer')
const Koa = require('koa')
const Router = require('@koa/router');
const fs = require('fs') let vm = new Vue({
data () {
return {
name: 'zq'
}
},
template: '<div style="color:red">{{name}}</div>'
}) // 把模板temp.html中的文件读取,然后将渲染的vue实例插入到模板
const template = fs.readFileSync('./temp.html', 'utf8');
// console.log(template) // 将字符串插入模板中
let renderer = VueServerRenderer.createRenderer({template}) let app = new Koa();
let router = new Router(); router.get('/', async (ctx) => {
ctx.body = await renderer.renderToString(vm);
}) app.use(router.routes())// 注册路由
app.listen(3000)

然后路由和 vuex管理的数据都需要单独生成一个实例 来保证每个客户端都是请求到的新实例

以上只是基本原理

我们还是需要使用webpack来打包配置

VUE-SSR原理和使用的更多相关文章

  1. 理解vue ssr原理,自己搭建简单的ssr框架

    前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口.Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些 ...

  2. vue SSR : 原理(一)

    前言: 由于vue 单页面对seo搜索引擎不支持,vue官网给了一个解决方案是ssr服务端渲染来解决seo这个问题,最近看了很多关于ssr的文章, 决定总结下: 参考博客:从0开始,搭建Vue2.0的 ...

  3. 转载一篇好理解的vue ssr文章

    转载:原文链接https://www.86886.wang/detail/5b8e6081f03d630ba8725892,谢谢作者的分享 前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟 ...

  4. Vue(SPA) WebPack模块化打包、SEO优化(Vue SSR服务端同构直出)、全浏览器兼容完整解决方案

    白驹过隙,时光荏苒 大概去年这个时候写了angular 结合webpack的一套前端方案,今年此时祭出vue2结合webpack的一套前端方案. 明年的这个时候我又是在做什么... 读在最前面: 1. ...

  5. Vue SSR的渲染性能

    一.前言 前端技术年年有新宠,Vue.js 2.0以其轻量级.渐进式.简洁的语法在MVVM框架中脱颖而出,一经推出便很受业界青睐. 为了提高首屏渲染速度 缓存+直出 是必不可少的.在Vue 1× 时代 ...

  6. Vue SSR不可不知的问题

    Vue SSR不可不知的问题 本文主要介绍Vue SSR(vue服务端渲染)的应用场景,开发中容易遇到的一些问题,提升ssr性能的方法,以及ssr的安全性问题. ssr的应用场景 1.SEO需求 SE ...

  7. vue路由原理剖析

    单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面, 实现这一点主要是两种方式: 1.Hash: 通过改变hash值 2.History: 利用history对象新特性(详情可出门左拐见:  ...

  8. Vue SSR 配合Java的Javascript引擎j2v8实现服务端渲染2创建Vue2+webpack4项目

    前提 安装好nodejs并配置好环境变量,最好是 node10,https://nodejs.org/en/download/ 参考我之前的文章 debian安装nodejs Yarn &&a ...

  9. Vue SSR常见问题、异常处理以及优化方案

    本文主要介绍Vue SSR(vue服务端渲染)的应用场景,开发中容易遇到的一些问题,提升ssr性能的方法,以及ssr的安全性问题. SSR的应用场景 1.SEO需求 SEO(Search Engine ...

  10. vue 编译原理 简介

    来源 tinycompile 关于vue的内部原理其实有很多个重要的部分,变化侦测,模板编译,virtualDOM,整体运行流程等. 之前写过一篇<深入浅出 - vue变化侦测原理> 讲了 ...

随机推荐

  1. Linux swap分区操作

    swap交换分区是系统RAM的补充,swap 分区支持虚拟内存.当没有足够的 RAM 保存系统处理的数据时,会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止 ...

  2. java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

    原来是mysql5.X,升级到8.X,连接数据库就报错: Unable to load authentication plugin 'caching_sha2_password'. 原因分析: 可能为 ...

  3. ElasticSearch7.3 学习之倒排索引揭秘及初识分词器(Analyzer)

    一.倒排索引 1. 构建倒排索引 例如说有下面两个句子doc1,doc2 doc1:I really liked my small dogs, and I think my mom also like ...

  4. IIS 虚拟目录 VS 站点

    1.虚拟目录是站点的一个子目录,虚拟目录是建立在站点下面的. 2.一个站点下面,可以建立多个虚拟目录.各个虚拟目录都是以虚拟目录名称来进行区分. 3.新建的独立站点就和IIS中的默认站点一样,各个站点 ...

  5. 报错———http://mybatis.org/dtd/mybatis-3-mapper.dtd 报红解决方案

    初次使用mybatis时,下面红线上的地址报红. 解决方法是:将http://mybatis.org/dtd/mybatis-3-mapper.dtd拷贝.添加到下面标记处.

  6. Nacos+OpenFegin正确调用服务的姿势!

    Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一个是 Feign Client.之前的文章咱们介绍过 Rest Template 的调用方式,主要是通过 Ribbon ...

  7. ssh-ssl编译安装

    升级前准备 #下载所需依赖包#yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-d ...

  8. ArcGIS Server 禁用/rest/services路径(禁用服务目录)

    ArcGIS Server服务目录(路径如:http://<hostname>:6080/arcgis/rest/services)默认可以不需要登陆直接打开.效果如下图. ArcGIS服 ...

  9. metinfo 6.0 任意文件读取漏洞

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.点击新建项目按钮,弹出对画框中选择(C:\ ...

  10. CVE-2017-12635(Couchdb垂直权限绕过漏洞)

    简介 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapRedu ...