当前位置:首页 > VUE

vue如何实现ssr

2026-01-18 10:32:58VUE

Vue 实现 SSR 的基本原理

Vue 的 SSR(Server-Side Rendering)核心思想是将组件在服务器端渲染为 HTML 字符串,直接发送给浏览器,再由客户端激活(Hydration)为可交互的 SPA。这种方式能提升首屏加载速度,改善 SEO。

基础实现步骤

安装必要依赖:

npm install vue vue-server-renderer express

创建通用入口文件(app.js):

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

export function createApp() {
  const app = new Vue({
    render: h => h(App)
  })
  return { app }
}

服务器端入口(server.js):

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

server.get('*', (req, res) => {
  const { app } = require('./app')
  renderer.renderToString(app, (err, html) => {
    if (err) res.status(500).end('Internal Server Error')
    res.end(`
      <!DOCTYPE html>
      <html>
        <head><title>SSR</title></head>
        <body>${html}</body>
      </html>
    `)
  })
})

server.listen(8080)

使用 Nuxt.js 简化流程

对于生产环境,推荐使用 Nuxt.js 框架:

安装 Nuxt:

vue如何实现ssr

npx create-nuxt-app my-project

配置 nuxt.config.js

export default {
  ssr: true, // 启用 SSR 模式
  target: 'server' // 默认值即为 server
}

启动开发服务器:

npm run dev

关键注意事项

确保组件代码是通用代码,避免在 beforeCreatecreated 生命周期中使用浏览器特有 API,可通过 process.client 判断环境:

vue如何实现ssr

if (process.client) {
  // 只在客户端执行的代码
}

路由应使用 vue-router 的通用模式,在服务器端和客户端分别创建路由实例。

数据预取方案

使用 asyncData 方法(Nuxt)或 vuex 进行服务器端数据预取:

export default {
  async asyncData({ params }) {
    const data = await fetchData(params.id)
    return { data }
  }
}

构建与部署

Nuxt 项目构建命令:

npm run build

生成的 .nuxt 目录包含 SSR 所需的服务器端 bundle,需配合 Node 服务器运行。

性能优化

  • 使用 lru-cache 缓存渲染结果
  • 实施组件级缓存
  • 开启 HTTP/2 服务器推送
  • 使用 @vue/server-renderer 的流式渲染(Vue 3)

以上方案可根据项目需求组合使用,Nuxt.js 已内置多数优化配置。

标签: 如何实现vue
分享给朋友:

相关文章

vue实现预览

vue实现预览

Vue实现文件预览的方法 使用Vue实现文件预览功能可以通过多种方式完成,具体取决于文件类型(图片、PDF、视频等)。以下是几种常见文件类型的实现方案。 图片预览 通过<input type=…

vue实现前端分离

vue实现前端分离

Vue 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使…

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-…