当前位置:首页 > VUE

实现 vue ssr

2026-02-09 23:09:03VUE

实现 Vue SSR 的基本步骤

安装必要依赖
需要安装 vue-server-rendererexpressvue。确保 vuevue-server-renderer 版本一致。

npm install vue vue-server-renderer express

创建 Vue 实例和服务器入口文件

新建 app.js 文件,创建 Vue 实例。

const Vue = require('vue')
const app = new Vue({
  template: '<div>Hello SSR</div>'
})

新建 server.js 文件,配置 Express 服务器和 SSR 渲染器。

const express = require('express')
const { createRenderer } = require('vue-server-renderer')
const app = require('./app')

const server = express()
const renderer = createRenderer()

server.get('*', (req, res) => {
  renderer.renderToString(app, (err, html) => {
    if (err) {
      res.status(500).end('Internal Server Error')
      return
    }
    res.end(html)
  })
})

server.listen(8080)

使用 HTML 模板

创建 index.template.html 文件作为 HTML 模板。

<!DOCTYPE html>
<html>
<head>
  <title>Vue SSR</title>
</head>
<body>
  <!--vue-ssr-outlet-->
</body>
</html>

修改 server.js,引入模板文件。

实现 vue ssr

const fs = require('fs')
const renderer = createRenderer({
  template: fs.readFileSync('./index.template.html', 'utf-8')
})

处理客户端激活

创建客户端入口文件 entry-client.js

import { createApp } from './app'

const app = createApp()
app.$mount('#app')

创建服务器入口文件 entry-server.js

import { createApp } from './app'

export default context => {
  return new Promise((resolve, reject) => {
    const app = createApp()
    resolve(app)
  })
}

配置 Webpack

安装 Webpack 相关依赖。

实现 vue ssr

npm install webpack webpack-cli vue-loader vue-template-compiler babel-loader @babel/core @babel/preset-env css-loader -D

创建 webpack.client.config.jswebpack.server.config.js 分别配置客户端和服务端打包。

启动脚本配置

package.json 中添加启动脚本。

{
  "scripts": {
    "build": "npm run build:client && npm run build:server",
    "build:client": "webpack --config webpack.client.config.js",
    "build:server": "webpack --config webpack.server.config.js",
    "start": "node server.js"
  }
}

注意事项

确保服务器端和客户端代码避免共享状态,避免单例模式。

处理异步数据预取时,可以在路由组件中暴露自定义静态方法。

对于复杂项目,建议使用 Nuxt.js 简化 SSR 配置。

标签: vuessr
分享给朋友:

相关文章

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提…

tabbar 实现 vue

tabbar 实现 vue

在 Vue 中实现 TabBar 功能可以通过多种方式完成,以下是几种常见的方法: 使用 Vue Router 结合自定义组件 创建一个自定义的 TabBar 组件,结合 Vue Route…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { retur…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设…