利用VitePress部署静态网站

这篇具有很好参考价值的文章主要介绍了利用VitePress部署静态网站。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

之前看到过很多这样的静态网站,基于Markdown格式,风格基本统一,而且这种网站非常常见,例如:
利用VitePress部署静态网站,Vite,vitepress,vue,静态

例如,以下的几个网址:

  • Java HashMap 源码分析 | 未读代码
  • BAT大厂面试题与全栈知识体系结合 | Java 全栈知识体系
  • 3.1 HTTP 常见面试题 | 小林coding
    以及Vue生态中的各个官方文档,都是这样的风格:
  • 简介 | Vue.js
  • 介绍 | Vue Router
  • 简介 | Pinia

当时好奇这种网站是怎么生成的,但是没有深究。
今天了解到了Vue生态链中有一个叫做静态站点生成工具——VuePress和VitePress。
于是来认真学习一下Vue的静态站点生成工具。

VuePress与VitePress

VuePress和VitePress都是基于Markdown和Vue的静态网站生成工具。
VuePress1.x 基于 Vue 2 和 webpack。
而VitePress 是 VuePress 的精神继承者,借助 Vue 3 和 Vite,VitePress 提供了明显更好的 DX、更好的生产性能、更精致的默认主题以及更灵活的定制 API。
目前VuePress2.x 正在Beta阶段,支持Vue3和Vite。
VitePress 和 VuePress 之间的 API 差异主要在于主题和定制。如果您使用带有默认主题的 VuePress 1,那么迁移到 VitePress 应该相对简单。
鉴于Vue3会是以后的主流,而且Vue2也 将于 2023 年 12 月 31 日停止维护,因此Vue官方推荐使用VitePress。
毕竟VitePress目前处于初期,一些插件、主题等自定义配置没有VuePress丰富(毕竟现在的Vite在占用率照着webpack还有一定的差距。)
VuePress和VitePress的原理与使用方式都是相同的,会了其中一个,另一个自然也就会了

介绍

官网VitePress | Vite & Vue Powered Static Site Generator
VitePress是Vue团队中一位外国人负责开发的,因此官网没有中文文档,但是有一个翻译过来的网站VitePress中文官网
介绍一下Vite,VitePress就是将你的Markdown文档生成HTML页面,同时还可以通过主题的方式,对生成的页面样式做个性化设置。使得你只需要专注于书写MarkDown文本就好了,无需过多的关注构建的过程

基本使用

  1. 安装开发依赖
npm install -D vitepress
  1. 在项目根目录创建docs/目录,创建一个index.md文档,编写内容。
