使用Next.js和MDX构建个人博客
介绍
搞研发嘛,总得有个博客吧,或者你把它当成你大一的课业也行,记录一下自己的学习过程,顺便分享一下自己的经验。再加上Nextjs这强大SEO优化,和MDX这么方便的方案,简直就是天作之合。当然这里没有做后台系统,只是单纯的前端博客,如果你需要后台系统,可以考虑使用Nextjs的Server Actions。 如果都2025年了,你还不会知道Nextjs和MDX,那我觉得你该醒醒了。
仓库
如果你对这个网站感兴趣的话可以看看我的仓库。如果这个仓库对你有帮助的话,可以点个star支持一下。
技术栈
- Next.js
- MDX
- Tailwind CSS
- Shadcn UI
- Framer Motion
- React
- TypeScript
- @phosphor-icons/react
如果你只是想做一个博客的话,上面有些以来是可以不装的。比如motion,它是一个动画库。 另外再提一嘴比起lucide我更喜欢phosphor-icons/react,因为它的图标更多,而且更符合我的审美,美中不足的是props有点阴间
创建项目
bash
安装依赖
为了保证博客的正常运行,我们至少安装以下依赖:
bash
配置Next.js
首先需要配置一下turbopack(这里注意一下在老版本的tubopack中mdx相关的插件是有兼容性问题的)
ts
创建MDX组件
注意无论你是用了src还是没有使用src的项目结构,都必须保证这个mdx-components.tsx文件在项目根目录下。
用法可以参考下面的代码,这里的代码块方案参考了shadcn在docs中的方案。
tsx
兼容夜间模式
css
Tailwind食用指南
如果你使用了tailwind的话,那么你会发现mdx的所有样式都被重置了,这个时候我建议你装一下tailwind-typography。
bash
css
用法的话就是在你包裹mdx的地方加入prose类就行了,比如:
tsx