Monaco-editor支持VSCode主题语法配置

2023-4-16 18:38| 发布者: wanhu| 查看: 126| 评论: 0

摘要: 最近需要开发一个在线的IDE,毫无疑问肯定选择了 monaco-editor (vscode的网页版);因为官方宣传的是:The Monaco Editor is the fully featured code editor from VS Code.但是在使用过程中发现,语法规则和高亮效 ...

最近需要开发一个在线的IDE,毫无疑问肯定选择了 monaco-editor (vscode的网页版);因为官方宣传的是:

The Monaco Editor is the fully featured code editor from VS Code.

但是在使用过程中发现,语法规则和高亮效果不如vscode,并且还想把vscode中的一些比较好看的主题也添加进去。以为vscode的主题和语法配置文件可以直接使用在monaco-editor上,后来查了下资料,并不是这样的。

monaco-editor语法的解析规则使用的是Monarch,而vscode中使用的更加广泛的Textmate;原因如下:

因为Textmate语法解析依赖的Oniguruma是一个 C 语言下的解析功能,VSCode 可以使用 node 环境来调用原生的模块,但是在 web 环境下无法实现,即使通过 asm.js 转换后,性能依然会有损失,而且 IE 不支持~~~

但是这都是什么年代了,Who Care IE ~~

所以我就要用使用和Vscode一样的配置,好在官方也给了解决方案,monaco-tm;

不过这只是一个代码案例,并不是一个可以直接使用的NPM库,于是在通读了这个案例的代码之后,决定将这个封装成一个通用的库,并且包含了编辑器的loader(monaco-editor使用方式很多,有的还需要webpack插件),目的是为了更简单的使用monaco-editor;

代码的实现也很简答,就不多说啦~

使用方式:

import MonacoProvider from 'monaco-editor-with-textmate';

const instance = new MonacoProvider();

await instance.loadMonaco({
language: 'typescript',
value: 'export default {}',
});

// get editor instance
const editor = instance.getEditor();

// get monaco instance
const monaco = instance.getMonaco();

// get editor element
const element = instance.getEditorElement();

// render to html
document.getElementById('container')?.appendChild(element);

效果如下:内置是比较喜欢的 dracula 主题




效果截图

如果想要自定义主题的话,可以把vscode里面的主题文件配置拿过来就可以了;


路过

雷人

握手

鲜花

鸡蛋
版权声明:免责声明:文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递 更多信息之目的, 并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。
已有 0 人参与

会员评论

相关分类

 万奢网手机版

官网微博:万奢网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
上海万湖珠宝贸易有限公司 地址:上海市宝山区共和新路4727号新陆国际大厦1003-1007室 网站经营许可证 备案号:沪ICP备11005343号-12012-2019
万奢网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,宝山实体店,支持全国范围上门回收手表
返回顶部