当前位置:首页 > VUE

vue SSG实现

2026-03-07 01:37:01VUE

Vue SSG 实现方法

Vue 的静态站点生成(SSG)可以通过多种工具和框架实现,以下是一些常见的方法和步骤:

使用 Nuxt.js

Nuxt.js 是一个基于 Vue 的框架,内置了 SSG 支持。通过简单的配置即可生成静态站点。

安装 Nuxt.js:

npx create-nuxt-app my-ssg-project

nuxt.config.js 中配置 targetstatic

export default {
  target: 'static'
}

运行生成命令:

npm run generate

生成的静态文件会保存在 dist 目录中,可以直接部署到任何静态托管服务。

使用 VitePress

VitePress 是一个基于 Vite 和 Vue 的静态站点生成器,适合文档类站点。

安装 VitePress:

npm install -D vitepress

创建配置文件 .vitepress/config.js

module.exports = {
  title: 'My SSG Site',
  description: 'A static site generated with VitePress'
}

运行开发服务器:

npx vitepress dev

生成静态文件:

npx vitepress build

使用 VuePress

VuePress 是另一个流行的 Vue 静态站点生成器,适合文档和博客。

安装 VuePress:

npm install -D vuepress

创建配置文件 .vuepress/config.js

module.exports = {
  title: 'My SSG Site',
  description: 'A static site generated with VuePress'
}

运行生成命令:

npx vuepress build

手动配置 Vue 项目实现 SSG

对于自定义需求,可以手动配置 Vue 项目实现 SSG。

安装 @vue/server-renderer

npm install @vue/server-renderer

创建服务端入口文件 src/entry-server.js

import { renderToString } from '@vue/server-renderer'
import { createApp } from './main'

export async function render(url, manifest) {
  const { app, router } = createApp()
  await router.push(url)
  await router.isReady()
  const ctx = {}
  const html = await renderToString(app, ctx)
  return [html, ctx]
}

创建生成脚本 scripts/generate.js

const fs = require('fs')
const path = require('path')
const { render } = require('../src/entry-server')

const routes = ['/', '/about', '/contact']

async function generate() {
  for (const route of routes) {
    const [html] = await render(route)
    const fileName = route === '/' ? 'index.html' : `${route.slice(1)}.html`
    const filePath = path.join(__dirname, '../dist', fileName)
    fs.mkdirSync(path.dirname(filePath), { recursive: true })
    fs.writeFileSync(filePath, html)
  }
}

generate()

运行生成命令:

node scripts/generate.js

部署生成的静态站点

生成的静态文件可以部署到各种托管服务:

vue SSG实现

  • Netlify
  • Vercel
  • GitHub Pages
  • AWS S3
  • 任何支持静态文件的服务器

每种方法都有其优势和适用场景,Nuxt.js 和 VuePress 提供了更多开箱即用的功能,而手动配置则提供了更大的灵活性。

标签: vueSSG
分享给朋友:

相关文章

vue实现星星

vue实现星星

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

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现多选

vue实现多选

Vue 实现多选功能 在 Vue 中实现多选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定到一个数组,可以实现多选功能。适用于复选框组(…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…

vue最佳实现

vue最佳实现

Vue 最佳实践 组件设计 组件应遵循单一职责原则,每个组件只负责一个功能模块。命名采用 PascalCase(如 UserProfile.vue),模板中使用 kebab-case(如 <us…