vue使用markdown

白色玫瑰 程序猿

时间: 2023-07-11 阅读: 1 字数:4488

{}
markdown-it 简介 markdown-it 是一个辅助解析 markdown 的库,可以完成从 # test 到 <h1>test</h1>的转换。 它同时支持浏览器环境和 Node 环境,本质上和 babel 类似,不同之处在于,babel 解析的是 ...

markdown-it 简介 markdown-it 是一个辅助解析 markdown 的库,可以完成从 # test 到

test

的转换。 它同时支持浏览器环境和 Node 环境,本质上和 babel 类似,不同之处在于,babel 解析的是 JavaScript。 说到解析,实际上称为解释(interpreter)或者编译(compiler)更为令人熟悉。总归绕不开词法分析和语法分析这两个过程。 markdown-it 官方给了一个<a href="https://markdown-it.github.io/">在线示例</a>,可以让我们直观地得到 markdown 经过解析后的结果。 我们也可以手动执行下面代码得到同样的结果:

const md = new MarkdownIt()
let tokens = md.parse('# test')
console.log(tokens)

vue使用示例

<template>
   <el-row>
     <el-col :span="12">
      <el-input
        style="margin-top: 6px;height: 2500px;min-height:600px;font-size: 20px;"
        type="textarea"
        placeholder="请输入内容"
        v-model="textarea"
        rows="80"
        maxlength="20000"
        show-word-limit
        clearable
        resize="none"
      >
      </el-input>
     </el-col>
     <el-col :span="12">
      <VueMarkdownIt :source='textarea' :plugins='plugins' style="border: 1px solid black;height: 100%;padding-left: 8px;border-radius: 7px;margin-top: 7px;"></VueMarkdownIt>
     </el-col>
   </el-row>
</template>

<script>
import {ref} from 'vue'


import VueMarkdownIt from 'vue3-markdown-it'
import 'highlight.js/styles/monokai.css'

import MarkdownItEmoji from 'markdown-it-emoji'
import MarkdownItDeflist from 'markdown-it-deflist'
import MarkdownItSub from 'markdown-it-sub'
import MarkdownItSup from 'markdown-it-sup'
import MarkdownItAbbr from 'markdown-it-abbr'

export default {
  name: "CreateBlog",
  components: {
   VueMarkdownIt
  },
  setup: function (){
   let textarea = ref('## 博客正文')
   let plugins = reactive([
     {
      plugin: MarkdownItAbbr
     }, {
      plugin: MarkdownItSub
     }, {
      plugin: MarkdownItSup
     }, {
      plugin: MarkdownItDeflist
     }, {
      plugin: MarkdownItEmoji
     }
   ])

   return {
     textarea,
     plugins
   }
  }
}
</script>

模式

markdown-it 提供了三种模式:commonmark、default、zero。分别对应最严格、GFM、最宽松的解析模式。

解析

markdown-it 的解析规则大体上分为块(block)和内联(inline)两种。具体可体现为 MarkdownIt.block 对应的是解析块规则的 ParserBlock, MarkdownIt.inline 对应的是解析内联规则的 ParserInline,MarkdownIt.renderer.render 和 MarkdownIt.renderer.renderInline 分别对应按照块规则和内联规则生成 HTML 代码。

规则

在 MarkdownIt.renderer 中有一个特殊的属性:rules,它代表着对于 token 们的渲染规则,可以被使用者更新或扩展:

var md = require('markdown-it')();
 
md.renderer.rules.strong_open  = function () { return '<b>'; };
md.renderer.rules.strong_close = function () { return '</b>'; };
 
var result = md.renderInline(...);

比如这段代码就更新了渲染 strong_open 和 strong_close 这两种 token 的规则。

它可以将指定的插件加载到当前的解析器实例中:

var iterator = require('markdown-it-for-inline');
var md = require('markdown-it')()
         .use(iterator, 'foo_replace', 'text', function (tokens, idx) {
           tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');
         });
         

<a href="https://blog.csdn.net/u014357799/article/details/93784996">参考文章</a> <a href="https://blog.csdn.net/lianghecai52171314/article/details/116593900">参考文章</a>

原文地址:https://blog.csdn.net/weixin_46787337/article/details/123670564?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168906542916800213021592%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168906542916800213021592&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-7-123670564-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=markdown

本文章网址:https://www.sjxi.cn/detil/4d5cafe6b92449e985ede0d6cebdfbfc

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复