当前位置:首页 > 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 实现评论编辑功能 数据绑定与表单结构 使用 v-model 双向绑定评论内容到表单输入框,确保编辑时能显示原内容并同步修改。示例模板结构: <template> <di…

vue 实现排序

vue 实现排序

Vue 实现排序的方法 使用计算属性实现排序 通过计算属性对数组进行排序,可以保持原始数据不变。示例代码展示了如何对列表按名称升序排序: <template> <div>…

tabbar 实现 vue

tabbar 实现 vue

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

vue实现 treegrid

vue实现 treegrid

Vue 实现 TreeGrid 的方法 使用现成组件库 Element UI、Ant Design Vue 等流行组件库提供了现成的 TreeTable/TreeGrid 组件,可直接使用。 Ele…

vue实现滚屏

vue实现滚屏

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

vue实现标注

vue实现标注

Vue 实现标注功能的方法 使用 Vue 实现标注功能可以通过多种方式实现,以下介绍几种常见的方法: 1. 使用 HTML5 Canvas 实现标注 Canvas 提供了强大的绘图能力,适合实现复…