VuePress学习指南(下)

2023-10-26

VuePress 如何自定义主题和页面布局

要自定义VuePress的主题,需要做以下几步:

  1. 创建主题文件夹:在VuePress项目的根目录下创建一个themes文件夹,并在其中新建一个以主题名命名的文件夹,例如my-theme。

  2. 创建主题配置文件:在my-theme文件夹中创建一个config.js文件,用于配置主题的一些选项,例如导航栏、侧边栏、颜色等。

  3. 创建主题模板文件:在my-theme文件夹中创建一个layouts文件夹,并在其中创建.vue文件,用于定义不同页面类型的布局,如首页、文章页、404页等。

  4. 引入主题:在VuePress项目的配置文件.vuepress/config.js中,将theme选项指向my-theme主题的路径。

要自定义VuePress的页面布局,需要做以下几步:

  1. 创建页面模板文件:在VuePress项目的根目录下创建一个.vue文件,用于定义特定页面的布局。

  2. 配置页面布局:在.vue文件中使用组件来包含页面内容,并通过插槽(slot)来定制布局的各个部分,如导航栏、侧边栏、页脚等。

  3. 配置页面路由:在VuePress项目的根目录下的.vuepress/config.js中,配置特定页面的路由路径和组件路径,如:

module.exports = {
  themeConfig: {
    sidebar: [
      ['/my-page', 'My Page']
    ]
  },
  extendPageData($page) {
    if ($page.path === '/my-page') {
      $page.layout = 'MyLayout'
    }
  }
}

其中sidebar选项配置了页面的侧边栏,extendPageData函数用于获取当前页面的信息,并通过layout属性指定使用哪个布局模板。

添加代码高亮、分页功能

  1. 代码高亮

VuePress 使用了 Prism.js 来实现代码高亮。要开启代码高亮功能,需要在 .vuepress/config.js 文件中进行如下配置:

module.exports = {
  themeConfig: {
    // ...
    markdown: {
      // 配置 markdown-it 插件
      extendMarkdown: md => {
        md.set({ breaks: true })
        md.use(require('markdown-it-prism'))
      }
    }
  }
}

上述配置中,我们通过 extendMarkdown 选项来引入了 markdown-it-prism 插件,该插件可以为代码块添加语法高亮。

  1. 分页

要实现分页功能,需要先安装 @vuepress/plugin-pagination 插件。安装方法如下:

npm install -D @vuepress/plugin-pagination

然后,在 .vuepress/config.js 文件中进行如下配置:

module.exports = {
  plugins: [
    '@vuepress/plugin-pagination'
  ]
}

接着,在 Markdown 文件中,你可以使用 [[pages]] 占位符来指定需要分页的位置。例如:

# My blog

[[pages]]

## Page 2

[[pages]]

VuePress实现搜索功能

要在 VuePress 中添加搜索功能,可以按照以下步骤进行操作:

  1. 安装 @vuepress/plugin-search 插件:
npm install -D @vuepress/plugin-search
  1. .vuepress/config.js 配置文件中添加插件:
module.exports = {
  plugins: [
    ['@vuepress/search', {
      searchMaxSuggestions: 10
    }]
  ]
}

其中 searchMaxSuggestions 属性用于设置最大建议项数目。

  1. 在需要启用搜索功能的页面上添加搜索框组件:
<template>
  <div>
    <SearchBox />
  </div>
</template>

<script>
import SearchBox from '@vuepress/search-box'

export default {
  components: {
    SearchBox
  }
}
</script>
  1. 运行 vuepress dev 命令启动本地服务器,在网站上查看搜索功能是否已启用。

Markdown中使用Vue组件

VuePress 是一个基于 Vue.js 的静态网站生成器,它支持使用 Markdown 来编写文档并利用 Vue.js 来构建交互式的组件。

要在 VuePress 的 Markdown 中使用 Vue 组件,需要进行以下步骤:

  1. 安装所需的 Vue 组件:
npm install --save <component-name>
  1. .vuepress/components 目录下创建一个 .vue 文件来定义该组件。

