当前位置:首页 > VUE

vue配合实现ssr

2026-01-16 23:57:44VUE

Vue 配合实现 SSR(服务端渲染)

Vue.js 支持服务端渲染(SSR),通过将应用在服务器端生成 HTML 发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和注意事项。

基础架构

使用 vue-server-renderer 和 Node.js 服务器(如 Express)搭建 SSR 环境。核心流程包括:

  • 在服务器端创建 Vue 实例。
  • 使用 renderToString 将 Vue 实例渲染为 HTML 字符串。
  • 将生成的 HTML 注入到模板中返回给客户端。

代码示例

安装依赖:

npm install vue vue-server-renderer express

服务器端代码(Express):

const express = require('express')
const { createRenderer } = require('vue-server-renderer')
const Vue = require('vue')

const app = express()
const renderer = createRenderer()

app.get('*', async (req, res) => {
  const vm = new Vue({
    template: '<div>SSR Content: {{ message }}</div>',
    data: { message: 'Hello SSR' }
  })

  try {
    const html = await renderer.renderToString(vm)
    res.send(`
      <!DOCTYPE html>
      <html>
        <head><title>Vue SSR</title></head>
        <body>${html}</body>
      </html>
    `)
  } catch (err) {
    res.status(500).end('Internal Server Error')
  }
})

app.listen(3000)

客户端激活

为确保 Vue 在客户端接管静态 HTML 并变为动态应用,需在客户端挂载相同的 Vue 实例:

vue配合实现ssr

import Vue from 'vue'
import App from './App.vue'

new Vue({
  el: '#app',
  render: h => h(App)
})

注意事项

  • 数据预取:在服务器端预先获取异步数据,可通过 asyncDataserverPrefetch 实现。
  • 状态管理:使用 Vuex 共享服务器和客户端的状态,避免数据不一致。
  • 构建配置:需分别配置客户端和服务端的 Webpack 入口文件。
  • 避免全局变量:确保代码兼容 Node.js 环境,避免使用 windowdocument

进阶优化

  • 代码分割:利用 import() 动态加载组件,减少初始加载体积。
  • 缓存策略:对渲染结果进行缓存,提升服务器性能。
  • 流式渲染:使用 renderToStream 逐步发送 HTML,加快首字节时间。

通过以上方法,Vue SSR 可显著提升应用性能和 SEO 效果,适用于内容密集型场景。

标签: vuessr
分享给朋友:

相关文章

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue实现frame

vue实现frame

Vue 中实现 iframe 的方法 在 Vue 中可以通过直接使用 <iframe> 标签或动态绑定 src 属性来实现 iframe 功能。 基本用法 <template&g…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…