VuePress安装及使用——使用 Markdown 创建你自己的博客网站和电子书

news2024/11/18 4:25:31

目录

  • 前言
  • 一、依赖环境
  • 二、vuepress 安装和使用
    • 1.初始化
    • 2.将 VuePress 安装为本地依赖
    • 3. package.json 中添加脚本
    • 4. 新建 docs 文件夹
    • 5.启动
    • 6. 效果
  • 三、进阶使用
    • 1.新增配置文件
    • 2.安装搜索插件
    • 3.config.js 中增加配置
    • 4.效果展示
    • 5.注意
  • 四、使用主题
    • 1.安装
    • 2. 目录结构说明
      • (1)README.md
      • (2).vuepress 文件夹
    • 3. 修改配置
    • 4. 启动
    • 5. 效果

前言

VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 语法来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。

例如:JavaFX 前言

这个博客网站就是使用 VuePress 生成的,你只需要使用 Markdown 来书写文章内容,其他的 VuePress 帮你搞定。

VuePress 相比于其他以 Markdown 为中心的静态网站生成器,如 mdBook 、GitBook、Hexo、Nuxt、VitePress、Docsify 、Docute 更加简单方便,如果你会前端你还可以自己定制主题。

一、依赖环境

  • Node.js ,版本需要大于等于 18.16.0
  • 包管理器,如 npm 或者 pnpm、yarn 等。

若你还没安装 Node.js,可以参考 Node.js安装与配置 进行下载安装。

二、vuepress 安装和使用

1.初始化

新建一个文件夹,我这里新建的文件夹叫 vuepress ,打开 cmd 窗口进入 vuepress 文件夹所在路径。

然后 cmd 命令行中输入下面的命令,将初始化生成一个 package.json 文件:

npm init -y

2.将 VuePress 安装为本地依赖

npm install -D vuepress@next

3. package.json 中添加脚本

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"
  }
}

4. 新建 docs 文件夹

vuepress 文件夹下新建 docs 文件夹,用于存放所有的 Markdown 文件。

docs 文件夹下新建 README.md 文件,你可以在 README.md 写点内容。

5.启动

执行如下命令启动,启动成功后,会在 docs 下自动生成 .vuepress 文件夹,用于配置。

npm run docs:dev

启动后,你可以浏览器打开http://localhost:8080/ 查看刚才的 README.md 渲染效果 。

6. 效果

在这里插入图片描述

三、进阶使用

假如你有很多文章,其中一些是 java 相关的,其中一些是 python 相关的,那怎么让左边的侧边栏分类并只显示文章名称呢?

另外,怎么给最上面的导航栏加上自己的头像、昵称、文章搜索框、和其他导航呢?

1.新增配置文件

vuepress/docs/.vuepress/ 下新建 config.js 文件。该配置文件用于配置插件、主题、导航栏、侧边栏等。

vuepress/docs/.vuepress/ 下新建 public 文件夹 ,public 文件夹 下 再新建 images 文件夹,把你的头像 logo 图片放里面。

2.安装搜索插件

vuepress 目录下,命令行执行如下命令安装搜索插件:

npm i -D @vuepress/plugin-search@next

3.config.js 中增加配置

下面是我的配置,可参考修改使用。

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

4.效果展示

在这里插入图片描述

5.注意

在 markdown 语法里:
# 表示一级标题
## 表示二级标题
### 表示三级标题
而 vuepress 在解析渲染的时候会把 markdown 文章里第一个出现的 # 作为文章名,所以建议
文章中第一行使用 # 来作为文章名,使用 ## 作为一级标题 ,使用 ### 作为二级标题。

例如:
就像上面效果展示里,我的 python中JSON使用 这篇文章 markdown 是这样写的:

# python中JSON使用
::: details 目录

[[toc]]

:::

## 一、字典(JSON 对象)与JSON字符串的转换

### 1.字典转JSON字符串

......省略代码块

### 2.JSON字符串转字典

......省略代码块

此外,vuepress 增加了一些对 Markdown 的语法扩展,可参考官网:Markdown 语法扩展

四、使用主题

上面三部分简单的讲解了怎么安装和使用 vuepress ,但页面还不够美观,为此我们可以使用主题。

vuepress 官方提供了一个官方的主题 vuepress-theme-hope

它满足了例如文本对齐、标记、流程图、公式、演示等,同时大大改进了美观度,而且通过主题插件为 VuePress 提供了全方位的增强功能。

如果你想安装其他主题,可在这里寻找社区主题:vuepress 主题

1.安装

vuepress 下新建一个文件夹,我这里建了一个叫 themeHope 的文件夹。

