发布于 2026-01-06 1 阅读
0

新增 7 项功能,修复 51.3 个新 bug 😋,DEV.TO 👩‍💻👨‍💻 编辑器 [第二部分!]

新增 7 项功能,修复 51.3 个新 bug 😋,DEV.TO 👩‍💻👨‍💻 编辑器 [第二部分!]

欢迎使用 dev.to 编辑器 0.02 版本!这是我为 dev.to 创建一个编辑器的尝试,旨在让文章写作更加轻松!

如果你还没看过我之前关于这个话题的帖子,那就花几分钟时间去看看吧。

都看完了吗?太好了,让我们看看有哪些改进!


就让我玩玩吧,我不想看书!

等不及了吗?我这里有个快速链接,可以直接跳转到操作说明,教如何自己动手试试!

目前仅限桌面端使用,因为它使用了书签小程序。在移动设备上,恐怕您只能先看看图片,直到您能用电脑为止!

不过,如果你留下来看看,我这里有很多漂亮的 GIF 图片,展示了一些功能!


总之,我猜你一定很想知道,0.02 版本有哪些变化?

界面焕然一新!

为 dev.to 设计的自定义图标集,使用 Illustrator 制作。

我专门为 dev.to 设计了一套自定义图标。

虽然有些地方还不够精致,但总的来说,我认为整体美感与 dev.to 非常接近。

新编辑器设计采用现代简洁的图标来表示各项功能

关于模态框和其他界面元素……它们还没有设置样式!距离最终产品还有很长的路要走,但希望您能明白我的设计方向!

完全重新设计代码

原编辑器使用“换行”功能来使 Markdown 中选定的文本换行。

对于粗体文本等基本功能来说,这没问题,**bold**但对于更复杂的功能,它就开始变得有点“卡顿”(是的,这是一个专业术语!)。

所以我们现在采用的是基于模板的系统,其中的区域可以被用户内容替换。

代码整理工作还有很长的路要走,但现在添加新的 Markdown 功能很容易了。

另一个问题(在某种程度上现在仍然存在)是变更的应用方式。我们别无选择,只能更新整个系统,<textarea>这意味着需要大量的精力来管理焦点。不过,我已经改进了项目处理方式,并引入了“撤销”功能,以防万一出现严重问题!

新功能

哦,有很多事情:

标题 2-6

添加标题演示

我之前遇到的问题是,标题被分配给了 2-4 号,而我无法添加 5​​ 级和 6 级,因为我已经将这些编号用于其他功能了。

我现在有了一个系统,不用再按 Ctrl + {数字},而是按 Ctrl + H,然后在后面立即输入你想要的标题编号。

这样就把所有的数字键都空出来用于其他用途了(仍在研究键盘快捷键!)

你可能会问,为什么没有一级标题?答案是:为了方便查阅。

尽管 HTML 标准和 WCAG 允许使用多个<h1>s,但对于屏幕阅读器用户来说,这不是预期的行为,因此并不理想。

更多文字装饰!

文本格式设置演示:粗体、斜体、下划线和删除线

我之前已经把粗体斜体文本都设置好了,但现在我又添加了 删除线下划线让生活更轻松!

有序列表和无序列表

添加有序列表演示

现在添加有序列表变得非常简单,因为有了自动编号功能!

它还会移除列表项之间的空白,使内容保持整洁!

为了方便起见,我还添加了无序列表。

桌子!

我尤其为这个感到自豪。

在 Markdown 中创建表格很麻烦。

使用编辑器,你只需点击表格按钮,就会弹出一个窗口询问你想要多少行和多少列,然后自动为你插入表格。

更新表格

使用编辑器演示添加表格,然后添加 2 行,再添加 2 列。

更棒的是,这款编辑器允许你将光标定位在表格内,然后只需点击几下即可添加行甚至列。由于 Markdown 中的表格格式比较混乱,这项功能确实能带来很大的便利。

我在 0.03 版本中对表格功能进行了进一步改进,使其使用起来更加方便!

脚注

只需单击一下即可自动添加脚注¹

液态标签

演示如何嵌入推文、YouTube 视频和 dev.to 评论

之前的版本可以处理一些 Liquid 标签,例如 jsFiddles 和 codepens。

此版本可以处理:

  1. jsfiddles
  2. 代码库
  3. 毛刺
  4. Dev.to 链接到其他文章
  5. Dev.to 链接到用户个人资料
  6. Dev.to 链接到标签
  7. Dev.to 链接到评论
  8. Dev.to 链接到播客。
  9. Dev.to 剧透/可折叠章节块
  10. 推文嵌入
  11. GitHub 仓库卡片
  12. GitHub 问题、PR 和评论卡片
  13. GitHub Gists
  14. YouTube 视频插入
  15. Twitch视频插入
  16. Vimeo 视频插入
  17. Medium 文章链接

还有大约 15 个 Liquid 标签需要添加,但这算是一个不错的开始!

此外,还有一些简单的逻辑可以从 URL 中选择 Liquid 标签所需的正确部分。(例如,为 dev.to 用户添加卡片时,只需要他们的用户名,编辑器会自动从完整的 URL 中去除用户名。)

图片!!!

添加带有替代文本提示和图像预览的图片

实现这个功能很有趣。我不用像以前那样先上传图片再复制到想要的位置,而是直接构建了一个完整的图片添加界面。

