Vuepress 三分钟搭建一个精美的文档或博客

news2024/9/26 5:17:47

大家好,我是凌览。

作为一个程序员,相信每个人都想折腾一个属于自己的博客。技术文章的输出是我们程序员能力的一种体现,也是一种非常好的个人总结。

网上有很多文档编写网站及工具,比如语雀、石墨等等。但多数需要付费,不能自己DIY。

为了少写点curd,我推荐使用VuePress,它可以帮助我们快速地搭建出技术文档或个人博客。

Vuepress搭建地址:https://jshai.gitee.io/vuepress-blog/

什么是Vuepress

VuePress是由Vue.js开发团队创建的一个静态网站生成器。它的设计目标是用于编写技术文档或者博客,并且提供了一系列的默认主题和插件,使得构建和维护现代化的静态网站变得更加简单。

它有以下优点:

  • 基于Vue.js,可以使用Vue.js编写功能

  • 支持Markdown

  • 简单易用

  • 开箱即用的主题

  • 丰富的插件

本地搭建文档

快速上手同官方文档

  1. 创建新目录
mkdir vuepress-starter && cd vuepress-starte
  1. 初始化项目,自行选择喜欢的包管理器
npm init #yarn init
  1. 安装VuePress为本地依赖
npm install -D vuepress # yarn add -D vuepress
  1. 创建一篇文档
mkdir docs && echo '这是知识库的介绍' > docs/README.md
  1. 在 package.json 中添加一些 ++scripts++
{
"scripts": {
  "docs:dev": "vuepress dev docs",
  "docs:build": "vuepress build docs"
 }
}
  1. 启动本地服务器
npm run docs:dev #yarn docs:dev 

VuePress 会在 http://localhost:8080启动一个热重载的开发服务器。

基础配置

docs创建一个.vuepress文件夹,.vuepress下再创建config.js文件,Vuepress的配置由config.js文件内容决定。这里我们的项目结构可能是这样的:

├─ docs
│  ├─ README.md
│  └─ .vuepress
│     └─ config.js
└─ package.json

配置网站的标题和描述,config.js写入内容:

module.exports = {
    title: '凌览的知识库',
    description: '凌览,微信搜索「凌览社」关注我,长期交流学习。不知名前端,Node.js爱好者'
}

页面长这样:

添加导航栏

给首页的上方添加导航栏,config.js修改:

module.exports = {
    title: '凌览的知识库',
    description: '凌览,微信搜索「程序员凌览」关注我,长期交流学习。不知名前端,Node.js爱好者'
    themeConfig: {
        logo: 'https://www.linglan01.cn/favicon.JPG',
        //顶部导航栏
        nav: [
            { text: '博客', link: 'https://linglan01.cn/' },
            { text: '掘金', link: 'https://juejin.cn/user/3350967174565198' },
            { text: 'Github', link: 'https://github.com/CatsAndMice' }
        ]
    }
 }

页面变成了这样:

更多导航栏配置参考VuePress导航栏配置。

添加侧边栏

我们在docs文件夹下,创建introduce文件夹,此时结构如下:

├─ docs
│  ├─ README.md
│  └─ .vuepress
│     └─ config.js
|   └─ introduce
|            └─ haha.md
|            └─ README.md
└─ package.json

配置config.js如下:

module.exports = {   
    themeConfig: {
        nav:[...]
        sidebar: [
            {
                title: '侧边栏分组1', 
                collapsable: false, 
                sidebarDepth: 1,    
                children: [
                    '/introduce/',//自动获取README.md
                    '/introduce/haha'
                ]
            },
        ],
    },  
}

页面效果如下:

还可以设置多组侧边栏:

module.exports = {   
    themeConfig: {
        nav:[...]
        sidebar: [
            {
                title: '侧边栏分组1', 
                collapsable: false, 
                sidebarDepth: 1,    
                children: [
                    '/introduce/',//自动获取README.md
                    '/introduce/haha',
                   '...'
                ]
            },
             {
                title: '侧边栏分组2', 
                collapsable: true, 
                sidebarDepth: 1,    
                children: [
                     '...'
                ]
            },
        ],
    },  
}

