Markdown 拓展-使用 vue.press 生成网站

简介: 介绍VuePress V2 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown在新窗口打开 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。

介绍


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


VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求,但是现在它已经在帮助大量用户构建他们的文档、博客和其他静态网站。


它是如何工作的?



一个 VuePress 站点本质上是一个由 Vue在新窗口打开Vue Router在新窗口打开 驱动的单页面应用 (SPA)。


路由会根据你的 Markdown 文件的相对路径来自动生成。每个 Markdown 文件都通过 markdown-it在新窗口打开 编译为 HTML ,然后将其作为 Vue 组件的模板。因此,你可以在 Markdown 文件中直接使用 Vue 语法,便于你嵌入一些动态内容。


在开发过程中,我们启动一个常规的开发服务器 (dev-server) ,并将 VuePress 站点作为一个常规的 SPA。如果你以前使用过 Vue 的话,你在使用时会感受到非常熟悉的开发体验。


在构建过程中,我们会为 VuePress 站点创建一个服务端渲染 (SSR) 的版本,然后通过虚拟访问每一条路径来渲染对应的 HTML 。


快速上手


依赖环境




创建并进入一个新目录

mkdir vuepress-starter
cd vuepress-starter


初始化项目


  • YARN


  • NPM

git init
yarn init


将 VuePress 安装为本地依赖


  • YARN


  • NPM

yarn add -D vuepress@next


package.json 中添加一些 scripts在新窗口打开


{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}


将默认的临时目录和缓存目录添加到 .gitignore 文件中


echo 'node_modules' >> .gitignore
echo '.temp' >> .gitignore
echo '.cache' >> .gitignore


创建你的第一篇文档

mkdir docs
echo '# Hello VuePress' > docs/README.md


在本地启动服务器来开发你的文档网站


  • YARN


  • NPM

yarn docs:dev


VuePress 会在 http://localhost:8080在新窗口打开 启动一个热重载的开发服务器。当你修改你的 Markdown 文件时,浏览器中的内容也会自动更新。


页面



假设这是你的 Markdown 文件所处的目录结构:


└─ docs
   ├─ guide
   │  ├─ getting-started.md
   │  └─ README.md
   ├─ contributing.md
   └─ README.md


docs 目录作为你的 sourceDir ,例如你在运行 vuepress dev docs 命令。此时,你的 Markdown 文件对应的路由路径为:


相对路径 路由路径
/README.md /
/contributing.md /contributing.html
/guide/README.md /guide/
/guide/page.md /guide/page.html


markdown 拓展语法


链接


在你使用 Markdown 的 链接语法在新窗口打开 时, VuePress 会为你进行一些转换。


Emoji 🎉


你可以在你的 Markdown 内容中输入 :EMOJICODE: 来添加 Emoji 表情。


前往 emoji-cheat-sheet在新窗口打开 来查看所有可用的 Emoji 表情和对应代码。


输入

VuePress 2 已经发布 :tada: !


输出


VuePress 2 已经发布 🎉 !


目录


如果你想要把当前页面的目录添加到 Markdown 内容中,你可以使用 [[toc]] 语法。


代码块


下列代码块扩展是在 Node 端进行 Markdown 解析的时候实现的。这意味着代码块并不会在客户端被处理。


行高亮


你可以在代码块添加行数范围标记,来为对应代码行进行高亮:


输入

