news 2026/6/10 15:54:14

Next.js第二十章(MDX)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Next.js第二十章(MDX)

MDX

MDX是一种将Markdown和React组件混合在一起的语法,它可以在Markdown中使用React组件,从而实现更复杂的页面。另外就是我们在编写技术文档或者博客的时候,配合SSG模式,更喜欢用Markdown来编写,MDX他正好将MarkdownReact组件混合在一起,实在是方便至极。

安装依赖

npminstall@next/mdx @mdx-js/loader @mdx-js/react @types/mdx

启用MDX功能

1.next.config.js配置以下内容
//next.config.jsimporttype{NextConfig}from"next";importcreateMDXfrom'@next/mdx'constwithMDX=createMDX({//extension: /\.(md|mdx)$/ 默认只支持mdx文件,如果想额外支持md文件编写次行代码。});constnextConfig:NextConfig={reactCompiler:true,pageExtensions:['js','jsx','md','mdx','ts','tsx'],};exportdefaultwithMDX(nextConfig);
2.根目录下面创建mdx-components.tsx文件
importtype{MDXComponents}from'mdx/types'constcomponents:MDXComponents={}exportfunctionuseMDXComponents():MDXComponents{returncomponents}

创建文件

my-project ├── app │ └── mdx-page │ └── page.(mdx/md) |── mdx-components.(tsx/js) └── package.json

代码高亮

打开编辑器-插件市场-搜索MDX-安装MDX插件

基础使用

可以支持(Markdown语法 +React组件 +HTML标签)

# welcome to MDX 这是一段文字,**他加粗了**,并且有重点内容`important`。 - one - two - three <div className='bg-red-500'> <p>自定义标签</p> </div>

引入自定义组件

引入自定义组件一定要跟md语法之间空一行,否则会报错

src/app/home/page.mdx

import MyComponent from './my-component'; //引入自定义组件一定要跟md语法之间空一行,否则会报错。 # welcome to MDX 这是一段文字,**他加粗了**,并且有重点内容`important`。 - one - two - three <div className='bg-red-500'> <p>自定义标签</p> </div> <MyComponent />

mdx文件无法实现一些复杂的交付逻辑,如果有复杂的交付逻辑,我们可以使用React组件来实现,然后在mdx文件中引入即可。

//src/app/home/my-component.tsx'use client'import{useState}from'react';exportdefaultfunctionMyComponent(){const[count,setCount]=useState(0);return(<div><p>Count:{count}</p><button onClick={()=>setCount(count+1)}>Increment</button></div>);}

全局样式

如果你希望在这个项目中修改所有的MDX文件的样式,你可以使用mdx-components.tsx文件来修改。

//mdx-components.tsximporttype{MDXComponents}from'mdx/types'constcomponents:MDXComponents={h1:({children})=><h1 className='text-2xl text-red-400 font-bold'>{children}</h1>,//# 代表h1 你可以自定义修改样式li:({children})=><li className='list-disc text-blue-500 list-inside'>{children}</li>,//- 代表li 你可以自定义修改样式//...你可以自定义修改更多的样式}exportfunctionuseMDXComponents():MDXComponents{returncomponents}

远程加载mdx/md文件

如果你的MDX文件存储在远程服务器上,你可以使用远程mdx来加载文件。

npminstallnext-mdx-remote-client
//src/app/home/page.tsximport{MDXRemote}from'next-mdx-remote-client/rsc'exportdefaultasyncfunctionHome(){constres=awaitfetch('https://nextjs-docs-henna-six.vercel.app/xm.mdx')//链接是彩蛋constsource=awaitres.text()return(<MDXRemote source={source}/>);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:44:09

编程教学中使用GLM-4.6V-Flash-WEB识别代码截图并纠错

编程教学中使用GLM-4.6V-Flash-WEB识别代码截图并纠错 在编程课堂上&#xff0c;一个常见的场景是&#xff1a;学生举着手里的手机&#xff0c;急切地问老师&#xff0c;“我这段代码为什么报错&#xff1f;”——屏幕上是一张歪斜的、带有反光的代码截图。传统教学只能靠人工逐…

作者头像 李华
网站建设 2026/6/10 11:27:25

1小时搭建Maven镜像站:国内开发加速方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个一键部署的Maven镜像站解决方案&#xff0c;基于Docker容器&#xff0c;预配置好阿里云或华为云的镜像源。包含自动化脚本&#xff0c;能够监控上游仓库更新并自动同步。提…

作者头像 李华
网站建设 2026/6/10 13:11:38

AI如何帮你高效管理localStorage数据?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个基于localStorage的待办事项应用&#xff0c;包含以下功能&#xff1a;1. 添加任务&#xff08;自动生成唯一ID&#xff09;&#xff1b;2. 标记任务完成状态&#xff1b;…

作者头像 李华
网站建设 2026/6/10 13:10:19

图解说明RISC架构中的指令流水线设计

深入浅出RISC指令流水线&#xff1a;从MIPS五级架构看现代处理器的并行之道你有没有想过&#xff0c;为什么今天的手机处理器能在眨眼间完成成千上万条指令&#xff1f;为什么嵌入式设备可以用极低功耗运行复杂算法&#xff1f;答案就藏在指令流水线这门“时间折叠术”里。尤其…

作者头像 李华
网站建设 2026/6/10 11:27:33

GLM-4.6V-Flash-WEB是否支持FP16精度推理?开启方式

GLM-4.6V-Flash-WEB是否支持FP16精度推理&#xff1f;开启方式 在当前多模态AI应用快速落地的背景下&#xff0c;越来越多的企业开始将视觉语言模型&#xff08;VLM&#xff09;集成到Web服务中&#xff0c;用于图像理解、智能客服、内容审核等场景。然而&#xff0c;一个普遍存…

作者头像 李华
网站建设 2026/6/10 11:26:15

多层工控板PCB电镀+蚀刻层间对准解决方案

多层工控板PCB电镀蚀刻层间对准&#xff1a;从问题根源到闭环控制的实战方案在高端工业控制设备中&#xff0c;一块小小的PCB往往承载着成千上万条信号路径。随着系统功能日益复杂&#xff0c;6层、8层甚至12层的多层板已成为主流配置。然而&#xff0c;层数增加带来的不仅是布…

作者头像 李华