文章目录

  • 关于为什么使用markdown-it插件
  • 中途的问题

关于为什么使用markdown-it插件

这里是github官网,点击进入
首先在npm插件官网上看了一下,当然上面的链接也是在npm官网进入的。

可以看到mrakdown-it插件的下载量是相当高的,包括我一开始曾尝试过使用mavon-editor插件来实现自己的博客,但是很遗憾的是这个插件的使用本身出了很大问题,而且不太适合我的需求。
其实mavon-editor本身也是使用的markdown-it来实现的:

所以最终干脆选择了markdown-it来直接实现博客模块。

中途的问题

在使用markdown-it的过程中出现了相当多的问题,光是看官方文档是不足以真正使用该插件的。
点击进入markdown-it中文官网
更多是通过debugger进入代码进行查看:

在调式的过程中突然发现了一个特殊的变量 state

state变量中保存着原本读取出的markdown文本,同时也是在源代码中出现的重要的一个变量,该变量记录着多个数值。这个变量是一个StateBlockstate_block.js之中)实例。

之后在查阅源代码再结合官方文档的解释,再加上其他人的博客解释才发现本身markdown-it整个过程只要存在两个过程:

  • 解析过程:定义在目录ruler_blockruler_inlineruler_core
  • 渲染过程:主要定义在根目录的js文件renderer.js中,但是该过程打开源码后比起解析过程来说几乎简单的过分:
var default_rules = {};default_rules.code_inline = function (tokens, idx, options, env, slf) {code ...
};default_rules.code_block = function (tokens, idx, options, env, slf) {var token = tokens[idx];return  '<pre' + slf.renderAttrs(token) + '><code>' +escapeHtml(tokens[idx].content) +'</code></pre>\n';
};default_rules.fence = function (tokens, idx, options, env, slf) {code ...
}...

所以我判断,官方肯定会留下对于DOM的渲染接口和方式交给我们自己实现。

但是在百度了之后却没有得到什么好的,或者说足够好的方式,所以我只好重新开始了debugger和查阅源码的方法进行寻找。

在这里我注意到了官方文档中的一个有意思的参数:tokens参数,在用*console.log(tokens)*后,果然发现了一些有趣的东西:

tokens中包含了所有的节点元素解析好之后的值,同时也有可以进行复写的规则名称,你可以这样复写:

module.exports = function cssPlugin (md, options) {var blockquoteRenderer = function (tokens, idx, options, env, renderer) {return '<blockquote style="color: blue; padding-left: 10px">'}md.renderer.rules.blockquote_open = blockquoteRenderer
}

在这里基本每一种DOM元素节点都会对应着两种规则[DOM_NAME]_open[DOM_NAME]_close,你可以任意改写渲染方式。

当然如果仅仅只是给原本难看的界面加点样式之类的,还可以使用另外一种方式:

使用 Token.attrSet(),这里就可以查阅官方中文文档了解了。

module.exports = function cssPlugin (md, options) {var blockquoteRenderer = function (tokens, idx, options, env, renderer) {tokens[idx].attrSet('style', 'color: blue; padding-left: 10px')return md.renderer.renderToken(tokens, idx, options, env, renderer)}md.renderer.rules.blockquote_open = blockquoteRenderer
}

在这里基本之前的问题就得到了解决了,之后还出一篇讲Katex渲染的文章。

