经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
React展示markdown文件
来源:cnblogs  作者:wang_yb  时间:2021/4/6 10:10:29  对本文有异议

概述

markdown 文件虽然可以转成 html 文件再展示在浏览器中, 但多了一层转换总觉得有些麻烦,特别是对于需要频繁改动的 markdown 文件。

所以,这里探索了一种直接在 React 工程中显示 Markdown 内容的方式。 把 markdown 文件当成静态 html 一样来展示,只要编辑保存 markdown 文件之后,就可以直接在浏览器中查看。

实现方式

这里主要记录如何在 React 工程中实现直接展示 markdown 文件,对于 React 工程的创建和运行不再赘述。

依赖的主要 package

首先下载这 3 个 npm package。

  1. yarn add react-markdown # 这是主要的package
  2. yarn add remark-gfm # 这个是插件,为了识别gfm格式的markdown
  3. yarn add markdown-navbar # 这个是为了生成目录

前端页面

前端页面 2 部分,一个 jsx,一个 css

  1. import React, { useState, useEffect } from 'react';
  2. import ReactMarkdown from 'react-markdown';
  3. import gfm from 'remark-gfm';
  4. import MarkNav from 'markdown-navbar';
  5. import 'markdown-navbar/dist/navbar.css';
  6. import './index.css';
  7. const Help = () => {
  8. const [md, handleMD] = useState('loading... ...');
  9. useEffect(() => {
  10. fetch('/help-doc/help.md')
  11. .then((resp) => resp.text())
  12. .then((txt) => handleMD(txt));
  13. }, [md]);
  14. return (
  15. <div>
  16. <div className="nav-container">
  17. <MarkNav className="article-menu" source={md} headingTopOffset={80} ordered={false} />
  18. </div>
  19. <div className="article-container">
  20. <ReactMarkdown plugins={[[gfm, { singleTilde: false }]]} allowDangerousHtml>
  21. {md}
  22. </ReactMarkdown>
  23. </div>
  24. </div>
  25. );
  26. };
  27. export default Help;
  1. .article-container {
  2. width: 960px;
  3. max-width: 100%;
  4. margin: 60px auto;
  5. padding: 20px 40px;
  6. background: #fff;
  7. box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.1);
  8. }
  9. .nav-container {
  10. position: fixed;
  11. right: 20px;
  12. top: 60px;
  13. background-color: #fff;
  14. border-radius: 5px;
  15. border: 1px solid #eee;
  16. box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.1);
  17. transform: translate(0, 0);
  18. transition: transform 500ms ease;
  19. }

markdown 文件位置

markdown 文件静态文件目录下,本例中,放在了 public/help-doc 文件夹下面了。

  1. $ tree help-doc
  2. help-doc
  3. ├── chap2-1.mp4
  4. ├── chap2-2.mp4
  5. ├── chap2-3.mp4
  6. ├── chap2-4.mp4
  7. ├── help.md
  8. └── modules.png

markdown 中引用图片的地方,比如:

  1. ## 1. 概要
  2. 目前整个平台包含如下几个模块: (**绿色**是已完成部分, **红色**是未完成部分)
  3. ![模块](/help-doc/modules.png)

引用视频的地方,比如:

  1. ### 2.1 定义数据类型
  2. 数据类型代表了某种类型的数据. 它们都有相同的字段.
  3. <video width="500" height="300" controls>
  4. <source src="/help-doc/chap2-1.mp4" type="video/mp4">
  5. </video>
  6. ### 2.2 定义数据类型中的字段

实现效果

部署工程之后,只要修改静态目录下的 help.md 再保存,页面就会变化,不需要发布和转换 markdown 文件。

显示效果如下,此文档包括文字,图片和视频,均能正常显示。

markdown in react 01

markdown in react 02

原文链接:http://www.cnblogs.com/wang_yb/p/14597202.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号