更多侧边栏配置参与Vuepress侧边栏。

更换主题

社区有vuepress-theme-hope、vuepress-theme-reco等主题,可以根据喜好选择。

这里我们以vuepress-theme-reco为例,现在安装vuepress-theme-reco:

npm install vuepress-theme-reco --save-dev
# or
yarn add vuepress-theme-reco

config.js配置:

module.exports = {
    // ...
    theme: 'reco'
    // ...
}  

刷新页面即可看见改变。这里就不贴具体图样了

添加文章信息

我们的文章必需要标题,可能需要展示文章作者信息、创建日期等信息,我们可以给文章的md文件添加一些信息修改:

--- 
title: 凌览的知识库 #文章标题
author: 凌览 #作者
date: '2023-10-24' #日期
tags: #标题
  - 配置
  - 主题
  - 索引
---
公众号【程序员凌览】

此时页面效果如下:

设置语言

Vuepress默认使用en-US,所以日期我们明明设置的是2023-10-24,但它页面展示的是10/24/2023 。

这里修改config.js

module.exports = {
    // ...
    locales: {
        '/': {
            lang: 'zh-CN'
        }
     },
    // ...
}  

页面效果:

网站部署

到这里,我们的博客或文档算是正式做好了。接下来我们部署到免费的 Gitee Pages 上,这里有两种方式:

  • 直接在Gitee 创建一个名为vuepress-blog的仓库,手动触发Gitee Pages

  • Github创建一个名为vuepress-blog的仓库,Gitee也相同创建一个名为vuepress-blog仓库,通过Github Action 每次一次仓库更新时将Github仓库自动同步到Gitee并自动触发Gitee Pages,详情操作请阅读Github Actions实现仓库自动同步Gitee并更新文档

(完)

关注公粽号【程序员凌览】回复"666",拉您进【人类高质量前端交流群~】
往期推荐:linglan01.cn/about

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业RFID设备如何实现抗干扰功能?

在工业环境中存在多种干扰因素,如灰尘、水渍、油污等都会影响条码枪的信息识别,虽然RFID技术可以实现非接触的识别,无视油污、灰尘等环境,但仍会收到电流、震动、电磁信号等因素的干扰。下面我们就一起来了解一下,工业…

触摸屏与施耐德PLC之间MODBUS无线通讯

一、 硬件连接 1、PLC通讯接口说明: 2、通讯电缆图: 二、PLC设置 1. 配置端口: 双击串行线路—弹出右侧设置窗口---设置串口通讯参数 2. 添加MODBUS协议。 ① 右击串口线路,选择添加设备: ② 选择现场总线&#xf…

JAVA代码审计-纵向越权漏洞分析

查看这个cms系统后台管理员 添加用户的页面 点击添加管理员 这个模块只有管理员拥有,普通用户没有这个模块。 打开源码分析是否存在越权漏洞。 ------------------------------------------------------------------------------------------------------------ …

引领位置服务驱动:腾讯地图 WebService 服务端 API 实用指南

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

SQL server中:常见问题汇总(如:修改表时不允许修改表结构、将截断字符串或二进制数据等)

SQL server中:常见问题汇总 1.修改表时提示:不允许修改表结构步骤图例注意 2.将截断字符串或二进制数据。3.在将 varchar 值 null 转换成数据类型 int 时失败。4.插入insert 、更新update、删除drop数据失败,主外键FOREIGN KEY 冲突5.列不允许…

华为昇腾NPU卡 大模型LLM ChatGLM2模型推理使用

参考:https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md#chatglm2-6b 1、安装环境: 昇腾NPU卡对应英伟达GPU卡,CANN对应CUDA底层; mindspore对应pytorch;mindformers对应transformers 本…

