当前位置:首页 > VUE

vue预渲染实现

2026-03-10 05:54:58VUE

Vue 预渲染的实现方法

Vue 预渲染(Prerendering)是一种在构建阶段生成静态 HTML 文件的技术,适用于内容变化不频繁的页面,能显著提升首屏加载速度和 SEO 效果。

使用 vue-cli-plugin-prerender-spa

安装插件:

vue add prerender-spa

配置 vue.config.js

module.exports = {
  pluginOptions: {
    prerenderSpa: {
      routes: ['/', '/about', '/contact'],
      rendererOptions: {
        headless: false // 调试时可开启
      }
    }
  }
}

routes 指定需要预渲染的路由路径,构建后会为每个路由生成对应的 index.html 文件。

vue预渲染实现

使用 webpack 插件 prerender-spa-plugin

安装依赖:

npm install prerender-spa-plugin --save-dev

配置 vue.config.js

vue预渲染实现

const PrerenderSPAPlugin = require('prerender-spa-plugin')
const path = require('path')

module.exports = {
  configureWebpack: {
    plugins: [
      new PrerenderSPAPlugin({
        staticDir: path.join(__dirname, 'dist'),
        routes: ['/', '/product'],
        postProcess(renderedRoute) {
          renderedRoute.html = renderedRoute.html.replace(
            /<script (.*?)>/g,
            ''
          )
          return renderedRoute
        }
      })
    ]
  }
}

通过 postProcess 可对生成的 HTML 进行后处理,例如移除脚本标签。

动态路由预渲染

对于动态路由(如 /product/:id),需在配置中明确列出所有可能的路由:

routes: [
  '/product/1',
  '/product/2',
  '/product/3'
]

或通过代码动态生成路由列表。

预渲染与 SSR 的区别

  • 预渲染:构建时生成静态 HTML,适合内容不变的页面(如营销页)。
  • SSR:每次请求时动态生成 HTML,适合内容频繁变化的页面(如用户仪表盘)。

注意事项

  • 预渲染的页面不会执行客户端 JavaScript,需确保关键内容已直接包含在 HTML 中。
  • 动态数据(如 API 请求)需通过 asyncData 或类似机制在构建阶段获取。
  • 避免在预渲染页面中使用 window 等浏览器特有对象,可通过 process.client 判断环境。

验证预渲染效果

构建后检查 dist 目录,每个预渲染路由应生成独立的 index.html 文件。使用静态服务器(如 serve)测试页面是否直接显示内容而无加载延迟。

标签: vue
分享给朋友:

相关文章

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue 实现递归

vue 实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据,例如菜单、评论列表或文件目录。以下是实现递归组件的关键步骤: 定义递归组件 递归组件需要设置 name 属性,以便在模…

vue 实现拖动

vue 实现拖动

Vue 实现拖动的几种方法 在Vue中实现拖动功能可以通过多种方式,包括原生HTML5的拖放API、第三方库如vuedraggable等。以下是几种常见的实现方法: 使用HTML5拖放API HTM…

实现vue table

实现vue table

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以快速渲染表格数据。在模板中定义表格结构,通过数据绑定动态生成行和列。 <template> <tabl…

vue模版实现

vue模版实现

Vue 模板实现方法 Vue 模板是 Vue.js 的核心特性之一,用于声明式地将 DOM 绑定至底层 Vue 实例的数据。以下是几种常见的 Vue 模板实现方式: 单文件组件(SFC) 使用 .v…