导航栏模块

导航栏对一个网站来说非常重要,它可以让用户快速的在网站的不同页面之间进行跳转,也可以让用户快速的找到网站的一些重要信息。

自定义导航菜单

你可以在 themeConfig.nav 中添加自定义的导航菜单,配置为一个数组,如下:

rspress.config.ts

  1. import { defineConfig } from 'rspress/config';
  2. export default defineConfig({
  3. themeConfig: {
  4. nav: [],
  5. },
  6. });

导航栏配置为一个数组,数组中的每一项都是一个 NavItem 对象,它具有以下类型:

  1. export type NavItem = NavItemWithLink | NavItemWithChildren;

也就是说,每个导航栏元素( NavItem )可以是一个链接( NavItemWithLink ),也可以是一个包含子元素的导航栏组( NavItemWithChildren )。

NavItemWithLink

  1. export interface NavItemWithLink {
  2. text: string;
  3. link: string;
  4. activeMatch?: string;
  5. position?: 'left' | 'right';
  6. }

其中各项属性的含义如下:

  • text - 导航栏文本
  • link - 导航栏链接
  • activeMatch - 导航栏链接的激活规则
  • position - 导航栏菜单项定位

属性详情:

activeMatch 用于匹配当前路由,当路由匹配 activeMatch 规则时,nav 项会高亮显示。

默认情况下,activeMatch 是 NavItem 的 link 属性。

position 用于配置顶部菜单项的独立定位,可选项为:

  • 'left':置于菜单项到顶部的左侧菜单栏;
  • 'right':置于菜单项到顶部的右侧菜单栏。

如果 position 未配置的情况下会默认放到右侧菜单栏,效果等同于配置 'right'

NavItemWithChildren

  1. export interface NavItemWithChildren {
  2. text: string;
  3. items: (NavItemWithLink | NavItemWithChildren)[];
  4. position?: 'left' | 'right';
  5. }

其中各项属性的含义如下:

  • text - 导航栏文本
  • items - 子导航栏元素
  • position- 带有子元素的导航栏菜单项定位

示例

rspress.config.ts

  1. import { defineConfig } from 'rspress/config';
  2. export default defineConfig({
  3. themeConfig: {
  4. nav: [
  5. {
  6. text: 'Home',
  7. link: '/',
  8. position: 'left',
  9. },
  10. {
  11. text: '更多链接',
  12. items: [
  13. {
  14. text: 'GitHub',
  15. link: 'http://github.com/',
  16. },
  17. {
  18. text: 'X',
  19. link: 'http://x.com/',
  20. },
  21. // 也可以是一个导航栏组
  22. {
  23. text: 'Group',
  24. items: [
  25. {
  26. text: 'Personal',
  27. link: 'http://example.com/',
  28. },
  29. {
  30. text: 'Company',
  31. link: 'http://example.com/',
  32. },
  33. ],
  34. },
  35. ],
  36. position: 'right',
  37. },
  38. ],
  39. },
  40. });

白天/夜间模式

默认情况下导航栏会带上 白天/夜间 模式的切换按钮,你可以通过如下的配置禁用:

rspress.config.ts

  1. import { defineConfig } from 'rspress/config';
  2. export default defineConfig({
  3. themeConfig: {
  4. darkMode: false,
  5. },
  6. });

相关链接

网站的社交链接。比如:

rspress.config.ts

  1. import { defineConfig } from 'rspress/config';
  2. export default defineConfig({
  3. themeConfig: {
  4. socialLinks: [
  5. {
  6. icon: 'github',
  7. link: 'github.com/web-infra-dev/modern.js',
  8. },
  9. ],
  10. },
  11. });

更多配置请参考链接