使用markdown-it插件相关推荐

  1. vim 环境写 markdown 的插件推荐

    vim 环境写 markdown 的插件推荐 本文将介绍在vim环境写markdown文档或者博文的一些好用插件 markdown语法高亮及识别 博主使用vim-markdown做语法高亮.安装方法很 ...

  2. vscode Markdown TOC 插件生成目录去除autoauto

    vscode Markdown TOC 插件生成目录去除autoauto 一.插件安装 二.配置去除autoauto vscode Markdown TOC 插件生成目录去除autoauto 日常在使 ...

  3. 异常强大的Markdown编辑插件-Markdown Preview Enhanced

    最近使用Markdown写作,了解到以下这些Markdown写作工具 MaHua 在线markdown编辑器 百度搜索Markdown时,它排在非常靠前的位置 马克飞象- 专为印象笔记打造的Markd ...

  4. markdown绘图插件----mermaid简介

    作者:黄永刚 mermaid简介 当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样. mermaid解决这个痛点 ...

  5. markdown绘图插件 ---- mermaid简介

    mermaid简介 当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样. mermaid解决这个痛点,这是一个类似 ...

  6. chrome浏览器安装markdown浏览插件

    chrome本身是不支持markdown浏览的,打开.md文件,是长这样的 然后,我们安装chrome的插件. 在谷歌应用商店里,搜索Markdown. 安装第二个Markdown Viewer. 然 ...

  7. 【实测可用】含公示的知乎文章转markdown格式 插件推荐

    插件位置:https://getquicker.net/sharedaction?code=7af26e99-4f6f-42b6-08ad-08d91c1f78c6 安装方式: 先安装quicker ...

  8. 使用 Vue3 + vite + elementUI 开发一个 Utools Markdown 编辑器插件

    文章目录 目的 开发文档整理 基础工具的集成 初始化项目 框架引入 按需引用和 SASS 引入验证 utools 开发配置 调试和打包插件 功能实现 依赖库的安装调用 布局实现 Editor.vue ...

  9. [VSCode] 编辑 markdown 推荐插件

    编辑 md markdown all in one - 提供数学公式支持 markdownlint - 提供严格的 md 书写规范 Github Markdown Preview - 把 vscode ...

  10. pycharm中安装可以贴图片的Markdown插件

    方法一:(测试成功) 先安装官方推荐的Markdown support插件,再安装Paste images into MarkDown 如果Paste images into MarkDown插件在线 ...

最新文章

  1. EditPlue使用进阶之正则表达式
  2. 取消管理员取得所有权_企业取得违约补偿款是否一律应缴增值税呢?
  3. 【职业规划和代码库设计】
  4. python定义变量并赋值_Python动态声明变量赋值代码实例
  5. SANS研究所:7大最危险的攻击技术介绍
  6. python之os模块的基本使用
  7. 那些除夕夜还在上BOSS直聘的人
  8. [图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
  9. mac 使用js打开计算器_Numi for Mac(mac计算器软件)
  10. zlog日志库的简单封装,以及给debug级别添加颜色显示
  11. 通王CMS采集-TWCMS文章采集-通王CMS关键词采集伪原创发布详解
  12. CRT软件使用-连接虚拟机
  13. Mac下tomcat启动报错Cannot run program。。。 Permission denied解决办法
  14. 阿里云服务器租用价格最新收费标准(2019实时更新)
  15. 项目管理工具 | 软件开发项目管理软件
  16. 老男孩教育33期周末班-决心书
  17. 任务二:实现求平方根关键算法(30 分)求 n 以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根 s,然后将结果s 输出。例如若 n 为 1000 时,则 s=153.909
  18. 揭秘TPM安全芯片技术及加密应用
  19. 耳机接口规则_耳机小白必读 一分钟看懂什么是TRS接口
  20. matplotlib之pyplot模块plot函数基础二(线条外观:格式字符串fmt)

热门文章

  1. python高级进阶_20_进程之间的通信之queue(Poo演示)
  2. Mellotron:Multispeaker expressive voice synthesis by conditioning on rhythm, pitch and global style
  3. 使用DFA算法对敏感词进行过滤
  4. bof - pwnable
  5. Apm飞控学习笔记之-电机解锁和故障保护-Cxm
  6. vue项目的elementui表格合并
  7. 【安卓开发】开源Notepad记事本APP项目(完整代码+说明文档)
  8. IT痴汉的工作现状23-乡关何处
  9. Chuck语言学习笔记——0.前言:我为什么要学习这门语言
  10. 基于java的学生社团管理系统的研究设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署