例如,如果要使用 MyComponent 组件,可以创建一个 MyComponent.vue 文件,并在其中定义组件:

<template>
  <div>
    <!-- 组件的模板 -->
  </div>
</template>

<script>
export default {
  // 组件的逻辑
}
</script>
  1. 在 Markdown 中使用组件。

可以使用 VuePress 的原生语法来调用 Vue 组件。例如,在 Markdown 中插入以下代码:

<MyComponent/>

这将会被渲染成 MyComponent.vue 文件中定义的内容。

需要注意的是,VuePress 的 Markdown 仅支持在部分标签中使用 Vue 组件。具体来说,只有在 <p><blockquote><ul><ol><li><table> 标签内部才能使用 Vue 组件。如果尝试在其他标签中使用组件,将会导致组件无法正确渲染。

此外,还可以通过 $page 对象在组件中访问页面的数据和元信息,以及通过 $site 对象访问站点的配置和元信息等。这些对象在 VuePress 中都是全局可用的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VuePress学习指南(下) 的相关文章

  • Laravel Vue js spa 应用程序

    1 我想知道为什么人们使用两台服务器用 laravel 制作 vuejs SPA 我想我们可以用另一种方式 制定这样的路线 Route get any function return view index gt where any 并让 v
  • 我可以动态创建/销毁 Vue 组件吗?

    因此 我正在创建一个相当复杂的 Vue 应用程序 它从后端 API 获取数据并将其显示在前端 具体取决于用户选择的过滤器 它的默认设置是立即显示所有内容 然后一旦用户选择过滤器 它就会拉出不具有这些属性的 卡片 组件 直到今天 一切都很顺利
  • 如何切换各个
  • 元素的类?
  • 当我切换变量时active在下面的代码中 activeCSS 类应用于列表中的所有元素 从列表中的所有元素中删除 如何单独定位列表元素 Todo List 示例具有类似的功能 待办事项 待办事项已完成 但它有点超出了我的技能范围 ul li
  • 通过 declarativeNetRequest + extensionPath 重定向时获取原始 URL

    我需要在导航时但在用户从使用设置的规则重定向之前获取 chrome 选项卡的 urldeclarativeNetRequest 目前 用户可以使用上下文菜单添加规则 当尝试访问过滤的主机时 它将被重定向到内部扩展页面 chrome cont
  • 使用 nuxt/content 显示从数据库获取的 markdown

    我在我的应用程序中使用 nuxt content 它工作正常 在应用程序的另一部分 我想从数据库中获取一些降价并显示它 let mytext Some markdown fetched from a db here
  • 如何从vuejs和firestore获取文档的id?

    我有这个代码可以从 firestore 获取所有文档 const getThemesList async commit gt const snapshot await firebase firestore collection themes
  • 在 Vue.js 2 中将 props 作为初始数据传递的正确方法是什么?

    所以我想将 props 传递给 Vue 组件 但我希望这些 props 将来会从该组件内部发生变化 例如当我使用 AJAX 从内部更新该 Vue 组件时 所以它们仅用于组件的初始化 My cars listVue 组件元素 我将具有初始属性
  • vue如何设置嵌套对象的默认道具

    我的道具是这样的 house kitchen sink 我尝试过类似的事情 但没有成功 props house type Object default gt kitchen sink 如何为此类对象设置默认道具 来自文档 对象或数组默认值必
  • 在 Vue SFC 组件中导入 SCSS 文件,无需使用 Webpack 进行重复

    当我尝试访问所有 Vue SFC 中的 scss 文件时 样式会重复 导致大型 css 包和开发工具在样式调试时崩溃 我正在使用 Webpack 4 和 webpack dev server 来构建和运行具有热重载的开发服务 我没有使用 V
  • Firestore onSnapshot() 方法多次触发

    我有一个带有多个路由和 vuex 的 vue cli 4 应用程序 Firestore 数据库已成功连接 我的应用程序立即反映从 Firestore 控制台应用于数据库的修改 在离开包含与 Firestore 同步 的组件的路线然后返回后
  • 在可组合项 vue3 中使用 props

    我正在将应用程序从 vue 2 升级到 vue 3 但在可组合项方面遇到了一些问题 我想在可组合项中使用道具 但它似乎不起作用 代码示例是从工作组件中提取的 当我将其留在组件中时 它可以正常工作 我假设defineProps不受可组合项支持
  • 如何在没有模块的情况下在 vue 中使用 TypeScript

    In package json I have devDependencies vue 2 5 16 这给了我index d ts vue d ts and so on https github com vuejs vue tree v2 5
  • 使用 vue-cli 服务时如何禁用 linting?

    我正在使用以下命令使用 vue cli 运行我的项目 vue cli service 服务 open 如何禁用所有 linting 目前每次保存时都会重新进行 linting 并且更改代码需要很长时间 我已经把 lintOnSave fal
  • Vue-动态导入vue组件

    我有很多组件 我想按需导入 我有一个下拉菜单 其中实际上包含组件列表 即要加载的内容 我试过这个例子
  • Vue 3 输入模式

    我想创建输入 如果模式不匹配 我可以用空字符替换输入的字符 模板
  • 如何在 Vuejs 中加载 Pixi 实例?

    我正在 VueJS 组件中学习 PixiJS 如下所示Pixi教程 https github com kittykatattack learningPixi我控制台显示此错误 vue runtime esm js 2b0e 619 Vue
  • 如何减少 WEBPACK + VUEJS 中的包大小

    我遵循了很多有关如何减小捆绑包大小的教程 但没有任何内容对捆绑包大小产生任何影响 我不知道为什么 每次当我向 webpack 添加一些新代码时 我的包大小都保持与以前相同 我的应用程序是使用 vue cli 3 pwa 插件 webpack
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • Nuxt JS 插件是否可以只运行一次?

    我有几个 VueX 操作 仅在服务器上运行 并从nuxtServerInit 它们向外部服务发出 HTTP 请求 这会减慢 TTFB 的速度 我想实现一个缓存插件 可以从 Redis 存储和检索值 目的是避免在每个请求的操作中发出 HTTP
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如