C语言程序设计——题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为 x。 1、则:x 100 n2, x 100 168 m2 2、计算等式:m2 - n2…

Spring Cloud Alibaba nacos配置中心

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

所求和问题

( 1 2 3 ) 2 1 2 2 2 3 2 2 ∗ ( 1 ∗ 2 1 ∗ 3 2 ∗ 3 ) (123)^21^22^23^22*(1*21*32*3) (123)21222322∗(1∗21∗32∗3) n input() a list(map(int,input().split())) s1 sum(a) ** 2 s2 0 for i in a:s2 i ** 2 ans (s1 …

STM32F4 磁链观测器+PLL 无感无刷电机位置驱动

在前面几节我们介绍了基于stm32f1的定点运算的滑膜观测器反正切以及stm32f4的浮点运算滑膜PLL的案例,大家反馈的还挺好,在做售后的过程中有小伙伴咨询了磁链观测器和隆伯格观测器,针对磁链观测器咨询的较多,我们调试了磁链的程序&…

C语言每日一题(18)数组匹配

牛客网 BC156 牛牛的数组匹配 题目描述 描述 牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近,输出起始点最靠左的数组。 输入描述: 第一行输…

SpringAOP源码解析之基础设施注册(一)

写在最前 AspectJ和Spring AOP是两种实现AOP(面向切面编程)的不同方式,它们在实现机制和使用方式上存在一些区别。 AspectJ是一种独立的AOP框架,它提供了比Spring AOP更强大和更灵活的功能。AspectJ可以在编译时或者运行时织入切…

ICMP权限许可和访问控制漏洞处理(CVE-1999-0524)

一、问题描述 某次例行安全扫描,发现:ICMP权限许可和访问控制漏洞,编号:CVE-1999-0524,危险级别:低风险。利用该漏洞,远程主机会回复ICMP_TIMESTAMP查询并返回它们系统的当前时间,I…

浅谈安科瑞ASJ继电器在马尔代夫环岛水上排屋的应用

摘要:对电气线路进行接地故障保护,方式接地故障电流引起的设备和电气火灾事故越来越成为日常所需。针对用户侧主要的用能节点,设计安装剩余电流继电器,实时监控各用能回路的剩余电流状态。通过实时监控用能以及相关电力参数、提高…

asp.net乡村旅游管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net乡村旅游管理系统是一套完善的web设计管理系统系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c# 语言开发 asp.net乡村旅游管理系统 二、…

2018年亚太杯APMCM数学建模大赛B题人才与城市发展求解全过程文档及程序

2018年亚太杯APMCM数学建模大赛 B题 人才与城市发展 原题再现 招贤纳士是过去几年来许多城市的亮点之一。北京、上海、武汉、成都、西安、深圳,实际上都在用各种吸引人的政策来争夺人才。人才代表着城市创新发展的动力,因为他们能够在更短的时间内学习…

Linux国产系统无法连接身份证读卡器USB权限解决办法

​ 如上图:连接身份证读卡器失败 接入读卡器后,运行output,读卡报错:libusb open device with pid vid: Resource temporarily unavailable,连接读卡器失败,t_nRe -1 ,这是由于未接入读卡器或…

JavaEE 网络原理——TCP的工作机制(末篇 其余TCP特点)

文章目录 一、滑动窗口二、流量控制三、拥堵控制四、延时应答五、捎带应答六、面向字节流七、异常情况八、总结 其余相关文章: JavaEE 网络原理——TCP的工作机制(中篇 三次握手和四次挥手) 本篇文章衔接的是前面两篇文章的内容,在这里继续解释 TCP 的内…

GO语言代码示例

首先,我们需要安装 rod 库,这是一个用于构建网络爬虫的 Go 语言库。 使用 go get 命令安装 rod 库:go get -u github.com/gofiber/rod 创建一个新的 Go 程序文件,例如:main.go 在 main.go 文件中,导入 r…