首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

手把手带你10分钟手撸一个简易的Markdown编辑器

「编辑区」和「展示区」的页面同步滚动 编辑器工具栏中工具的实现 这里先放上我最终实现好了的效果图: 我也将本文的代码放在了 Github 仓库 (opens new window)上了,欢迎各位点个...markdown-it已经将highlight.js集成进去了,直接设定一些配置即可,并且我们需要先将该库下载下来。...,免得以后也犯同样的错误 刚开始主要实现思路就是当滚动其中一块区域时,计算滚动比例(scrollTop / scrollHeight),然后使另一块区域当前的滚动距离占总滚动高度的比例等于该滚动比例 import...,其余的就可以模仿着写出来了 加粗工具的实现思路: 光标是否选中文字?...后续我也会继续发一些教程,对这个编辑器的功能进行扩展 我将代码都上传到了 Github仓库 (opens new window),后续扩展一下功能,并作为一个完整的组件发布到npm给大家使用,希望大家多多支持

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手把手带你10分钟手撸一个简易的Markdown编辑器

    我也将本文的代码放在了 Github 仓库 (opens new window)上了,欢迎各位点个 ⭐️ star 支持一下 同时,我也给大家提供了一个在线体验的地址 (opens new window...更大的好消息来了!markdown-it已经将highlight.js集成进去了,直接设定一些配置即可,并且我们需要先将该库下载下来。...,免得以后也犯同样的错误 刚开始主要实现思路就是当滚动其中一块区域时,计算滚动比例(scrollTop / scrollHeight),然后使另一块区域当前的滚动距离占总滚动高度的比例等于该滚动比例 import...,其余的就可以模仿着写出来了 加粗工具的实现思路: 光标是否选中文字?...将选中文字的两侧加上** 否。在光标所在处添加文字**加粗文字** 动图效果演示: ?

    2.1K10

    搞一搞明白Vitepress的文档渲染基础

    Vitepress的文档渲染目的就是将程序员日常所写的Markdown文件编译为Html文件,并添加了更多的插件来丰富MD文件的功能,就比如说Vuejs组件在MD文件中渲染等等,为了我们可以在使用Vitepress...实现MD支持代码块高亮 代码块高亮所使用的模块时highlight.js,该模块同时内置了很多常见的代码块样式文件可供选择~ 3.1 第一步改造markdownIt对象的构造函数: highlight...属性配置的函数传入code片段和代码方言两部分,通过在hljs库中查找对应的方言来利用hljs库实现代码的快速高亮,当无法查找到对应的方言时将返回仅仅转义后的html片段~ const md = new...第一步的操作仅仅完成了由code片段到html结构的转换,但是完成高亮还需要样式配合渲染,我们这里可以通过在输出output内容到index.html时将hljs中喜欢的样式文档路径传入到html文件来加载...总结 通过使用markdown-it、highlight.js、markdown-it-container模块实现了Markdown到HTML的文档转换,代码块高亮和自定义容器,VItepress搭建的组件库文档中的组件渲染和源码展示功能就需要用到自定义容器的解析和组装自定义的

    1.4K30

    从Highlight浅谈Webpack按需加载

    动态加载CSS.gif 前言 最近有在使用 highlight.js 做代码的高亮展示,主要是展示对 SQL 语言的处理。看了看 highlight.js 的提供的相关代码 !...小结 如果要实现按需加载得使用babel-plugin-import,这个在TS下的情况还没有检查过 使用TS时,因为某些库的 d.ts 文件 指向的路径是模块,因此要导入该库的接口只能完整的导入该模块...webpack将会以硬编码部分为打包入口,将'highlight.js/styles/*'下所有文件打包,在运行时根据完整的路径记载资源。...表现为 当 Select 又选到已经加载的样式时, 浏览器并不会重新加载那段代码,导致样式无效。...以后再研究研究 import require 动态加载时的区别 总结 import { Card } from 'antd'并不会触发按需加载,仍然会加载全部antd文件,应该使用import Card

    2K10

    想有自己的博客吗?浏览器支持 MarkDown和语法高亮的最简单示例(使用markdown-it、highlight.js和mermaid)

    写作也是一种很重要的能力,需要长久坚持和锻炼。 写作能力重不重要?语文重不重要?读书重不重要? 我觉得语文和写作能力是所有能力的基础,是重中之重。...因为你所有感知和获取的信息的加工整理都离不开语文,你对外界产生的理解和影响也离不来语文。它甚至可能影响你的求职,你的工作,你的人际关系。...使用了流行的markdown-it(MarkDown渲染),highlight.js(语法高亮)和mermaid.js(画流程图、时序图等的js库)组件。...先看一个我的个人博客截图,后续准备开源出来,没使用数据库,只使用md文件和配置文件就完成了所有功能。...增加功能,把微信公众号打通,使用自己的公众号发布文章,直接电脑上编译好md文件,往聊天窗口一丢就完成了文章的发布。至于文章分类,文章排序和推荐文章,都是内部搞了个算法自动完成的。

    1.1K20

    Markdown文件居然也可以直接作为Vue路由组件?

    Vite插件扩展了Rollup的接口,并且带有一些 Vite 独有的配置项,配置项类型基本就是两种,一种是属性,一种是钩子函数,插件的主要逻辑都在钩子函数里,Rollup和Vite提供了构建和编译时各个时机的钩子...,返回了一个对象,name属性为插件的名称,必填,用于信息和错误输出时的提示;enforce用于指定钩子的调用顺序: 图片 vue插件没有指定,所以md插件会在其之前调用,保证到它这里.md文件的内容已经转换完毕...}).value + 'pre>' ) } return '' } 代码高亮使用的是highlight.js,最开始使用md插件时我们传入了参数: {...: 图片 默认配置如下: 图片 所以当指定了主题的话会创建一个link标签来加载对应的主题样式,否则就使用默认的,默认主题定义在/site/pc/Layout.vue组件内: 图片 这么做的好处是可以使用...,就是把markdown语法转换成Vue单文件语法,vue插件也使用了这个钩子和read方法: 同样因为这个插件是在vue插件之前调用的,所以到了vue插件使用的就是被转换的read方法,就能在热更新时顺利处理

    72320

    React 实现一个markdown

    ---- 「这是我参与2022首次更文挑战的第19天,活动详情查看:2022首次更文挑战」 我想实现类似我们掘金的一个文章发布的markdown,这是我们最后实现的结果 使用组件 React的markdown...对应我们的Markdown的有markedown和html // 提交参数 const [submitParams, setSubmitParams] = useState<SubmitParams...中自带了,如果没有需要下载 import hljs from 'highlight.js'; // 引入highlight.js库 代码高亮 import 'highlight.js/styles/github.css...'; // 引入github风格的代码高亮样式 // 这个dark风格跟我的有些样式冲突 所以没使用 // import 'highlight.js/styles/dark.css' 实现效果如下...handleEditorChange 这是Markdown内容改变触发的函数,html和text分别是Markdown对应的标签和md格式。

    98020

    python字符编码-文件操作

    ) 用户使用notepad++ 打开文件刚刚写好的文件 ---> 会按照保存时指定的字符编码读取文件 此时用户切换右下角的字符编码,改成其他标准 ---> 按照新标准去解析内容时就会出现乱码...f.truncate() # 不指定参数是指从当前位置开始截断 之前未测试出效果是因为使用的是a模式,光标在文件末尾 我又没有将光标移动到文件开头...(文件末尾改动版) with open(r'test01.txt', 'rb') as f: # 先将光标移到文件末尾 f.seek(0, 2) while True:...# 循环读取老文件内容到内存进行修改,然后将修改好的内容写到新文件中 # 将老文件删除,将新文件的名字改成老文件 # 优点:内存中始终只有一行内容,不占内存 # 缺点:在某一时刻...在b模式和r 模式下所加参数的意义不同(r模式以字符为单位,b模式以字节为单位) # 在utf-8编码标准下,中文是3个字节,英文是1个字节,所以seek、read等移动光标时要注意单位 # b模式下

    94230

    改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)

    博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ [img...] 查看博客园markdown所使用的代码高亮插件 先找到一篇markdown模式下写的文章,然后打开Chrome,依次使用 F12 -> network -> filter ".js",可知 代码高亮插件是...同理可知TinyMCE模式下使用的是SyntaxHighlighter插件....css 接着按需要改进一下markdown的样式,将下面内容贴到页面定制css一栏即可。...highlight-line-number.js的前提是已经include进来highlight.js,虽然首页是默认不load highlight.js的,但可使用JQuery的getScript函数去加载之

    3.6K50

    如何实现这样一款代码图片生成器

    简单来讲解下,实现这个项目用到的一些技术点和背后的原理: 代码高亮选择了最主流的 highlight.js 库; 网页元素界面转图片使用了 html2canvas 工具; 代码编辑器实时高亮是上层使用了...textarea 输入框,设置字体和背景透明,下层使用 div 显示代码,并结合 highlight.js 做代码高亮; 透明背景通过 CSS 属性背景图片设置线性渐变 linear-gradient...代码编辑区域我们使用文本输入框 textarea, 代码高亮我们使用 highlight.js 帮助实现,但是如何对输入框中的代码进行高亮是个难点。...这里我们实现的思路是通过绝对定位 ,上层使用输入框,设置背景透明和其中的文字颜色透明,然后下层放置一个 div 层做代码的显示。上层输入,下层显示。...详细实现参考:【可左右拖拽改变大小的区块[3]】 将页面元素转成图片导出 得益于 html2canvas 工具库的帮助,我们很轻松将网页中某一部分通过 canvas 中转导出成图片。

    23610

    JDBC常用接口

    Driver 所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。在编写JDBC程序时,必须要把所使用的数据库驱动程序或者类库加载到项目的classpath中。...总的来说,仅仅进行一次存取,使用prepareStatement的开销远远大于Statement的开销,因此对数据库进行一次存取时,使用Statement对象,批量处理使用prepareStatement...常用方法总结 方法名称 功能描述 absolute(int row) 将光标移动到此 ResultSet 对象中的给定行号 last() 将光标移动到此 ResultSet 对象的最后一行 previous...() 将光标移动到此 ResultSet 对象中的上一行 afterLast() 将光标移动到此 ResultSet 对象的末尾,紧接在最后一行之后。...如果结果集不包含任何行,则此方法不起作用. beforeFirst() 将光标移动到此 ResultSet 对象的前面,紧挨着第一行的前面。如果结果集不包含任何行,则此方法不起作用。

    20830
    领券