vue-ssr

作者: 微_______凉 | 来源:发表于2020-07-15 10:12 被阅读0次

    服务端渲染

    把vue实例渲染成html字符串返回,在前端激活为交互程序

    优点
    • 利于seo
    • 首屏内容到达时间

    服务端知识

    npm i express -S
    
    基础Http服务

    1.创建 express实例 server
    2.监听端口
    3.编写路由器 处理不同URL请求

    基础实现

    使用渲染器将vue渲染成字符串返回

    npm i vue-server-renderer
    
    步骤

    1.创建vue实例
    2.获取渲染器实例
    3.用渲染器渲染vue实例

    const app = new Vue({
      template: `<div>Hello World</div>`
    })
    
    // 第 2 步:创建一个 renderer
    const renderer = require('vue-server-renderer').createRenderer()
    
    // 第 3 步:将 Vue 实例渲染为 HTML
    renderer.renderToString(app, (err, html) => {
      if (err) throw err
      console.log(html)
      // => <div data-server-rendered="true">Hello World</div>
    })
    
    // 在 2.5.0+,如果没有传入回调函数,则会返回 Promise:
    renderer.renderToString(app).then(html => {
      console.log(html)
    }).catch(err => {
      console.error(err)
    })
    
    缺点

    ssr相关考虑

    优点:
    • 利于seo
    • 利于首屏优化
    缺点:
    • 实现比较麻烦
      每个app 都是一个vue实例,那么多个页面就要创建多个,比较贵
      从利于seo的方面来说,spa可以做些备选方案,比如分离首页。
      ssr是spa与传统页面开发的折中方式,一定程度上解决了首页加载慢与seo的问题。
    • 环境问题
      一套代码两个环境执行,会出现一些不可避免的问题,因为在node中是没有window对象的,所以生命周期函数执行时需要先进行环境的判断,不然就会报错。
    • 服务端数据获取
      官方方案使用Vuex在服务端预获取数据。 在服务端添加vue钩子函数,获取数据后,将数据保存在vuex的store结构中,同时渲染页面,但是这时候的this指向的是服务端的this,会不会有些异常错误
    • 路由
      正常在客户端使用路由可以用hash/history模式,但在ssr中,路由需使用history模式,原因是hash提交不到服务器上
    • 异常处理
      官方的处理是抛出500页面页面,体验不好

    好好学习,天天向上。

    相关文章

      网友评论

          本文标题:vue-ssr

          本文链接:https://www.haomeiwen.com/subject/dgzfhktx.html