工具使用vue

尤大大的VitePress,确定不来学一手嘛?

2021-08-23  本文已影响0人  辉夜真是太可爱啦

VitePress ,在写博客网站技术文档面试题网站等方面,就有着它先天的优势,不仅如此,它还有极易上手构建速度快,与此同时,笔者还用它写了一个面试题网站,正在不断更新中。接下来,我们就一起来看下它吧 !

项目预览地址:https://jack-star-t.github.io/interview/

项目仓库: https://github.com/Jack-Star-T/vitePress

官网地址:https://vitepress.vuejs.org/

前言

说它很适合构建博客网站技术文档面试题网站的主要原因,就是因为它可以直接用 markdown 进行书写,所有写过博客的人,都应该对它不陌生。

一个 .md 文档,就可以自动生成一张页面。

除此之外,不需要关心文档的目录,锚点导向等问题,左侧栏,导航栏等问题,都是根据配置文件自动生成的。

样式自定义,可根据自身项目需求,自由定制。

拥有自己的生态,插件库,开封即用

自动生成路由,项目的文件目录即目录。

支持多语言,自带多语言配置,让你的项目更加国际化。

概览

起源

它的前身就是 vuePress ,它就是所谓的传统构建方式,相比之下, vitePress 的速度就会快很多。

主要因为vuePress 是基于 Webpack 的,而 vitePress 是基于 Vite 的。

快速

Vite 语义为快速的,是一种新型前端构建工具,能够显著提升前端开发体验。

它快的原因就在于它是基于原生ES模块,它不像之前的 vuepress ,启动的过程中呢,相当于是先用 Webpack 把项目先打包了一遍。

Vite 实际上是让浏览器接管了打包程序的部分工作: Vite 只需要在浏览器请求源码时进行转换并按需提供源码。根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。

这就是为什么它那么快速的原因。

那么,接下来,我们手把手,一步步地来搭建自己的 vitePress 项目,当然,你也可以直接 copy 我的仓库,在本地直接运行。

项目安装

  1. 首先,在桌面上新建一个文件夹 myBlog (文件名可以自行取,但不建议叫 vitepress),在此处打开命令提示符,先运行 npm init 初始化 package.json 。按照它的提示一步步下去,如图所示:
image.png
  1. 然后,运行 npm i -D vitepress 进行安装 vitePress

  2. vitepress 文件夹下新建 docs 文件夹,在 vitepress 文件夹下运行 echo '# Hello VitePress' > docs/index.md ,生成 docs/index.md

  3. 修改 package.json 中的运行脚本。

"scripts": {
  "dev": "vitepress dev docs",
  "build": "vitepress build docs",
  "serve": "vitepress serve docs"
},

可以看到项目很快就启动了:

image.png

效果如下:

image.png

但是,和我们想要的还是有具体偏差的。我们一步步来。

目录结构

先来浏览下大致的文件目录,当然,如果你觉得有点繁琐,也不要紧,你可以跳过这一段,直接从下面的配置首页开始看起。

├── docs
│   ├── .vitepress (可选的)
│   │   ├── theme (可选的)
│   │   │   ├── custom.styl
│   │   │   └── index.js
│   │   ├── public (可选的)
│   │   ├── config.js (可选的)
│   ├── README.md
│   ├── guide
│   │   └── README.md
│   └── config.md
│ 
└── package.json

重点注意

虽然 vitePress 是热重载的,但是,所有对于 .vitepress/config.js 的修改,都要项目重新启动才会生效

配置首页

docs/index.md 修改为以下的代码:

---
home: true
// heroImage: /favicon.ico
heroAlt: Logo image
heroText: Interview
tagline: the website of Interview with VitePress
actionText: Get Started
actionLink: /html/
features:
  - title: Easy Setup
    details: Minimal setup with markdown-centered project structure helps you focus on writing.
  - title: Vue-Powered
    details: Enjoy the dev experience of Vue + webpack, use Vue components in markdown, and develop custom themes with Vue.
  - title: Performant
    details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded.
footer: MIT Licensed | Copyright © 2021-present CoolDream
---

配置文件基础建设

docs 文件夹下新建 .vitepress 文件夹,新增 config.js,现在的目录结构如下。

├─ docs
│  ├─ .vitepress
│  │  └─ config.js
│  └─ index.md
└─ package.json

config.js 写入以下内容:

module.exports = {
    // 网站标题
    title: 'Interview',
    // 网站描述
    description: 'Interview with vitePress',
    // 打包目录
    dest: './dist',
    head: [
        // 添加图标
        ['link', { rel: 'icon', href: '/favicon.ico' }]
    ],
}