使用如下命令安装 vuepress-theme-hope 主题:

npm init vuepress-theme-hope add themeHope

按照提示选择语言和一些基本操作,等待安装完成,启动项目,然后打开 http://localhost:8080/ 可以看到预览效果。

2. 目录结构说明

当安装完 vuepress-theme-hope 主题后,themeHope 文件夹下会生成 README.md.vuepress 文件夹,下面对它们进行简单说明。

(1)README.md

README.md 是博客首页的配置,首页根据此配置文件生成。如果你不需要博客首页可以将其中的配置 home: true 修改为 home: false

首页的更多配置你可以参考官网的:首页配置 和 主页 Frontmatter 配置

(2).vuepress 文件夹

themeHope/.vuepress/ 文件夹下会生成如下配置文件和文件夹:

  • bublic :该文件夹用来存放图片和静态资源
  • config.ts :整体配置文件
  • navbar.ts :头部导航栏配置文件
  • sidebar.ts :左侧导航栏配置文件
  • theme.ts :主题配置文件

3. 修改配置

(1).删除 themeHope 文件夹下生成的 demo guide 演示示例文件夹。

(2).将项目根目录下 docs 文件夹下的 java python 文件夹复制到 themeHope 文件夹下,然后删除根目录下docs 文件夹。

(3).修改 hemeHope/.vuepress/sidebar.ts 侧边栏配置

import { sidebar } from "vuepress-theme-hope";

export default sidebar({
  "/": [
    "",
	{
      text: "java",				 //显示的类目名称
      icon: "book",				//图标
	  collapsible: true,        //侧边栏可折叠
      prefix: "java/",		   //该类目文章所在的文件夹
      children: "structure",   //自动获取所有文章生成侧边栏
    },
	{
      text: "python",
      icon: "laptop-code",
	  collapsible: true,
      prefix: "python/",
      children: "structure",
    },
  ],
});

(4).修改 hemeHope/README.md 首页配置,home: true 修改为 home: false 关闭首页

4. 启动

执行启动命令

npm run docs:dev

启动后, 浏览器打开 http://localhost:8080 查看效果。

5. 效果

在这里插入图片描述


参考:
vuepress快速上手
vuepress配置
theme-hope主题
秒建炫酷的开源项目文档,这款工具用起来够优雅!
VuePress-theme-hope2搭建个人网站

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

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

相关文章

fastjson反序列化 CVE-2017-18349

fastjson fastjson 是阿里巴巴开发的 java语言编写的高性能 JSON 库,用于将数据在 Json 和 Java Object之间相互转换。它没有用java的序列化机制,而是自定义了一套序列化机制。 提供两个主要接口: JSON.toJSONString 和 JSON.parseObject/JSON.parse 分别实现序列化…

双指针——找到字符串中的所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/?envTypestudy-plan-v2&envIdtop-100-liked 双指针,每次都统计出来p长度的滑动窗口里的数字,拿Arrays.equals进行对比,然后滑动一小格,减1加1继续比对即可。 class Solut…

AngularJS

理解实现代码的逻辑为主要,代码怎么写为次要。 参考资料: 《AngularJS入门与进阶》,江荣波著 前端开发常用框架 React:由Facebook开发,用于构建用户界面的JavaScript库,以组件化和虚拟DOM著称。 Angular&…

Github项目推荐-30天Python教程

项目地址 GitHub - Asabeneh/30-Days-Of-Python 项目简述 这是一个非常棒的python入门教程,图文并茂,讲解清晰,十分值得推荐。 项目截图

在 Kubernetes 上部署 Python 3.7、Chrome 和 Chromedriver(版本 114.0.5735.90)的完整指南

一、构建基础镜像 docker build -f /u01/isi/DockerFile . -t thinking_code.com/xhh/crawler_base_image:v1.0.2docker push thinking_code.com/xhh/crawler_base_image:v1.0.2 二、K8s运行Pod 三、DockerFile文件 # 基于镜像基础 FROM python:3.7# 设置代码文件夹工作目录…

删除win10服务

之前工作需要在我电脑上安装了一个天气的服务,我想删掉但是在任务管理器里删不掉,请教了大佬 删除方法是,在开始菜单里找到命令提示符 右键-以管理员方式打开命令提示符 输入sc 按enter键,可以查看一些操作命令 删除服务的话&a…

利用虚继承解决菱形继承(钻石继承)的问题 学习笔记

菱形继承概念: 两个派生类继承同一个基类 又有某个类同时继承两个派生类 这种继承又被称为菱形继承,或者钻石继承 定义一个基类Animal,两个派生类Sheep、Camal,SheepCame继承于两个派生类 class Animal { public:int m_Age; }…

