VUE-SSR原理和使用
开篇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原理和使用的更多相关文章
- 理解vue ssr原理,自己搭建简单的ssr框架
前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口.Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些 ...
- vue SSR : 原理(一)
前言: 由于vue 单页面对seo搜索引擎不支持,vue官网给了一个解决方案是ssr服务端渲染来解决seo这个问题,最近看了很多关于ssr的文章, 决定总结下: 参考博客:从0开始,搭建Vue2.0的 ...
- 转载一篇好理解的vue ssr文章
转载:原文链接https://www.86886.wang/detail/5b8e6081f03d630ba8725892,谢谢作者的分享 前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟 ...
- Vue(SPA) WebPack模块化打包、SEO优化(Vue SSR服务端同构直出)、全浏览器兼容完整解决方案
白驹过隙,时光荏苒 大概去年这个时候写了angular 结合webpack的一套前端方案,今年此时祭出vue2结合webpack的一套前端方案. 明年的这个时候我又是在做什么... 读在最前面: 1. ...
- Vue SSR的渲染性能
一.前言 前端技术年年有新宠,Vue.js 2.0以其轻量级.渐进式.简洁的语法在MVVM框架中脱颖而出,一经推出便很受业界青睐. 为了提高首屏渲染速度 缓存+直出 是必不可少的.在Vue 1× 时代 ...
- Vue SSR不可不知的问题
Vue SSR不可不知的问题 本文主要介绍Vue SSR(vue服务端渲染)的应用场景,开发中容易遇到的一些问题,提升ssr性能的方法,以及ssr的安全性问题. ssr的应用场景 1.SEO需求 SE ...
- vue路由原理剖析
单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面, 实现这一点主要是两种方式: 1.Hash: 通过改变hash值 2.History: 利用history对象新特性(详情可出门左拐见: ...
- Vue SSR 配合Java的Javascript引擎j2v8实现服务端渲染2创建Vue2+webpack4项目
前提 安装好nodejs并配置好环境变量,最好是 node10,https://nodejs.org/en/download/ 参考我之前的文章 debian安装nodejs Yarn &&a ...
- Vue SSR常见问题、异常处理以及优化方案
本文主要介绍Vue SSR(vue服务端渲染)的应用场景,开发中容易遇到的一些问题,提升ssr性能的方法,以及ssr的安全性问题. SSR的应用场景 1.SEO需求 SEO(Search Engine ...
- vue 编译原理 简介
来源 tinycompile 关于vue的内部原理其实有很多个重要的部分,变化侦测,模板编译,virtualDOM,整体运行流程等. 之前写过一篇<深入浅出 - vue变化侦测原理> 讲了 ...
随机推荐
- Linux swap分区操作
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存.当没有足够的 RAM 保存系统处理的数据时,会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止 ...
- java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.
原来是mysql5.X,升级到8.X,连接数据库就报错: Unable to load authentication plugin 'caching_sha2_password'. 原因分析: 可能为 ...
- ElasticSearch7.3 学习之倒排索引揭秘及初识分词器(Analyzer)
一.倒排索引 1. 构建倒排索引 例如说有下面两个句子doc1,doc2 doc1:I really liked my small dogs, and I think my mom also like ...
- IIS 虚拟目录 VS 站点
1.虚拟目录是站点的一个子目录,虚拟目录是建立在站点下面的. 2.一个站点下面,可以建立多个虚拟目录.各个虚拟目录都是以虚拟目录名称来进行区分. 3.新建的独立站点就和IIS中的默认站点一样,各个站点 ...
- 报错———http://mybatis.org/dtd/mybatis-3-mapper.dtd 报红解决方案
初次使用mybatis时,下面红线上的地址报红. 解决方法是:将http://mybatis.org/dtd/mybatis-3-mapper.dtd拷贝.添加到下面标记处.
- Nacos+OpenFegin正确调用服务的姿势!
Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一个是 Feign Client.之前的文章咱们介绍过 Rest Template 的调用方式,主要是通过 Ribbon ...
- ssh-ssl编译安装
升级前准备 #下载所需依赖包#yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-d ...
- ArcGIS Server 禁用/rest/services路径(禁用服务目录)
ArcGIS Server服务目录(路径如:http://<hostname>:6080/arcgis/rest/services)默认可以不需要登陆直接打开.效果如下图. ArcGIS服 ...
- metinfo 6.0 任意文件读取漏洞
一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.点击新建项目按钮,弹出对画框中选择(C:\ ...
- CVE-2017-12635(Couchdb垂直权限绕过漏洞)
简介 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapRedu ...