使用markdown-it插件
文章目录
- 关于为什么使用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文本,同时也是在源代码中出现的重要的一个变量,该变量记录着多个数值。这个变量是一个StateBlock(state_block.js
之中)实例。
之后在查阅源代码再结合官方文档的解释,再加上其他人的博客解释才发现本身markdown-it整个过程只要存在两个过程:
- 解析过程:定义在目录
ruler_block
、ruler_inline
、ruler_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插件相关推荐
- vim 环境写 markdown 的插件推荐
vim 环境写 markdown 的插件推荐 本文将介绍在vim环境写markdown文档或者博文的一些好用插件 markdown语法高亮及识别 博主使用vim-markdown做语法高亮.安装方法很 ...
- vscode Markdown TOC 插件生成目录去除autoauto
vscode Markdown TOC 插件生成目录去除autoauto 一.插件安装 二.配置去除autoauto vscode Markdown TOC 插件生成目录去除autoauto 日常在使 ...
- 异常强大的Markdown编辑插件-Markdown Preview Enhanced
最近使用Markdown写作,了解到以下这些Markdown写作工具 MaHua 在线markdown编辑器 百度搜索Markdown时,它排在非常靠前的位置 马克飞象- 专为印象笔记打造的Markd ...
- markdown绘图插件----mermaid简介
作者:黄永刚 mermaid简介 当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样. mermaid解决这个痛点 ...
- markdown绘图插件 ---- mermaid简介
mermaid简介 当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样. mermaid解决这个痛点,这是一个类似 ...
- chrome浏览器安装markdown浏览插件
chrome本身是不支持markdown浏览的,打开.md文件,是长这样的 然后,我们安装chrome的插件. 在谷歌应用商店里,搜索Markdown. 安装第二个Markdown Viewer. 然 ...
- 【实测可用】含公示的知乎文章转markdown格式 插件推荐
插件位置:https://getquicker.net/sharedaction?code=7af26e99-4f6f-42b6-08ad-08d91c1f78c6 安装方式: 先安装quicker ...
- 使用 Vue3 + vite + elementUI 开发一个 Utools Markdown 编辑器插件
文章目录 目的 开发文档整理 基础工具的集成 初始化项目 框架引入 按需引用和 SASS 引入验证 utools 开发配置 调试和打包插件 功能实现 依赖库的安装调用 布局实现 Editor.vue ...
- [VSCode] 编辑 markdown 推荐插件
编辑 md markdown all in one - 提供数学公式支持 markdownlint - 提供严格的 md 书写规范 Github Markdown Preview - 把 vscode ...
- pycharm中安装可以贴图片的Markdown插件
方法一:(测试成功) 先安装官方推荐的Markdown support插件,再安装Paste images into MarkDown 如果Paste images into MarkDown插件在线 ...
最新文章
- mysql嵌入式语句_MySQL/MariaDB 语句速查笔记
- Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
- 分享Java面试中的几个重要基础问题
- python华为面试题10个人数3获取下标
- SAP Cloud for Customer ABSL的一些优化
- Raft协议选举核心思想
- Mysql数据恢复有哪几种_MYSQL 数据恢复有哪些
- CH340以及CH系列USB转串口驱动下载
- matlab线性规划系列之基础解题
- 【云服务器安全加固】
- matlab什么样的数表示0,matlab里a(i)~=0什么意思
- 利好:北京医改鼓励医生个体行医异地行医
- 微信公证号授权给微信开放平台(第三方平台)开发流程 PHP (基于laravel框架开发)
- <Mac>怎么删除Mac启动台里带问号的图标
- 哒哒租车系统(慕课网学习)
- 短视频平台达人为什么那么赚钱?
- 【爬虫系列】Python 爬虫入门(2)
- C#桌面办公应用-工资管理系统系列五
- 真是无语二手房可以这样逃税
- 零基础也能学会的微信小程序制作动态搜索页
热门文章
- 期货期权股票资管分仓系统
- 杭州女程序员自述:疫情之下被迫离职,仲裁说理被公司索赔百万
- 磁盘驱动属于计算机的,计算机基本知识(8005)---HDD(硬盘驱动器Hard Disk Drive)
- 美国大学生解释为什么那么喜欢snapchat
- Codeforces Gym 100015A Another Rock-Paper-Scissors Problem 找规律
- 2021 Geek re
- android 记事本上功能,安卓手机上有多功能记事本app吗?
- 怎么恢复计算机文件查看方式,win7电脑打开方式怎么还原?win7电脑还原打开方式的方法...
- 微新小程序封装wx.request (使用回调函数)
- 【UE4(虚幻)】学习笔记(六)----蓝图接口、事件分发器、子弹击打不同物体会有不同效果的实现思路、 数据表的使用与背包框架的搭设