java-sec-code中命令注入

java-sec-code中命令注入 不安全的写法(由于我这里使用的是idea搭建的环境,原本命令执行的sh -c 无法运行,后续的输出也会产生乱码,修改部分代码,以便能更好的显示出效果,linux下使用docker木有问题) //需要导入的库文…

物流项目话术(1.5w字精选)

物流项目的分类 技术架构图(面试时面试官会要求你画出技术架构图) 功能结构图 业务功能流程 流程说明: 用户在【用户端】下单后,生成订单 系统会根据订单生成【取件任务】,快递员上门取件后成功后生成【运单】 用户对…

【leetcode203】移除链表元素【Java代码讲解】

12.18 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2&#xff…

算法设计与分析2023秋-头歌实验-实验七 动态规划

文章目录 第1关:数塔问题任务描述相关知识编程要求解题思路测试说明参考答案 第2关:最长公共子序列任务描述相关知识编程要求解题思路:测试说明参考答案 第3关:求序列-2 11 -4 13 -5 -2的最大子段和任务描述相关知识编程要求解题思…

单位委托保管档案好处在哪里

单位委托保管档案可以享受专业的管理、节省空间、提高效率、保护保密性和安全性,以及保证档案的长期保存等好处,从而提升工作效率和档案管理的质量。 具体而言,委托档案寄存专久智能保管档案的好处有以下几点: 1. 专业管理&#x…

数据结构之<树>的介绍

树的基本概念 在数据结构中,树(Tree)是一种层次结构,由节点和边组成。树的基本概念包括根节点、子节点、父节点、兄弟节点等。节点拥有零个或多个子节点,除了根节点外,每个节点有且仅有一个父节点。树的层…

Leetcode—128.最长连续序列【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—128.最长连续序列 实现代码 class Solution { public:int longestConsecutive(vector<int>& nums) {unordered_set<int> s;for(auto num: nums) {s.insert(num);}int longestNum 0;for(auto num: s) …

鸿蒙与安卓的对比,国产之光正逐步闪耀

鸿蒙是面向5G物联网、面向全场景的分布式操作系统&#xff0c;其不是安卓系统的分支或修改而来的&#xff0c;与安卓、iOS是不一样的操作系统。鸿蒙将打通手机、电脑、平板、电视、电器设备、工业自动化控制、无人驾驶、车机设备 、智能穿戴统一成一个操作系统&#xff0c;并且…

前端加载访问速度优化(Nginx)

当前端部署文件过大时很容易造成网页加载慢的现象&#xff0c;为了提升加载速度&#xff0c;提供nginx的三种解决方案。 文章目录 1. gzip压缩2. 优化 keepalive 连接3.配置缓存注意事项总结 1. gzip压缩 往nginx.conf 的 http内容段落中加入 # gzip configgzip on;gzip_min_l…

SpringBoot之分层解耦以及 IOCDI的详细解析

### 3.2 分层解耦 刚才我们学习过程序分层思想了&#xff0c;接下来呢&#xff0c;我们来学习下程序的解耦思想。 解耦&#xff1a;解除耦合。 #### 3.2.1 耦合问题 首先需要了解软件开发涉及到的两个概念&#xff1a;内聚和耦合。 - 内聚&#xff1a;软件中各个功能模块内…

【算法系列篇】递归、搜索和回溯(四)

文章目录 前言什么是决策树1. 全排列1.1 题目要求1.2 做题思路1.3 代码实现 2. 子集2.1 题目要求2.2 做题思路2.3 代码实现 3. 找出所有子集的异或总和再求和3.1 题目要求3.2 做题思路3.3 代码实现 4. 全排列II4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面我们通过几个题目…

(8)Linux Makefile | 依赖关系,依赖方法

&#x1f4ad;前言&#xff1a; 本篇文章会着重讲解Linux中的自动化构建代码工具: make/makefile的介绍与使用。 在Linux下编译代码时,每次都会输入 gcc code.c -o code.exe在删除可执行程序时,每次都会输入 rm -rf code.exe这样非常的不方便,很麻烦,于是乎学习自动化构建代…

Netty Review - ByteBuf 读写索引 详解

文章目录 概念Pre概述ByteBuf简介ByteBuf的主要特性结构APIByteBuf的创建读写操作示例引用计数操作其他常用操作 Code 演示 概念 Pre Netty Review - 探索ByteBuf的内部机制 概述 Netty的ByteBuf是一个强大的字节容器&#xff0c;用于处理字节数据。它提供了比Java标准库中的…