当前位置:首页 > 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实现xterm

vue实现xterm

在 Vue 中集成 Xterm.js Xterm.js 是一个基于 TypeScript 的前端终端组件库,可用于在浏览器中实现终端功能。以下是在 Vue 项目中集成 Xterm.js 的详细步骤。…

vue实现滚屏

vue实现滚屏

实现滚屏的基本方法 在Vue中实现滚屏效果可以通过多种方式完成,常见的有原生JavaScript滚动方法、第三方库或CSS动画。以下是几种常见实现方式: 使用window.scrollTo或Elem…

vue实现选择框

vue实现选择框

Vue 实现选择框的方法 Vue 中可以通过多种方式实现选择框(下拉框),包括原生 HTML 的 <select> 元素结合 Vue 的数据绑定,或者使用第三方 UI 库如 Element…

vue实现tab功能

vue实现tab功能

Vue 实现 Tab 功能的方法 使用动态组件和 v-if 指令 通过 v-if 或 v-show 控制不同 Tab 内容的显示与隐藏。这种方法适合简单的 Tab 切换需求。 <tem…

vue缺省页实现

vue缺省页实现

Vue 缺省页实现方法 使用条件渲染控制显示 通过v-if或v-show指令控制缺省页的显示。当数据为空时展示缺省组件,否则显示正常内容。 <template> <div>…

vue实现总金额

vue实现总金额

Vue 实现总金额计算 在 Vue 中实现总金额计算通常涉及数据绑定、计算属性和方法的使用。以下是几种常见的实现方式: 使用计算属性 计算属性是 Vue 中最适合处理动态计算的特性之一。通过计算属性…