博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让 Markdown 中的代码可以实时运行
阅读量:6996 次
发布时间:2019-06-27

本文共 1526 字,大约阅读时间需要 5 分钟。

hot3.png

背景

让 Markdown 中的代码可以实时运行,为什么会有这样一个需求?

在我们前端团队中,技术相关的文档都采用 Markdown 编写, 文档中往往会伴随很多示例代码,我们希望大家在阅读文档的时候,可以运行示例代码,看到效果。

需求

  • 让 Markdown 中的代码可以运行,并预览效果。
  • 代码可以在线编辑。
  • 不影响整个文档流的布局。
  • 支持 React, 支持代码高亮。
  • 可以配置 babel。

明确需求以后,写了一个 React 组件来满足这些功能, , 首先看一下效果:

preview

在线预览:

原理

  • 就通过 markdown-loaderhtml-loader 解析 Markdown 文档。
  • 通过正则表达式取出 code ,交给 codemirror
  • codemirror 中的代码通过 babel 编译,再通过 ReactDOM.render 渲染到指定的容器中。

安装

npm install react-code-view

配置 webpack

在 webpack 中需要添加对 markdown-loader 的支持。 需要安装:

npm install html-loader --save-devnpm install markdown-loader --save-devnpm install react-markdown-reader --save-dev

webpack.config.js 配置

>=webpack 2.x +

const markdownRenderer = require('react-markdown-reader').renderer;{  test: /\.md$/,  use: [{    loader: 'html-loader'  }, {    loader: 'markdown-loader',    options: {      pedantic: true,      renderer: markdownRenderer(/**languages:Array
**/) } }]}

languages 默认值:["javascript", "bash", "xml", "css", "markdown", "less"];

Github:

添加 Babel

示例代码中通常是使用到 ES2015+ , React 等,需要对代码实时做编译,所以在 html 中引入 babel :

示例

import CodeView from 'react-code-view';import '~react-code-view/lib/less/index.less';import { Button } from 'rsuite';
{require('./example.md')}

源代码都统一写在 markdown 中,参考:

这里需要注意的是把需要运行的代码一定要放在 <!--start-code--><!--end-code--> 之间。

API

Name Type Default value Description
dependencies Object 依赖的组件
showCode boolean true 显示代码
babelTransformOptions Object { presets: ['stage-0', 'react', 'es2015'] } babel 配置参数

谁在用?

转载于:https://my.oschina.net/simonguo/blog/1935432

你可能感兴趣的文章
实战Puppet 集中配置管理系统(3)——Puppet dashboard与nginx+passenger安装配置
查看>>
textarea焦点的用法
查看>>
用java连接apache geode
查看>>
gitlab 2.7版本升级到2.8
查看>>
自动化运维工具安装部署 chef (九)- 重温安装
查看>>
sharepoint 2010 网站集定期备份
查看>>
管理SCCM/MDT中的驱动分类
查看>>
java之HashTable
查看>>
两个小公司两位大师傅
查看>>
[全球最详细] 《统一沟通-微软-实战》VS《统一沟通-微软-技巧》-51CTO
查看>>
一款好用的开源信息安全管理系统演示(视频)
查看>>
谈谈编程修养
查看>>
数据库方言
查看>>
51CTO,我们彼此见证【我与51CTO的故事】
查看>>
Android应用程序启动过程源代码分析(3)
查看>>
第七集思科发现协议CDP精讲
查看>>
DBAplus广州社群第一次线下活动
查看>>
用Sawmill搭建日志平台
查看>>
谈谈: 事件和委托
查看>>
Windows Server 2012体验之配置存储池
查看>>