markdown文件读取展示

        最近自己在做一个纯前端的的博客,需要将markdown的文件博客内容展示到页面,本文记录如何读取文件内容并将内容转为html展示。

1.借助webpack的remark-loader解析文件

webpack配置如下:

import RemarkHTML from "remark-html";

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.md$/,
        use: [
          {
            loader: "html-loader",
          },
          {
            loader: "remark-loader",
            options: {
              remarkOptions: {
                plugins: [RemarkHTML],
              },
            },
          },
        ],
      },
    ],
  },
};

配置后即可在代码中使用import 引入md文件;

注:如果使用了ts,import md from "module.md"会提示无法识别模块,需要增加类型声明:

declare module "*.md" {
  const content: string;
  export default content;
}

如此即可正常解析md文件.

更多remark-loader配置详见: https://webpack.js.org/loaders/remark-loader/#usage

2.将文件内容转换为html

我的需求是将md转换为html,所以完成第一步只能正常应用md内容,无法直接显示,所以我们需要借助remark-loader的plugins帮助我们完成转换,这里我们用到了remark-html插件,配置代码如下:

import RemarkHTML from "remark-html";

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.md$/,
        use: [
          {
            loader: "html-loader",
          },
          {
            loader: "remark-loader",
            options: {
              remarkOptions: {
                plugins: [RemarkHTML],
              },
            },
          },
        ],
      },
    ],
  },
};

这样就能直接通过 import md form "module.md"拿到转换为html的内容字符串。

3.在react中展示

代码如下:

import React from "react";
import styles from "./detail.less";
const content = require(`./block.md`);

function BlogDetail (props:any) {
  return <div className={styles.content}>
    <article dangerouslySetInnerHTML={{ __html: content  }}></article>
  </div>;
}

export default BlogDetail;

完成。。。。。。。。。

前端优质资源聚合,由浅入深,由近及远:前端网

上一篇:T186333 模意义下的分数乘积 题解


下一篇:工作十年,分享看过的优质 Java 书籍