为了努力说服人们更加关注无障碍设计,我还添加了图像预览和alt描述屏幕,提示用户输入图像的有意义的描述。

最重要的是……它实际上只是将图像直接放置在 Markdown 中当前光标位置,无需再费力复制 URL!

显然,我隐藏了 dev.to 的原始图像选择,以保持美观一致(我只是把编辑器放在了它上面!这是一个辅助功能问题,以后再解决😋)。

这使得事情变得非常有趣,因为我必须以与 dev.to API 相同的方式上传图片,以便正确存储图片,就像使用 dev.to 当前编辑器上传的图片一样。

幸运的是,他们的 API 非常简单,一旦我弄明白需要获取并上传authenticity_token图像,一切就都按预期工作了。

无障碍设计考量

现在虽然还不能完全无障碍通行,但已经好多了。

关于粘滞键的前言……我选择的按键真是蠢到家了! ——“\”键在写作时转义某些内容时显然非常有用,我会将其更改为另一个按键/按键组合,以免编辑器无法使用!

粘滞键

我主要开发的功能是单手操作模式,带有粘滞键。

按下键盘上的“\”键会暂时启用粘滞键(直到执行操作为止)。

这样,您可以先按“\”,然后再按“o”来添加有序列表项。此时,粘滞键会自动关闭,您可以自由输入。

但是,如果您按两次“\”,则粘滞键将固定启用,这意味着您可以多次按 o 来设置一个有序列表,以便填充数据。

您随时可以再次按下“\”键将其关闭!

单手操作还有第二个好处。当我使用移动版编辑器时,就可以使用快捷键了,因为我们可以设置一个粘滞键,而不用使用 Ctrl + {key} 作为快捷键!

为了提升无障碍环境,你们还打算做些什么?

我还计划允许按钮在不同模式之间切换,以便那些难以理解图标的人可以使用文本代替图标。

我打算修复工具提示,使其在按钮获得焦点时显示。

我还要确保编辑器按钮的颜色与网站的主题颜色保持一致,因为目前它们只在白色主题下才能正常工作!

最后,正如我所说,我将制作一个移动版本,其中包含一些巧妙的文本选择功能,应该能让有手部灵活性/准确性问题的人也能使用!

看起来很棒,我该如何使用呢?

目前只能通过书签小程序使用它。

  1. 将 fiddle 中的链接拖到您的书签栏中
  2. 访问https://dev.to/new并点击您刚刚添加的书签。
  3. 编辑器会神奇地出现,让你体验所有的bug!
  4. 试试“Ctrl”+(B、I、E、L、Q、R、H(然后是2-6)、O和U),或者点击按钮!另外,某些功能需要先选中文本(例如,选中一段文本,按“Ctrl”+“B”,文本就会自动加粗**……就这么简单!)

或者创建一个新书签,点击“更多”,将以下代码粘贴到“URL”字段中,然后保存书签。

javascript:(function (){document.getElementsByTagName('head')[0].appendChild(document.createElement('script')).src='https://inhu.co/dev_to/experiments/bookmarklet/bookmarklet-v2.js?'+Math.random();}());
Enter fullscreen mode Exit fullscreen mode

我发现了一个漏洞

一点也不感到惊讶,目前这一切都只是靠口香糖和胶带勉强维持着而已。

不过,如果您能留言告诉我您的发现,以便我看看能否修复它,我将不胜感激。

ps 目前仅需修复 Chrome 浏览器的 bug,待 Chrome 版本稳定后,我会修复“狐狸”等问题。

我已知的漏洞:

  1. 如果您预览页面,然后返回编辑器,编辑器中的设置就会丢失。
  2. 如果编辑器出现故障,再次按下书签会导致各种错误,因此您必须重新加载页面。
  3. 如果误选了某些文本,表格可能会出现严重问题。
  4. 编辑页面顶部附近的项目会导致页面跳到底部,因为所有文本都会被替换。
  5. 焦点指示器位置有些奇怪,或者某些选项出现异常行为,这些都是一些小问题。如果您发现任何问题,请随时指出,以免我遗漏!

我正在努力修复所有这些问题!

你打算把它做成插件/扩展程序吗?

没错!正如评论中建议的那样,我打算把它做成用户脚本,最终目标是开发成 Chrome 扩展程序!

要么就是,如果足够多的人@ben和jess,他们可能会决定在dev.to中自己实现这个功能(这样bug应该会少很多!🤣)。

结论

正如你所看到的,它离完成还有很长的路要走,但我非常享受这个项目带给我的挑战。

我的意思是,我用编辑器写了整篇文章,感觉……嗯,这么说吧,比记住所有 Liquid 标签要容易得多,但预览功能仍然不理想,经常出错🤣。

可能至少还需要一个月的时间才能做出完全可用的版本,但我会随着改进不断发布更新。

如果你已经看到这里,那么你理应知道我接下来要开发的功能……一个位于右侧的实时预览窗格,它会与编辑器窗格(会移动到左侧)同步。这也是短期内解决“预览问题”的一种方法😋。

如果你也和我一样,对不用在面板之间来回切换感到兴奋,那就关注我吧!

[已删除用户] 图片

[已删除用户]


  1. 瞧,我早就说过,脚注! 

文章来源:https://dev.to/grahamthedev/dev-to-markdown-editor-part-deux-massive-improvements-hack-2-continued-5mp