```ts{1,6-8}
import type { UserConfig } from '@vuepress/cli'
export const config: UserConfig = {
  title: '你好, VuePress',
  themeConfig: {
    logo: 'https://vuejs.org/images/logo.png',
  },
}


行数范围标记的例子:


  • 行数范围: {5-8}


  • 多个单行: {4,7,9}


  • 组合: {4,7-13,16,23-27,40}


行号


你肯定已经注意到在代码块的最左侧会展示行号。这个功能是默认启用的,你可以通过配置来禁用它。


你可以在代码块添加 :line-numbers / :no-line-numbers 标记来覆盖配置项中的设置。


站点配置



base


类型: string


默认值: /


详情:部署站点的基础路径。


如果你想让你的网站部署到一个子路径下,你将需要设置它。它的值应当总是以斜杠开始,并以斜杠结束。举例来说,如果你想将你的网站部署到


https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/"。


base 将会作为前缀自动地插入到所有以 / 开始的其他选项的链接中,所以你只需要指定一次。


主题配置



顶部导航栏设置


navbar


  • 类型: false | (NavbarItem | NavbarGroup | string)[]


  • 默认值: []


  • 详情:导航栏配置。设置为 false 可以禁用导航栏。为了配置导航栏元素,你可以将其设置为 导航栏数组 ,其中的每个元素是 NavbarItem 对象、 NavbarGroup 对象、或者字符串:


  • NavbarItem 对象应该有一个 text 字段和一个 link 字段,还有一个可选的 activeMatch 字段。


  • NavbarGroup 对象应该有一个 text 字段和一个 children 字段。 children 字段同样是一个 导航栏数组 。


  • 字符串应为目标页面文件的路径。它将会被转换为 NavbarItem 对象,将页面标题作为 text ,将页面路由路径作为 link 。


示例 1:


module.exports = {
  themeConfig: {
    navbar: [
      // NavbarItem
      {
        text: 'Foo',
        link: '/foo/',
      },
      // NavbarGroup
      {
        text: 'Group',
        children: ['/group/foo.md', '/group/bar.md'],
      },
      // 字符串 - 页面文件路径
      '/bar/README.md',
    ],
  },
}


示例 2:

module.exports = {
  themeConfig: {
    navbar: [
      // 嵌套 Group - 最大深度为 2
      {
        text: 'Group',
        children: [
          {
            text: 'SubGroup',
            children: ['/group/sub/foo.md', '/group/sub/bar.md'],
          },
        ],
      },
      // 控制元素何时被激活
      {
        text: 'Group 2',
        children: [
          {
            text: 'Always active',
            link: '/',
            // 该元素将一直处于激活状态
            activeMatch: '/',
          },
          {
            text: 'Active on /foo/',
            link: '/not-foo/',
            // 该元素在当前路由路径是 /foo/ 开头时激活
            // 支持正则表达式
            activeMatch: '^/foo/',
          },
        ],
      },
    ],
  },
}


最终配置效果



VuePress 站点必要的配置文件是 .vuepress/config.js,它应该导出一个 JavaScript 对象。如果你使用 TypeScript ,你可以将其替换为 .vuepress/config.ts ,以便让 VuePress 配置得到更好的类型提示。


config.ts 配置


import { defineUserConfig } from 'vuepress'
import type { DefaultThemeOptions } from 'vuepress'
export default defineUserConfig<DefaultThemeOptions>({
  // 站点配置
  base: '/vuepress/',
  lang: 'zh-CN',
  title: '你好 VuePress',
  description: 'Just playing around',
  // 主题和它的配置
  theme: '@vuepress/theme-default',
  themeConfig: {
    logo: 'https://vuejs.org/images/logo.png',
    navbar: [
      {
        text: '指南',
        link: ' https://v2.vuepress.vuejs.org/zh/guide/#%E5%AE%83%E6%98%AF%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%E7%9A%84',
      },      
      // 嵌套 Group - 最大深度为 2
      {
        text: '参考',
        children: [
          {
            text: 'VuePress',
            children: [{text: '命令行接口',link: '/cli', activeMatch: '/cli',}, {text: '配置',link: '/config',activeMatch: '/config'}],
          }
        ],      
      },
      {
        text: 'Github',
        link: 'https://github.com/vuepress/vuepress-next',
      },    
    ],  
  },
})


VuePress Demo 代码地址


https://gitee.com/kaiLee/Demo-VuePress


总结


优点:配套工具较为完善,默认给的主题已经集成度很高了,自定义选项多,更适合程序员发的文档。


缺点:V2 的文档写的有点糙,很多时候不知道怎样配置启用所需的功能。

一些记录:


{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}


  • vuepress 更加适合开发者,包含各种字段配置。可搭配使用自定义的 vue 组件。反而提供给普通用户的文档写的比较简单。


  • Markdown 源文件放置在你项目的 docs 目录,很多时候你需要在其中创建一个 .vuepress 目录并进行配置。


  • 使用的是默认的构建输出目录 (.vuepress/dist) ;


  • 注意构建产物的路径问题,需要设置正确的 base 选项。无论你是单独部署到 nginx 还是 GitHub Pages、Gitlab Pages 上。否则可能会样式文件找不到导致网页加载不正常。


  • yarn docs:dev 只是便于调试,例如我试了站点配置我修改了 lang 和 description 字段,但是只有构建产物后这两个家伙才生效。


参考


首页 | VuePress


https://v2.vuepress.vuejs.org/zh/



目录
相关文章
|
Python
Markdown 拓展-Docsify 主题美化
docsify-themeable - A delightfully simple theme system for docsify.js https://jhildenbiddle.github.io/docsify-themeable/#/
1266 0
Markdown 拓展 - 对数学公式的支持
MathJax 和 LaTeX 数学公式 支持 MathJax 是一款运行在浏览器中的开源数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式,不需要使用图片。目前,MathJax可以解析 Latex、MathML 和 ASCIIMathML 的标记语言。MathJax 项目于 2009 年开始,发起人有 American Mathematical Society, Design Science等,还有众多的支持者,个人感觉MathJax会成为今后数学符号渲染引擎中的主流,也许现在已经是了。本文接下来会讲述 MathJax 的基础用法,但不涉及MathJax 的安装及配置。
370 0
Markdown 拓展 - 对数学公式的支持
|
存储 负载均衡 JavaScript
Markdown 拓展-免费图床/网盘方案
前言 最近时常在 gitee.io 上写一些 markdown 格式的文章,所以亟需获取免费的图床服务。要求是最好还能自定义文件名。
900 0
Markdown 拓展-免费图床/网盘方案
|
XML 前端开发 JavaScript
Markdown 拓展-Docsify 构建接口文档
优点:使用 markdown 编写,docsify 作为支撑。快速高效,若搭载搜索功能,功能较为完善。且可部署在内网环境。 缺点:不支持直接点击按钮进行 HTTP 请求,需要手动粘贴参数到 POSTMAN 等工具。 Docsify 初始化 & 运行
166 0
Markdown 拓展-Docsify 构建接口文档
|
缓存 JavaScript 开发工具
Markdown 拓展-Hexo 搭建博客(上)
前言 一直想搭建个人网站, 当我了解到 hexo 是一款快速、简洁且高效的博客框架,我就迫不及待想尝试下。
129 0
Markdown 拓展-Hexo 搭建博客(下)
自定义配置 其实就是一个迁移过程,将配置和文章这两块内容记住修改点,然后迁移到新项目即可。 _config.yml title: Blogs of acc8226 description: a personal website of acc8226 author: acc8226 ## 中文简体 zh-CN, 可以选择更改为en language: zh-CN timezone: Asia/Shanghai # 其中 :category 取目录,post_title 则去取文章中的title permalink: :category/:post_title/ ## updated_op
200 0
|
JavaScript 前端开发
Markdown 拓展-Docsify / 博客园加特效
文字特效 <script type="text/javascript"> var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e) { var a = new Array("❤学习","❤奥利给","❤干就完事","❤一giao我里giaogiao"); var $i = $("<span></span>").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x =
129 0
|
数据可视化 开发工具 uml
Markdown 拓展:Gitlab/Github 开启 UML 图支持
为什么需要它 一些可视化工具再给我们带来直观性的同时,也增加了操作的难度,需要精细地调整组件的大小和样式,更多的时候,我们不是为了写一份漂亮的报告而画流程图,只是需要便捷地向他人分享自己的 idea,在这样的需求下,代码生成流程图显然更适合。
831 0
|
1月前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
84 1
Linux系统之部署轻量级Markdown文本编辑器
|
3月前
|
存储 安全 数据安全/隐私保护
Django 后端架构开发:富文本编辑器权限管理与 UEditor 、Wiki接入,实现 Markdown 文本编辑器
Django 后端架构开发:富文本编辑器权限管理与 UEditor 、Wiki接入,实现 Markdown 文本编辑器
143 0