markdown语法转换成html渲染到页面

markdown 转换html

需要用到三个库

  • EJS 可以帮助我们在HTML中潜入动态内容
  • Marked 一个流行的解析器和编译器,可以将markdown转换成html标记
  • BrowserSync 可以实施帮助你同步和更换你的网页修改,当你对markdown文件进行编辑将其转换成html时,browserSync可以自动刷新你的浏览器,使你能够及时查看你转换后的结果
建立ejs模版,template.ejs

入门语法 https://ejs.bootcss.com/#install

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title><%= title %></title>
    <!-- index.css 为markdown转html后需要的样式模版 -->
    <link rel="stylesheet" href="./index.css" />
  </head>
  <body>
    <!-- % 代表可以动态插入  -->
    <%- content %>
  </body>
</html>

建立markdown模版文件,README.md(随便写了点内容)
### 命名路由,编程式跳转

```js
const routes: RouteRecordRaw[] = [
  {
    path: "/",
    name: "A",
    component: () => import("../A.vue"),
  },
  {
    path: "/B",
    name: "B",
    component: () => import("../B.vue"),
  },
];
### 处理markdown转换成html的逻辑语法,建立index.js文件
```js
const ejs = require("ejs");

// 读取文件
const fs = require("fs");

// 编译为html
const marked = require("marked");

// 创建一个全局变量
let browser;
// 浏览器自动启服务,加载相应页面
const browserSync = require("browser-sync");

const server = () => {
  // 创建一个服务
  browser = browserSync.create();
  // 调用init启动
  browser.init({
    server: {
      // 根目录
      baseDir: "./",
      index: "index.html",  // 渲染index.html页面
    },
  });
};

// 通过ejs读取文件
const init = (callback) => {
  // 读取markdown里的内容
  const md = fs.readFileSync("README.md", "utf-8");

  // 通过parse方法转换成html
  //   console.log(marked.parse(md));
  // 把转换的markdown语法插入到html中
  ejs.renderFile(
    "template.ejs",  // 使用此模版
    {
      content: marked.parse(md),  // 替换模版里的内容
      title: "markdown 转换成 html",
    },
    (err, data) => {
      if (err) throw err;
      fs.writeFileSync("index.html", data); // 根目录下创建一个index.html,若是存在,则会替换
      // 调用当前服务
      callback && callback();
    }
  );
};

// 监听文件变动,保持实时更新
fs.watchFile("README.md", (curr, prev) => {
  console.log("curr", curr);
  // 若是md有修改,则时间会是最新的
  if (curr.mtime !== prev.mtime) {
    init(() => {
      browser.reload(); // 当前启动的服务里重新加载,不会再启动第二个服务
    });
  }
});

// 初始化调用
init(() => {
  server();
});

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue 3中,你可以使用`@vuepress/markdown`和`markdown-it`来解析和渲染Markdown语法。以下是一个简单的示例: 1. 首先,使用npm安装依赖项: ``` npm install @vuepress/markdown markdown-it ``` 2. 在Vue文件中,导入`@vuepress/markdown`和`markdown-it`: ```javascript import MarkdownIt from 'markdown-it' import { VueMarkdown } from '@vuepress/markdown' ``` 3. 在Vue组件中,创建一个VueMarkdown实例并将Markdown文本传递给它: ```html <template> <div> <vue-markdown :source="markdownText" /> </div> </template> <script> export default { name: 'MarkdownDemo', data() { return { markdownText: '# Hello, world!' } }, components: { VueMarkdown } } </script> ``` 在上面的示例中,我们将Markdown文本`# Hello, world!`传递给VueMarkdown组件的`source`属性。VueMarkdown组件使用`@vuepress/markdown`和`markdown-it`将Markdown文本解析为HTML,并将结果呈现在页面上。 当然,您可以通过编写自定义插件来扩展Markdown解析器的功能,以便满足您的具体需求。 ### 回答2: 要在Vue3中渲染Markdown语法,可以使用Vue的插值和指令来实现。 首先,安装一个用于解析Markdown语法的库,比如"marked"或"markdown-it"。可以使用npm或者yarn进行安装。 然后,在Vue组件中引入这个库,并在需要显示Markdown内容的地方使用Vue的插值绑定语法,将Markdown文本渲染HTML。例如: ```vue <template> <div> <div v-html="renderedMarkdown"></div> </div> </template> <script> import marked from 'marked'; export default { data() { return { markdown: '# Hello, World!', renderedMarkdown: '', }; }, mounted() { this.renderedMarkdown = marked(this.markdown); }, }; </script> ``` 上述代码中,首先引入了marked库。然后,在Vue组件的data选项中定义了一个markdown属性,这里放置了待渲染Markdown文本。同时,定义了一个renderedMarkdown属性,用于存储渲染后的HTML内容。 在mounted生命周期钩子函数中,调用marked库的函数,将this.markdown作为参数传入其中,将解析后的HTML内容赋值给renderedMarkdown。然后,将renderedMarkdown使用v-html指令插入到组件的模板中。 这样,Vue将负责渲染Markdown语法,并将其正确显示为HTML内容。 ### 回答3: Vue 3支持将Markdown语法渲染HTML。实现这个功能需要使用第三方库,比如marked或者markdown-it。 首先,我们需要在项目中安装一个markdown渲染器。可以使用npm或者yarn命令进行安装,如下所示: ```bash npm install marked ``` 接下来,在Vue组件中引入这个markdown渲染器,并将Markdown文本传递给它进行渲染。可以在Vue的computed属性中定义一个方法,使用marked将Markdown文本转换为HTML。代码示例如下: ```javascript <template> <div> <div v-html="renderMarkdown"></div> </div> </template> <script> import marked from 'marked'; export default { data() { return { markdownText: '# Hello, Vue 3!' } }, computed: { renderMarkdown() { return marked(this.markdownText); } } } </script> ``` 在上面的代码中,我们先导入了marked库,并将Markdown文本传递给marked方法进行渲染。然后,我们将渲染后的HTML代码使用v-html指令进行插值展示。 最后,我们在模板中使用了一个div元素,将渲染后的HTML代码通过v-html绑定展示出来。 这样,当我们在markdownText中改变Markdown文本时,Vue会自动触发computed属性中的renderMarkdown方法,将新的Markdown文本转换为HTML渲染出来。在浏览器中打开页面,就能看到渲染后的Markdown内容了。 总的来说,Vue 3可以通过使用marked或者其他markdown渲染器库来渲染Markdown语法。只需要将Markdown文本传递给渲染器,然后将渲染后的HTML代码展示在模板中即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值