VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。
例如:JavaFX 前言
这个博客网站就是使用 VuePress 生成的,你只需要使用 Markdown 来书写文章内容,其他的 VuePress 帮你搞定。
VuePress 相比于其他以 Markdown 为中心的静态网站生成器,如 mdBook 、GitBook、Hexo、Nuxt、VitePress、Docsify 、Docute 更加简单方便,如果你会前端你还可以自己定制主题。
若你还没安装 Node.js,可以参考 Node.js安装与配置 进行下载安装。
新建一个文件夹,我这里新建的文件夹叫 vuepress
,打开 cmd 窗口进入 vuepress
文件夹所在路径。
然后 cmd 命令行中输入下面的命令,将初始化生成一个 package.json
文件:
npm init -y
npm install -D vuepress@next
在 package.json
中的 scripts 里添加两行启动脚本
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
最终的 package.json 长这样:
{
"name": "vuepress",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"vuepress": "^2.0.0-rc.0"
}
}
在 vuepress
文件夹下新建 docs
文件夹,用于存放所有的 Markdown 文件。
在 docs
文件夹下新建 README.md 文件,你可以在 README.md 写点内容。
执行如下命令启动,启动成功后,会在 docs
下自动生成 .vuepress
文件夹,用于配置。
npm run docs:dev
启动后,你可以浏览器打开http://localhost:8080/
查看刚才的 README.md 渲染效果 。
假如你有很多文章,其中一些是 java 相关的,其中一些是 python 相关的,那怎么让左边的侧边栏分类并只显示文章名称呢?
另外,怎么给最上面的导航栏加上自己的头像、昵称、文章搜索框、和其他导航呢?
在 vuepress/docs/.vuepress/
下新建 config.js
文件。该配置文件用于配置插件、主题、导航栏、侧边栏等。
在 vuepress/docs/.vuepress/
下新建 public
文件夹 ,public
文件夹 下 再新建 images
文件夹,把你的头像 logo 图片放里面。
vuepress
目录下,命令行执行如下命令安装搜索插件:
npm i -D @vuepress/plugin-search@next
下面是我的配置,可参考修改使用。
import { defaultTheme } from 'vuepress'
import { searchPlugin } from '@vuepress/plugin-search'
export default{
title: '山下海棠',
description: '山下海棠',
theme: defaultTheme({
logo: "/images/head.jpg", //头像logo,默认使用 public 文件夹下的资源,所以路径里不用加 public
//头部导航栏配置。可使用link方式来自动扫描对应路径下的Markdown文章;也可以使用 children 方式手动向数组中加入文章
navbar: [
{
text: 'java',
link: '/java/',
},
{
text: 'python',
children: ['/python/JSON.md', '/python/openpyxl.md', '/python/spider.md'],
}
],
sidebarDepth: 0, //设置为0,左侧侧边栏文章下不显示标题列表
sidebar: [ //sidebar控制左边侧边栏
{
text: " java",
collapsible: true, //可折叠
children: [
"/java/socketAndNetty.md",
"/java/stream.md",
],
},
{
text: "☕ python",
collapsible: true, //可折叠
children: [
"/python/JSON.md",
"/python/openpyxl.md",
"/python/spider.md",
],
}]
}),
plugins: [
searchPlugin({
locales: {
'/': {
placeholder: '搜索文章',
},
},
}),
],
}
最终,我的文件目录结构如下:
(如果你的 Markdown 文章里要插入图片,可以在 docs 文件夹下新建 images 文件夹,把图片都放里面,然后在 Markdown 文章里使用相对路径来插入图片)
└─ docs
└─ .vuepress
│ ├─ public
│ │ └─ images
│ │ └─ head.jpg
│ └─ config.js
├─ java
│ ├─ socketAndNetty.md
│ └─ stream.md
├─ python
│ ├─ JSON.md
│ ├─ openpyxl.md
│ └─ spider.md
└─ README.md
在 markdown 语法里:
#
表示一级标题
##
表示二级标题
###
表示三级标题
而 vuepress 在解析渲染的时候会把 markdown 文章里第一个出现的 # 作为文章名,所以建议
文章中第一行使用 # 来作为文章名,使用 ## 作为一级标题 ,使用 ### 作为二级标题。
例如:
就像上面效果展示里,我的 python中JSON使用
这篇文章 markdown 是这样写的:
# python中JSON使用
::: details 目录
[[toc]]
:::
## 一、字典(JSON 对象)与JSON字符串的转换
### 1.字典转JSON字符串
......省略代码块
### 2.JSON字符串转字典
......省略代码块
此外,vuepress 增加了一些对 Markdown 的语法扩展,可参考官网:Markdown 语法扩展