【发布时间】:2020-10-28 19:55:54
【问题描述】:
我正在开发一个包含在用户端编写代码的 React 应用程序。所以,语法高亮会很可爱。问题是有问题的语法是非标准的——没有包会内置它。
我一直在研究这个问题,但我很难获得任何标准包来让我导入自定义语言。因此,如果有人可以推荐一个可以轻松做到这一点的软件包,我将不胜感激。其他选择是建立我自己的。这是合理的,因为我只需要很少的实际高光/颜色(无论如何我都必须写那部分)。
在那种情况下,我真的不明白这些不同的组件是如何工作的。我看到他们倾向于使用包含 span 元素等的 pre 标记以及 textarea。不知何故,textarea 被用于实际打字,但可能被隐藏了?这就是它的样子,在文本框中创建格式化文本的错觉。维护一份干净的副本以供解释,并保留一份格式化的副本以供展示。
但我不知道使这项工作的实际结构是什么。为什么前置区域隐藏文本框?这就是正在发生的事情吗?它是以某种方式改变它,还是只是匹配它?
如果任何了解这些内容的人都可以提供关于 JS 语法高亮器如何工作的高级概念以及 HTML 结构,那可能足以告诉我如何构建一个。
谢谢。
【问题讨论】:
-
如果您愿意使用 monaco 作为您选择的代码编辑器,请查看monarch。它是一种自定义格式,用于为编辑器指定语法高亮规则。
-
我曾经为我公司的内部制作语言定制 monaco 编辑器。体验还可以。需要一些实验来学习君主格式。我不建议您从头开始构建整个堆栈。一个编辑器加上语法高亮是一个非常需要咀嚼的地狱。
标签: javascript html reactjs syntax-highlighting pre