MDX 扫盲
MDX
Markdown
En JSX
MDX IDE 插件
1 MDX 让 Markdown 步入组件时代
MDX 是一种书写格式,允许你在 Markdown 文档中无缝地插入 JSX 代码。
你可以导入(import)组件,例如交互式图表或弹框,并将它们 嵌入到内容当中。
这使得用组件编写较长的内容形成了 一场冲击 🚀。
\(^o^)/~
❤️ 强大: MDX 将 markdown 和 JSX 语法混合在一起并完美地 融入基于 JSX 的项目当中。
💻 一切皆组件: 导入(import) JSX 组件并 在 MDX 文档中直接渲染它们。
🔧 可定制: 为每一个 markdown 元素决定用哪个组件渲染。 渲染。
📚 基于 Markdown: Markdown 的简洁和优雅依然得到了保存, 只须在需要时才混入 JSX 。
🔥 超级超级快: MDX 没有运行时,所有的编译都发生在 构建阶段。
2 Webpack & MDX
MDX 提供了内置的 webpack 加载器,你需要为 webpack 项目安装并配置 此加载器。
2.1 安装
# webpack 插件
npm install --save-dev @mdx-js/loader;
# babel插件
npm install --save-dev @babel/preset-env @babel/preset-react
2.2 配置
webpack.config.js
module.exports = {
module: {
// ...
rules: [
// ...
{
test: /\.mdx?$/, // .md 和 .mdx 扩展名的文件定义处理程序
// test: /\.mdx$/, // .mdx 扩展名的文件定义处理程序
use: ['babel-loader', '@mdx-js/loader']
}
]
}
}
const images = require('remark-images')
const emoji = require('remark-emoji')
module.exports = {
module: {
rules: [
{
test: /\.mdx?$/,// .md 和 .mdx 扩展名的文件定义处理程序
// test: /\.mdx$/, // .mdx 扩展名的文件定义处理程序
use: [
{
loader: 'babel-loader'
},
{
loader: '@mdx-js/loader',
options: { // 使用插件
remarkPlugins: [images, emoji]
}
}
]
}
]
}
}
.babelrc
{
"presets": ["@babel/env", "@babel/react"]
}
2.3 在浏览器中运行 MDX
module.exports = {
node: {
fs: 'empty' // 忽略 掉 nodejs fs 模块
}
}
3 VSCode & MDX
VSCode 上的插件
vscode-mdx
vscode-mdx-preview