Fumadocs

导入 MDX 文件

直接导入 MDX 文件。

介绍

🌐 Introduction

MDX 文件将被编译为带有如下导出的 JavaScript:

🌐 MDX files will be compiled into JavaScript with exports like:

  • default:主要成分。
  • frontmatter:前置数据。
  • 由 remark/rehype 插件生成的其他属性。

因此,它们也可以用作页面,或者作为你可以导入的组件。

🌐 Hence, they can also be used as a page, or components that you can import.

作为组件使用

🌐 Using as Component

你可以将它们作为组件导入:

🌐 You can import them as a component:

app/my-page.tsx
import MyPage from '@/content/page.mdx';
import { getMDXComponents } from '@/mdx-components';

export default function Page() {
  return (
    <div className="prose">
      
      <MyPage components={getMDXComponents()} />
    </div>
  );
}

作为页面使用

🌐 Using as Page

在 Next.js 中,你可以使用 page.mdx 来替代 page.tsx 在 app 目录下创建新页面。

🌐 On Next.js, you can use page.mdx instead of page.tsx for creating a new page under the app directory.

---
title: My Page
---

export { default } from '@/components/layouts/page';

# Hello World

This is my page.

默认情况下它没有 MDX 组件,你需要自己提供它们:

🌐 It doesn't have MDX components by default, you have to provide them:

import defaultMdxComponents from 'fumadocs-ui/mdx';
import type { MDXComponents } from 'mdx/types';

export function getMDXComponents(components?: MDXComponents): MDXComponents {
  return {
    ...defaultMdxComponents, // for Fumadocs UI
    ...components,
  };
}

// export a `useMDXComponents()` that returns MDX components
export const useMDXComponents = getMDXComponents;

其他框架?

其他 React.js 框架,如 Tanstack Start 通常更倾向于显式声明加载器,建议在页面中将它们作为组件来使用。

🌐 Other React.js frameworks like Tanstack Start usually prefer explicit declaration of loaders, it's recommended to use them as components in your pages instead.

Last updated on

On this page