# 测试文本
## 这是二级标题
[这是一个链接](http://baidu.com)

  1. 在package.json中注册VitePress的运行脚本
{
  ...
  "scripts": {
    "docs:dev": "vitepress dev docs",
    "docs:build": "vitepress build docs",
    "docs:preview": "vitepress preview docs"
  },
  ...
}
  1. 运行命令,构建项目
npm run docs:dev

项目会在本地启动,预览即可。
利用VitePress部署静态网站,Vite,vitepress,vue,静态

这样,VitePress的基本使用就完成了。

原理和配置

原理

VitePress会以项目下的docs目录作为服务器根目录,你只需要将你自己的MarkDown文档放在docs目录下
docs的项目结构

.
├─ docs
│  ├─ .vitepress
│  │  └─ config.js
│  ├─ examples-test.md
│  ├─ examples.md
│  └─ index.md

项目启动后,会在docs目录下生成一个.vitepress的目录,此目录用来存放VitePress相关的配置文件
利用VitePress部署静态网站,Vite,vitepress,vue,静态

VitePress会将docs下的所有的markdown文档编译成html文件,这个HTML文件的路径与markdown文档同级目录下(逻辑上的原理,真实并不会让你看到生成的HTML文件)
因此,docs目录作为VitePress的根目录,docs下有一个index.md,就会被编译成index.html,我们只需要访问根路径/就可以访问到index.html;
有一个文档docs/pages/api.md,那么我们只需要访问/pages/api/就可以访问到这个页面。

配置

.vitepress目录下,新建一个config.js,作为VitePress的配置文件。
该文件导出一个JS对象。

export default {
	title:' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
}

关于有哪些配置,可以看官网——站点配置和API,说几个常用的配置项:

配置项 说明
title 网站的标题,即浏览器标签页上的文本
description 网站的描述信息,用来做SEO优化
lang 站点的语言类型

主题配置

主题配置就是对站点的页面样式做出配置。
所有的主题配置,都写在config.js中的themeConfig节点下

export default {
	title: '这是我的网站',
	description:'测试VitePress网站',
	themeConfig:{
		// ....
	}
}

导航

就是网站的这一部分,看一下网站的导航怎么配置。
利用VitePress部署静态网站,Vite,vitepress,vue,静态

在config.js中,nav属性是一个数组,数组中的每个元素就是一个导航项。

export default {
    title:' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
    themeConfig: {
        nav: [
            { text: 'item-1', link: '/start'},
            { text: 'itme-2', link: '/Pinia'},
            { text: 'itme-3', link: '/test/abc'},
        ]
    }
}

利用VitePress部署静态网站,Vite,vitepress,vue,静态

下拉框样式

利用VitePress部署静态网站,Vite,vitepress,vue,静态
导航链接也可以是下拉菜单。为此,请在链接选项上设置items键。

export default {
    title:' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
    themeConfig: {
        nav: [
            { text: 'item-1', link: '/start'},
            { text: 'itme-2', link: '/Pinia'},
            { 
                text: 'itme-3', 
                items: [
                    { text: 'item-3-1', link: '/item3/1'},
                    { text: 'item-3-2', link: '/item3/2'},
                    { text: 'item-3-3', link: '/item3/3'},
                    { text: 'item-3-4', link: '/item3/4'}
                ]
            },
        ]
    }
}

在下拉框中,也是支持分组的,只需要继续嵌套items就好了
利用VitePress部署静态网站,Vite,vitepress,vue,静态

export default {
    title: ' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
    themeConfig: {
        nav: [
            { text: 'item-1', link: '/start' },
            { text: 'itme-2', link: '/Pinia' },
            {
                text: 'itme-3',
                items: [
                    {
                        text: 'item-3-A',
                        items: [
                            { text: 'section-A-1', link: '/test/sectionA-1' },
                            { text: 'section-A-2', link: '/test/sectionA-2' },
                            { text: 'section-A-3', link: '/test/sectionA-3' },
                        ]
                    },
                    { 
                        text: 'item-3-B', 
                        items: [
                            {text: 'section-B-1', link: '/test/setctionB-1'},
                            {text: 'section-B-2', link: '/test/setctionB-2'},
                            {text: 'section-B-3', link: '/test/setctionB-3'},
                        ]
                    },
                    { text: 'item-3-3', link: '/item3/3' },
                    { text: 'item-3-4', link: '/item3/4' }
                ]
            },
        ]
    }
}

友情链接

VitePress中内置了一些网站的icon,可以直接用,没有内置的,你自己找个logo就好了。

关于内置了哪些logo?
利用VitePress部署静态网站,Vite,vitepress,vue,静态

export default {
    title: ' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
    themeConfig: {
        nav: [],
        socialLinks: [
            { icon: 'github', link: 'https://github.com/LMKKK' },
            { icon: 'youtube', link: 'http://baidu.com' },
            { icon: 'twitter', link: 'http://baidu.com'},
            // 自定义图标
            { 
                icon: {
                    svg: '<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="22" height="22"><path d="M777.514667 131.669333a53.333333 53.333333 0 0 1 0 75.434667L728.746667 255.829333h49.92A160 160 0 0 1 938.666667 415.872v320a160 160 0 0 1-160 160H245.333333A160 160 0 0 1 85.333333 735.872v-320a160 160 0 0 1 160-160h49.749334L246.4 207.146667a53.333333 53.333333 0 1 1 75.392-75.434667l113.152 113.152c3.370667 3.370667 6.186667 7.04 8.448 10.965333h137.088c2.261333-3.925333 5.12-7.68 8.490667-11.008l113.109333-113.152a53.333333 53.333333 0 0 1 75.434667 0z m1.152 231.253334H245.333333a53.333333 53.333333 0 0 0-53.205333 49.365333l-0.128 4.010667v320c0 28.117333 21.76 51.157333 49.365333 53.162666l3.968 0.170667h533.333334a53.333333 53.333333 0 0 0 53.205333-49.365333l0.128-3.968v-320c0-29.44-23.893333-53.333333-53.333333-53.333334z m-426.666667 106.666666c29.44 0 53.333333 23.893333 53.333333 53.333334v53.333333a53.333333 53.333333 0 1 1-106.666666 0v-53.333333c0-29.44 23.893333-53.333333 53.333333-53.333334z m320 0c29.44 0 53.333333 23.893333 53.333333 53.333334v53.333333a53.333333 53.333333 0 1 1-106.666666 0v-53.333333c0-29.44 23.893333-53.333333 53.333333-53.333334z" fill="#fb7299"></path></svg>',
                },
                link: 'https://space.bilibili.com/2071205694',
				// ariaLabel 提示文本, 可选的
                ariaLabel: '我的bilibili'
            }
        ]
    }
}

侧边栏

与导航栏的配置相同
利用VitePress部署静态网站,Vite,vitepress,vue,静态

export default {
    title: ' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
    themeConfig: {
        nav: [],
        socialLinks: [],
        sidebar: [
            {text: 'SpringBoot', link:'/springboot'},
            {text: 'pinia', link:'/pinia'},
            {text: 'start', link:'/start'},
        ]
    }
}

同样也支持嵌套,只需要利用items属性即可
利用VitePress部署静态网站,Vite,vitepress,vue,静态

export default {
    title: ' 这是刘明凯的网站',
    description: '刘明凯是一个大厦比',
    themeConfig: {
        nav: [
        ],
        socialLinks: [
        ],
        sidebar: [
            {text: 'SpringBoot', link:'/springboot'},
            {text: 'pinia', link:'/pinia'},
            {
                text: 'start', 
                collapsed: false,
                items: [
                    {text: '别点我', link: '/test'},
                    {text: '别点我23', link: '/test22'},
                    {text: '别点我45', link: '/test1'},
                ]
        },
        ]
    }
}
多个侧边栏

每个导航项的侧边栏可以不同,根据路径显示不同的侧边栏
此时只需要将sidebar修改为对象模式即可

export default {
  themeConfig: {
    sidebar: {
    // 当路径是/guide时,显示这个侧边栏
      '/guide/': [
        {
          text: 'Guide',
          items: [
            { text: 'Index', link: '/guide/' },
            { text: 'One', link: '/guide/one' },
            { text: 'Two', link: '/guide/two' }
          ]
        }
      ],
// 当路径是 /config 时,显示这个侧边栏
      '/config/': [
        {
          text: 'Config',
          items: [
            { text: 'Index', link: '/config/' },
            { text: 'Three', link: '/config/three' },
            { text: 'Four', link: '/config/four' }
          ]
        }
      ]
    }
  }
}

页脚

export default {
    themeConfig: {
        footer: {
            message: '本网站基于VitePress构建',
            copyright: '2023 © Mingkai Liu'
        },
    }
}

首页

这个页面是怎么来的?
利用VitePress部署静态网站,Vite,vitepress,vue,静态

这个页面也是利用Markdown绘制来的
在一个Markdown页面中,利用---给出页面的配置信息,我们称---中的配置信息叫做FrontMatter,用来对Markdown页面做出配置
!!!frontmatter 必须位于 Markdown 文件的顶部
示例:这是一篇Markdown文档

---
layout: home

title: Docs with VitePress
editLink: true
---

# 接下来正常书写Markdown文档

关于Frontmatter的配置,可以看Frontmatter 配置 | VitePress 中文网

只需要在Frontmatter中,给出layout:home,那么此文档就是首页的布局模式了
如何利用Frontmatter定义首页首页 | VitePress 中文网

首页由两部分组成:
利用VitePress部署静态网站,Vite,vitepress,vue,静态

Hero部分

利用VitePress部署静态网站,Vite,vitepress,vue,静态

给出一个实例,效果图如下
利用VitePress部署静态网站,Vite,vitepress,vue,静态

---
layout: home

hero:
  name: hero的标题
  text: 这是一个首页文本内容
  tagline: 这是标签栏中的内容
#   网站logo
  image:
    src: https://kkbank.oss-cn-qingdao.aliyuncs.com/note-img/test-hero-page.jpg
    alt: 这是网站的logo,当图片不能显示时,这段文本就是显示出来  
# 跳转按钮
  actions:
    # 按钮的样式,brand | alt
    - theme: brand
      text: Get Started
      link: /
    - theme: alt
      text: View on GitHub
      link: https://github.com/LMKKK
---
Feature部分

Feature主要是对网站的一些功能、特点,做展示。
利用VitePress部署静态网站,Vite,vitepress,vue,静态

给出实例,效果图
利用VitePress部署静态网站,Vite,vitepress,vue,静态

---
features:
  - icon: 🛠️
    title:  快速构建
    details: 牛逼克拉斯
  - icon:
#   使用自定义图标
      src: https://kkbank.oss-cn-qingdao.aliyuncs.com/note-img/a46f86730f2dc1d1aeac6cc35536d4c260a6d71d.webp
    title: 我吊不吊
    details: 碉堡了!!
  - icon:
#   分别指定普通、暗黑模式时的图片
      dark: /dark-feature-icon.svg
      light: /light-feature-icon.svg
    title: Another cool feature
    details: Lorem ipsum...
---    

搜索框

只需要在配置对象中开启即可。

export default {
  themeConfig: {
    search: {
      provider: 'local'
    }
  }
}

利用VitePress部署静态网站,Vite,vitepress,vue,静态

404页面

VitePress中自带了一个404页面,如果要自定义404页面,请使用自定义主题。
利用VitePress部署静态网站,Vite,vitepress,vue,静态

Markdown中书写Vue

在 Markdown 中使用 Vue | VitePress 中文网
每个Markdown都会被转换为html页面,并可以作为Vue的一个单文件组件。
因此,你之前怎么写Vue组件,那么在Markdown文档中怎么写就可以了。
例如:

# 我是Pinia页面

<div v-for="idx in 6">测试v-for指令{{ idx }}</div>

利用VitePress部署静态网站,Vite,vitepress,vue,静态

# 我是Pinia页面

<script setup>

    import { ref } from 'vue'

    const msg = ref('HelloVitePress')

</script>
<style>
    h1 {
        color: 'red';
    }
</style>
<h1>{{  msg }}</h1>
<div v-for="idx in 6">测试v-for指令{{ idx }}</div>

注意:
在Markdown中书写Vue代码,不要使用<style scope>

拓展

可以将VitePress构建后的静态资源文件,利用GitHubPage,生成自己专属的静态网站,支持别人访问。文章来源地址https://www.toymoban.com/news/detail-542392.html

到了这里,关于利用VitePress部署静态网站的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vitepress部署到GitHub Pages,工作流

    效果: 部署 VitePress 站点 | VitePress 执行 npm run docs:build,npm run docs:preview,生成dist文件   手动创建.gitignore文件: node_modules .DS_Store dist-ssr cache .cache .temp *.local 使用npm install命令创建package-lock.json文件 config.mts文件中添加base,仓库名称 去github,名称一致(这个不确定哈)   在编

    2024年04月08日
    浏览(49)
  • VitePress部署到Github Pages后发现样式全错乱了怎么办?

    当我们部署到Github pages线上后, 发现全是样式错乱的,也就是无样式,怎么办?在此 简单记录一下 这个时候我们作为前端开发者,可以打开浏览器调试看看就发现了,是静态资源地址不对,如下     这个时候,我们只需修改 theme/config.js 中的基本路径即可,因为我们的访问

    2024年02月08日
    浏览(45)
  • 从零用VitePress搭建博客教程(7) -– 如何用Github Actions自动化部署到Github Pages?

    接上一节: 从零用VitePress搭建博客教程(6) -– 第三方组件库的使用和VitePress搭建组件库文档  我们搭建完成vitePress后,那么接下来就是如何部署到线上服务器,这里使用Github Pages,免得自己购买服务器,当然你也可以自己购买服务器来部署(比如阿里云服务器)。 在部署之

    2024年02月08日
    浏览(73)
  • vitepress项目使用github的action自动部署到github-pages中,理论上可以通用所有

    .githubworkflowsdeploy.yml 完整的代码:使用的是 pnpm 进行依赖安装。 这段 YAML 文件定义了一个 GitHub Actions 工作流,用于在推送到 docs 分支时构建和部署 VitePress 项目。 on : 定义触发工作流的事件,这里是在推送到 docs 分支时触发。 jobs : 定义工作流中的任务。 build-and-deploy : 任务

    2024年01月17日
    浏览(51)
  • 从零用VitePress搭建博客教程(3) - VitePress页脚、标题logo、最后更新时间等相关细节配置

    接上一节:从零用VitePress搭建博客教程(2) –VitePress默认首页和头部导航、左侧导航配置 关于默认主题的标题,logo、页脚,最后更新时间等相关细节配置,我们也是通过文件config.js中的themeConfig选项配置的,以下所有配置都是在 themeConfig 中完成的 默认情况下,网站的logo会引

    2024年02月08日
    浏览(64)
  • 从零用VitePress搭建博客教程(6) -– 第三方组件库的使用和VitePress搭建组件库文档

    接上一节:从零用VitePress搭建博客教程(5) - 如何自定义页面模板、给页面添加独有的className和使页面标题变成侧边目录? 我们经常看见UI组件库的文档,这里我们就用element-plus第三方组件库为例子,搭建组件库文档 examples:作为组件库示例目录,我们以Button组件使用为例 安装

    2024年02月08日
    浏览(56)
  • Vitepress(一):基础教程

    Vitepress是使用Vue3+Vite来快速搭建一个个人网站的工具,网站搭建者不需要掌握Vue3,Vite等的具体内容,只需要简单的配置就可以生成Vue风格的个人网站 官方地址:https://vitejs.cn/vitepress/ 本教程希望教会大家快速搭建一个基于Vitepress的个人博客,并且实现git page的自动部署,项目

    2024年02月05日
    浏览(39)
  • vitepress(三):自动生成目录

    上一节我们将自己的网站发布到了git pages上,但是现在我们需要每次更新一篇文章就重写一次目录,操作上十分的繁琐和不方便,所以我们需要一个方法去自动生成我们的侧边栏结构,方便我们每次只需要更新我们的项目即可。这里我们要知道一个点: 因为 VitePress 应用在生

    2024年02月09日
    浏览(65)
  • 5分钟使用VitePress + GithubAction搭建个人博客

    ✅作者:TuNan ✨个人主页:图南的个人主页 😉欢迎关注🔎点赞😍收藏⭐留言💌 先决条件 Node.js 版本 16 或更高版本。 用于通过命令行界面(CLI)访问 VitePress 的终端。 具有 Markdown 语法支持的文本编辑器。推荐使用 VSCode) 以及官方 Vue 扩展。 VitePress 可以单独使用,也可以安

    2024年02月04日
    浏览(43)
  • vue3+vite静态页面部署到gitee pages

    随着vue3的成熟,vue2将在2023.12.31停止维护,所以有必要搞一下vue3项目静态页面怎么部署到gitee中了 如果还有想部署vue2静态页面到gitee中的话,访问https://blog.csdn.net/qq_45952585/article/details/122514028?spm=1001.2014.3001.5502 vue3+vite+ts脚手架创建就不写了,随便搜一搜,一大把,直接上重点

    2024年02月03日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包