随机推荐

  • 信息学奥赛--进制转化

    学习目标 1 了解二进制及其他进制 2 十进制与R进制的转换 3 能编程实现进制之间的转换 学习内容 练习 一 任意进制转十进制 1 1101101 2 2 7754 8 3 F1B9AC 16 4 1011 11101 2 5 75 10
  • 开源BT磁力搜索引擎收集

    基本是利用bt网络中p2p技术实现 开源项目上实现了dht网络的搜索 是学习dht算法的好项目 https lanmaowz com open dht spider https github com dontcontactme p2pspi
  • NVIDIA Jetson TX2 解决奥比中光 Astra pro相机的ros 打不开深度信息/camera/depth/image

    背景 NVIDIA Jetson TX2 安装奥比中光 Astra pro相机的ROS 驱动后可以打开彩色相机 打不开深度信息 有点捉急 换了一台相机 还是如此 说明相机没问题驱动有问题 打开奥比中光的开发者论坛 Astra pro无法读取
  • SDN 中 DDoS 攻击问题(论文方法总结)

    SDN 中 DDoS 攻击类型 1 数据平面DDoS攻击 数据平面由多个启用OpenFlow的转发设备组成 这些设备被称为OpenFlow交换机 每个交换机都有一个有限的流表大小来存储规则和有限的处理能力来处理不匹配的数据包 因此 它成为缓
  • rancher部署flink集群

    rancher版本 v2 6 8 k8s版本 v1 22 13 rke2r1 flink集群版本 1 15 0 flink安装模式 session cluster 写在前面 因为参照官网的说明安装过程中出现了很多问题 特记录于此 避免后续重
  • 2020-6-19 Idea打包项目war并且发布到服务器

    打包的介绍 打包和上传到服务器的介绍
  • linux操作系统发行版_Linux操作系统和发行版

    linux操作系统发行版 Newcomers to Linux world generally confuse or no idea about distributions We call generally the operating s
  • ChatGPT能代替搜索引擎吗?ChatGPT和搜索引擎有什么区别?

    ChatGPT和搜索引擎是两种在信息获取和交流中常用的工具 ChatGPT是一种基于人工智能技术的聊天机器人 而搜索引擎是一种在互联网上搜索信息的工具 尽管它们都是依托互联网与信息获取和交流有关 部分功能重合 但在很多方面存在着明显的区别
  • JS逆向

    关注它 不迷路 本文章中所有内容仅供学习交流 不可用于任何商业用途和非法用途 否则后果自负 如有侵权 请联系作者立即删除 1 需求 最近美食群发了很多二维码 提取链接后 可以在移动端的浏览器上愉快的播放 然而 当我把 url 链接复制到 我
  • mac安装vue

    需要提前安装brew 安装方法 mac使用Homebrew安装node 1 安装node 上面链接已经详细介绍如何安装node 这里一笔带过 brew install nodejs node v 2 安装webpack cnpm insta
  • 令人眼花缭乱的区块链名词之:UTXO

    目录 1 交易 2 UTXO hello 大家好 我们第六期的区块链技术分享来啦 本期分享的主题是UTXO Unspent Transaction output 未花费的交易输出 在比特币系统中 每个全节点都会记录UTXO 要理解UTXO模
  • python 爬取今日头条热点新闻

    嗯 今天就让我们来一起爬爬今日头条的热点新闻吧 今日头条地址 https www toutiao com ch news hot 在浏览器中打开今日头条的链接 选中左侧的热点 在浏览器开发者模式 network下很快能找到一个 catego
  • Qt应用程序自动重启(零零散散)

    老有人问如何让Qt的应用程序自动重启 稍微写一点 也顺便理理自己的思路 2011 10 26 自动重启 也就是退出当前进程 启动一个新的进程 于是 先看程序如何退出 退出 Qt程序的一般结构如下 int main int argc char
  • 【Java入门杂记】

    文章目录 快捷键 转义符 数据类型 变量 变量名命名规则 交换数值 运算符 逻辑运算符 Scanner 条件语句 循环语句 字符匹配 随机数 二分查找 快捷键 javac与新建系统变量的java路径有关 atl 补齐敏感提示 Ctrl D
  • Java 多线程案例

    多线程解题套路 循环 同步代码块 判断共享数据 已经到末尾 判断共享数据 没有到末尾 案例一 需求 一共有1000张电影票 可以在两个窗口领取 假设每次领取的时间为3000毫秒 请用多线程模拟卖票过程并打印剩余电影票的数量 代码实现 pac
  • CCF CSP认证题目(Python)

    2022 12 1 n i input split n int n i float i sum 0 text list input split for j in range n 1 text j int text j sum text j
  • Vue如何保存当前页面的状态

    Vue如何保存当前页面的状态 0 引言 1 问题的本质探讨 1 1 保留当前页面的状态 1 2 Vue页面的本质 2 问题的解决方案 2 1 组件销毁的情况下传递参数 2 1 1 利用本地存储 2 1 2 利用路由参数 2 2 组件仍在的情
  • 06目标检测-One-stage的目标检测算法

    一 One stage目标检测算法 使用CNN卷积特征 直接回归物体的类别概率和位置坐标值 无region proposal 准确度低 速度相对two stage快 二 One stage基本流程 输入图片 对图片进行深度特征的提取 主干神
  • xml命名空间

    XML命名空间主要完成两件事情 首先 与C 的命名空间一样 它们可以帮助避免命名冲突 当你要合并来自两个不同XML文件的时候这可能会成为一个问题 其次 命名空间赋予了名称一个绝对的意义 例如 名称 nil 可以代表任何意思 然而 如果和ht
  • VuePress学习指南(下)

    VuePress 如何自定义主题和页面布局 要自定义VuePress的主题 需要做以下几步 创建主题文件夹 在VuePress项目的根目录下创建一个themes文件夹 并在其中新建一个以主题名命名的文件夹 例如my theme 创建主题配置