设置了网站标题,网站描述,打包的 dist 目录,以及网站图标。

值得注意的是,所有的资源文件,都存放在 docs/public 文件夹下。

/favicon.ico 指向 docs/public/favicon.ico

使用插件

正如和 vue-cli 一样,生态环境中的插件,也有着很重要的地位,我们来安装下官方的插件,为 vitePress 添加更多的功能。

module.exports = {
    ...
    // 使用插件
    plugins: [
        '@vuepress/active-header-links',   // 页面滚动时自动激活侧边栏链接的插件
        '@vuepress/back-to-top',          // 返回顶部插件
        '@vuepress/medium-zoom',          // 图片预览插件
        '@vuepress/nprogress',        //页面顶部进度条
    ],
}

更多插件可以浏览此处

头部导航栏

module.exports = {
    ...
    // 主题配置
    themeConfig: {
        // 获取每个文件最后一次 git 提交的 UNIX 时间戳(ms),同时它将以合适的日期格式显示在每一页的底部
        // lastUpdated: 'Last Updated', // string | boolean
        // 启动页面丝滑滚动
        smoothScroll: true,
        // 导航栏配置
        nav:[
            {text: '我的个人网站', link: 'https://www.cooldream.fun/home' },
            {text: '掘金', link: 'https://juejin.cn/user/1855631359481847/posts'},
            {text: 'Github', link: 'https://github.com/Jack-Star-T'}
        ],
    }
}

左侧导航栏

module.exports = {
    ...
    // 主题配置
    themeConfig: {
        ...
        sidebar:{
            '/':getSidebar()
        }
    }
}

function getSidebar() {
    return [
        {
            text:'HTML',
            children: [
                { text: '基础', link: '/interview/HTML/' },
                { text: '进阶', link: '/interview/HTML/advanced' },
            ],
            sidebarDepth:3
        },
        {
            text:'CSS',
            children:[
                { text: '基础', link: '/CSS/' },
                { text: '进阶', link: '/CSS/advanced' },
            ]
        },
        {
          text:'Javascript',
          children:[
            { text: '基础', link: '/Javascript/' },
            { text: '进阶', link: '/Javascript/advanced' },
          ]
        },
        {
          text:'Vue',
          children:[
            { text: '基础', link: '/Vue/' },
            { text: '进阶', link: '/Vue/advanced' },
          ]
        },
        {
          text:'浏览器',
          children:[
            { text: '基础', link: '/Vue/' },
            { text: '进阶', link: '/Vue/advanced' },
          ]
        },
        {
          text:'网络',
          children:[
            { text: '基础', link: '/Network/' },
            { text: '进阶', link: '/Network/advanced' },
          ]
        },
        {
          text:'安全',
          children:[
            { text: '基础', link: '/Security/' },
            { text: '进阶', link: '/Security/advanced' },
          ]
        },
        {
          text:'面经',
          children:[
            { text: '基础', link: '/Experience/' },
            { text: '进阶', link: '/Experience/advanced' },
          ]
        },
    ]
}

link 就是点击的跳转地址。

路由

Vue 中,一个 .vue 文件就可以作为一张页面,或者是一个组件。

vitePress 中,一个 .md 文件就可以作为一张页面。

并且,根据根目录 docs ,可自动生成路由。

├── docs
│   ├── HTML 
│   │   ├── index.md     /HTML/
│   └── └── advanced.md     /HTML/advanced/
└──

页面编写 Front Matter

所谓页面的编写,其实就是对 .md 的编辑,关于 markdown 语法我们就不再赘述了。

这里尤其要说的一点是 Front Matter ,它其实就是对当前 .md 的声明。

有点类似于 HTML 文件中的 meta 标签的定位。

---
title HTML 进阶   // 当前页面的标题
lang en-US       // 当前页面的语言 可多语言,默认英语
description      // 当前页面的描述
layout           // 设置当前页面的布局组件
---

样式修改

觉得自带的样式不喜欢?想自定义样式?

首先安装插件

npm i -D stylus stylus-loader

当然,如果不想使用任何 css预处理器也可以直接用 css

那就赶紧在 .vitepress 文件夹下新建 custom.styl 文件以及 index.js

├── docs
│   ├── .vitepress (可选的)
│   │   ├── theme (可选的)
│   │   │   ├── custom.styl
│   │   │   └── index.js

index.js 中写入以下内容:

import DefaultTheme from 'vitepress/theme'
import './custom.css'

export default DefaultTheme

接下来,在 custom.styl 中尽情编写你想要的 css 代码。

如果想使用我的样式,可以具体参考我的 github 仓库 https://github.com/Jack-Star-T/vitePress

上一篇下一篇

猜你喜欢

热点阅读