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

快速搭建一个代码在线编辑预览工具(实战)

实现上,水平调节宽度和垂直调节高度原理是一样的,以调节宽度为例,三个编辑器的宽度使用一个数组来维护,用百分比来表示,那么初始就是100/3%,然后每个编辑器都有一个拖动条,位于内部的左侧,那么当按住拖动某个拖动条拖动的逻辑如下...this.isCanDrag('rightDown', index)) { return } // 找到拖动编辑器及其右边的编辑器的第一个还有空间的编辑器索引...编辑器 目前涉及到代码编辑的场景基本使用的都是codemirror,因为它功能强大,使用简单,支持语法高亮、支持多种语言和主题等,但是为了能更方便的支持语法提示,本文选择的是微软的monaco-editor...具体到对象或数组的某项使用div来实现换行,需要注意的是如果是作为对象的某个属性的值的话,需要使用span来和属性及冒号显示同一行,此外,也要考虑到循环引用的情况。...动态切换编辑器语言 Monaco Editor想要动态修改语言的话我们需要换一种方式来设置文档,上文我们是创建编辑器的同时直接把语言通过language选项传递进去的,然后使用setValue来设置文档内容

4.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

快速搭建一个代码在线编辑预览工具

实现上,水平调节宽度和垂直调节高度原理是一样的,以调节宽度为例,三个编辑器的宽度使用一个数组来维护,用百分比来表示,那么初始就是100/3%,然后每个编辑器都有一个拖动条,位于内部的左侧,那么当按住拖动某个拖动条拖动的逻辑如下...this.isCanDrag('rightDown', index)) { return } // 找到拖动编辑器及其右边的编辑器的第一个还有空间的编辑器索引...编辑器 目前涉及到代码编辑的场景基本使用的都是codemirror,因为它功能强大,使用简单,支持语法高亮、支持多种语言和主题等,但是为了能更方便的支持语法提示,本文选择的是微软的monaco-editor...具体到对象或数组的某项使用div来实现换行,需要注意的是如果是作为对象的某个属性的值的话,需要使用span来和属性及冒号显示同一行,此外,也要考虑到循环引用的情况。...动态切换编辑器语言 Monaco Editor想要动态修改语言的话我们需要换一种方式来设置文档,上文我们是创建编辑器的同时直接把语言通过language选项传递进去的,然后使用setValue来设置文档内容

4K20

手把手教你实现在Monaco Editor中使用VSCode主题

背景 笔者开源了一个小项目code-run,类似codepen的一个工具,其中代码编辑器使用的是微软的Monaco Editor,这个库是直接从VSCode的源码中生成的,只不过是做了一点修改让它支持浏览器运行...,但是功能基本是和VSCode一样强大的,所以笔者看来Monaco Editor等于VSCode的编辑器核心。...;', '}'].join('\n'), language: 'javascript', theme: 'vs' }) 这样就可以container元素上创建一个js语言的编辑器,并且使用了内置的...新的曙光 就在笔者已经放弃Monaco Editor中直接使用VSCode主题的想法后,无意间发现codesandbox和leetcode两个网站编辑器主题效果和VSCode基本一致,而且可以明显的看到...,这样能让页面整体更加协调,具体的实现上,我们可以使用CSS变量,先把页面所有涉及到的颜色都定义成CSS变量,然后切换主题根据主题的colors选项里的指定字段来更新变量即可,具体使用哪个字段来对应页面的哪个部分可以根据实际情况来确定

3.5K41

85.精读《手写 SQL 编译器 - 智能提示》

利用 monaco-editor 生态,利用 sql reader 封装 monaco-editor 插件,同时实现 用户 编辑器 间的交互,与 编辑器 语义分析器 间的交互。...我们先找到一个非终结符作为根节点,深度遍历所有非终结符节点,遇到 MatchNode 如果匹配,就消耗一个 Token 并继续前进,否则文法匹配失败。..., MatchNode 匹配失败可以还原到此节点继续尝试下个节点,如下图所示: 这样就具备了最基本的语法分析功能,如需更详细阅读,可以移步66....monaco-editor plugin: 我们也支持了更上层的封装,Monaco Editor 插件级别的,只需要填一些参数:获取表名、获取字段的回调函数就能 Work,统一了内部业务的调用方式: import...从 monaco-editor-plugin 开始使用 也许你需要支持自动提示的 SQL 编辑器,那太棒了,直接用 monaco-editor-plugin 吧,根据你的业务场景或个人喜好,实现一个定制的

3.9K30

使用 Monaco Editor 开发 SQL 编辑器

from 'monaco-editor'/** * VS Code 编辑器 * * 通过 getEditorVal 函数向外传递编辑器即时内容 * 通过 initValue 用于初始化编辑器内容。...* 编辑器默认 sql 语言,支持的语言请参考 node_modules\monaco-editor\esm\vs\basic-languages 目录下~ * 编辑器样式仅有 'vs', 'vs-dark...}, getValue() { return this.monacoEditor.getValue() }, // 将 initValue Property 同步到编辑器...最新版本的 Monaco Editor 已经使用了 ES2022 的语法,所以老项目可能会出现编译不过的问题。所以我把版本调低了一些。...最初调试编辑器的时候出现了无法编辑的情况,后来发现是同事用到了 default-passive-events 这个库来关闭 chrome 的 Added non-passive event listener

3.1K31

开发一个在线代码对比工具

前言 开发过程,我们经常需要用到代码对比,对比下代码是否一致,有哪些改动,方便我们可以查看问题,今天我们就来说实现下,其实很简单,不需要后端,纯前端就可以实现。...Monaco Editor Monaco Editor 是 VS Code 中使用的开源代码编辑器, 拥有代码高亮和代码自动补全的功能,并且内置了一个 Diff Editor。...马上掘金 使用 monaco-editor 创建一个简单的代码编辑器 使用 monaco-editor 创建一个简单的 Diff 编辑器 Monaco Editor 有 2 种加载方式,分别是 amd...关于 Monaco Editor next.js 的配置,之前有介绍过,大家可以看这篇文章 《 Next.js 中使用 Monaco Editor》。...代码对比编辑器 GitHub 代码 以上就是本文全部内容,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者评论区交流你的想法和心得,欢迎一起探索前端。

2.9K11

实现一个 Code Pen:(二) Next.js 中使用 Monaco Editor

Monaco Editor 是 VS Code 中使用的开源代码编辑器, 拥有代码高亮和代码自动补全的功能,Monaco Editor 支持的语言有很多,所以使用的时候不需要将全部语言都支持,我们只需要按需加载需要支持的语言就可以了... Next.js 中加载 Monaco Editor 由于 next.js 加载全局 css 文件只能在 src/pages/_app 引入,但 monaco-editor,加载 css 是包引入的...)=>{ ... }) Model 最后也需要销毁,这里分两种情况,假如是通过 createModel 创建的 Model,那么我们需要手动销毁,但是如果是 monaco 默认创建的,则不需要,调用实例的销毁方法...设想一下我们有 5 个 tab,每个 tab 都是一个编辑器,每个编辑器都有各自的语言,内容和标注信息,如果没有 Model,我们需要保存每个 tab 的语言,内容等信息,切换到对应 tab 再将这些信息初始化到编辑器上...小结 通过本文我们了解了 Monaco Editor 的加载方式 Monaco Editor webpack 和 next.js 的配置 封装了一个最基本的 React Monaco Editor

2.2K20

Monaco 代码编辑器主题配置实践

背景 Monaco 编辑器是目前 VS code 代码编辑器的开源内核,功能上基本碾压同类的其他代码编辑器,同时得益于丰富的插件体系,目前很多市面上在线 IDE 工具也都是基于此做了二次开发,包括 Coding...的 Cloud Studio 产品,以及 LeetCode 里的代码编辑器都是 Monaco,影响力可见一斑。...); 其次参照文档,寻求完整的解释含义,不要只看 StackOverflow 上或者网络上其他地方的评论给出的配置参数,有些是有使用前提的,比如鼠标滚轮事件,默认情况下 Monaco 代码编辑器容器里不对该事件做冒泡...,也就导致当你在编辑器里用鼠标滚轮滚动到底部,也无法触发页面的滚动,因此需要将该配置设置为 false 。...React 应用 由于前端目前都在使用 Vue 或者 React,图省事的话,我们可以使用第三方的 @monaco-editor/react 库就不需要关心配置相关的事情,开箱即用,底层也是依赖了微软的

17710

一文打透前端研发需要了解的DSL

实际开发,我们可以根据需求选择合适的 DSL,以提高我们的开发效率。缺点是,DSL 的开发和维护成本较高,需要有一定的技术水平。...实际开发,我们可以根据需求选择合适的 DSL,以提高我们的开发效率。下面我将使用一个实际研发遇到的例子来说明外部 DSL的应用。...实际案例实际的研发,我们会在特定的领域遇到一些特定的问题,如果使用通用编程语言来解决这些问题,可能会比较繁琐。这时,我们可以使用 DSL 来解决这些问题,提高我们的开发效率。...Monaco Editor 是一个由微软开发的基于浏览器的代码编辑器,它提供了很多强大的特性,包括语法高亮、代码自动补全、代码提示等。...创建编辑器最后,你可以调用 monaco.editor.create 来创建一个编辑器实例,并设置它的语言和主题。

90121

手摸手打造类码上掘金在线IDE(二)——编辑器

确实,坦率的讲,对于一个技术项目,这个东西技术难度层面,就是侮辱人的智商的,很多人都对他嗤之以鼻, 很是不屑 然而,我想说的是,我们的日常工作,很多人都是都是靠着这么多crud 去养活没有这些东西...,既然这样的话,我们也不需要了吧, 毕竟残废版 其实,我之前的文章写了个文件系统 git 地址如下,有兴趣的jym 可自取 tree list 接下来,我们一个个梳理他的这几个模块 编辑器部分 东家的编辑器部分...有很多jym 对这个一块可能还相当陌生,那么我们就来分别对这两个编辑器使用方式来一个简单的介绍 monaco-editor monaco-editor 虽然也有vue的版本接入 vue-monaco-editor...但是目前社区的认可度还不够高,所以暂时不要不要使用 我们还是使用原始的接入方法 // 引入 monaco-editor <...vite 有个esm的bug ,所以需要手动添加default 能跑通编辑器之后,我们就需要来接入主题美化了vscode俺以为最美的主题莫过于OneDarkPro 于是,俺在网上找到了他的移植版本

2.6K11

python re

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。...group]) 方法用于获取分组匹配的子串整个字符串的起始位置(子串第一个字符的索引),参数默认值为 0; end([group]) 方法用于获取分组匹配的子串整个字符串的结束位置(子串最后一个字符的索引...标点符号只有被转义匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。...只影响括号的区域。 | | (?-imx) | 正则表达式关闭 i, m, 或 x 可选标志。只影响括号的区域。 | | (?...imx: re) | 括号使用i, m, 或 x 可选标志 | | (?-imx: re) | 括号使用i, m, 或 x 可选标志 | | (?#...) | 注释. | | (?

83620

Diff:如何用 MoncaoEditor 实现 JS 代码比对?

Monaco Editor 是一个从 VS Code 中分离出来的、网页版代码编辑器,由微软开源、界面美观、功能强大、开箱即用。...Monaco Editor 开源社区也是非常火爆的一个项目(36.2k star),如果你需要在产品嵌入一个代码编辑器组件,可以先试试 Monaco Editor。...MonacoEditor用来做代码比对 Monaco Editor 不仅是一个功能强大的代码编辑器,它还内置了一个代码比对组件(DiffEditor)(如下图)。...Vite-React环境下接入DiffEditor 下面将完整演示如何在Vite、React环境下接入微软开源组件 Monaco Editor,并使用它的代码比对(DiffEditor)特性。... Vite 环境下,Monaco Editor官方文档已经给出了配置方法,我们可以选择应用入口引入如下代码: // Since packaging is done by you, you need

1.2K10

1000 行输入框的养成:如何平衡体验与灵活性?

这个功能从一个简单的输入框,变成了一个背后有 1000 行代码的「一行代码的编辑器」。在这一个过程,我们一直尝试平衡灵活性与体验,也依旧进这一方面的尝试。...第二个版本的设计:正则匹配字段 随后,我们表单联动上遇到了挑战:如何我们字段越来越多的时候,那么表单就会越来越复杂。随着,字段的增长,那么就会出现看上去很炫,但是很难适合人类使用。...于是呢,作为程序员的直觉,就是用编辑器解决 —— Monaco Editor。就像我们之前的架构工作台一样,如果一个编辑器不能解决,那就两个。 对应的模式: 下拉框 + 查询语句生成查询条件。...开发者体验优化:Monaco Editor 构建搜索框 功能实现上,我们借助于 Monaco Editor 构建了一个一行的输入框,即将一个编辑器封装成一个输入框。...诸如于 sca 刚输入的时候,有 dep_name 、 dep_verion 等不同的字段;当用户输入过 dep_name ,它就不会出现在下次的 Completion 列表

64210

知乎分享:vscode从入门到进阶

菜单栏-配置项 通过File-Preference-Settings可以访问配置项,可以修改所有的配置,包括扩展与否 常用配置项如下: Editor: Format On Save,可以保存格式化文件...Adapter Protocol Electron 开发框架,基于Node.js和Chromium,使用HTML,CSS和JavaScript等前端技术来开发跨平台的桌面级应用程序 Monaco Editor...基于浏览器的代码编辑器:IntelliSense,代码验证,语法高亮等特性 Language Server Protocol IDE与语言服务器之间的协议,可以允许开发人员最喜爱的工具中使用各种语言来写程序...Tasks,将重复工作自动化 菜单,选择终端>Configure Task来配置。 选择终端>Run Task来运行重复工作。 这样可以不用在终端反复输入重复的命令。...Visual Studio IntelliCode:AI赋能,根据上下文给出编程建议与智能提示 插件开发 设计 如何获取产品灵感:从日常生活、github issues 参考其他浏览器/IDE的热门插件

1.7K10

实现一个 Code Pen:(三)10 行代码实现代码格式化

在上文中,我们使用 monaco-editor 结合 Next.js,打造了编辑器的功能,本文中,我们将继续优化 monaco-editor, 使它拥有代码格式化的功能。...prettier 浏览器使用 关于代码格式化,被人熟悉的是 prettier,在前端工程,为了保证团队成员提交代码的格式一致,会先安装 prettier 和 husky,使用 Git hooks 函数...parser,去解析不同的文本,我当前的开发的 Code Pen 场景使用到了以下几个 parser: babel: 处理 js html: 处理 html postcss: 用来处理 css,...通过 model.getValue() 获得当前编辑器的文本,通过 model.getLanguageId() 获得当前编辑器的编程语言,每一种语言都有不同的解析器,需要与Prettier的 paser...执行自定义的函数,不如直接覆盖掉自带的格式化指令, cmd + s 直接执行指令来完成格式化来的优雅。

1.6K10

Monaco Editor的对标优势—为什么选择Monaco为在线编辑器内核

Monaco Editor 是一款开源的在线代码编辑器。它和大热的 VSCode 都是微软家的娃。...Monaco与VSCode微软之前有个项目叫做Monaco Workbench,后来这个项目变成了VSCode,而Monaco Editor(下文简称monaco)就是从这个项目中成长出来的一个web编辑器...Monaco 是一个用于浏览器编辑器,始于 2011 年 Erich Gamma 加入微软。后期主要使用在 Visual Studio Online, OneDrive 以及不少内部网站。...最终使用 Electron 包装成为一个跨平台的编辑器,当然其实她还是一个浏览器里。...monaco集成度最高,引入文件量巨大,引入方式兼容性不太好,但功能实现完备,不需另外的扩展引入,适合需要实现复杂功能但不进行深度扩展的应用,因其不支持mobile且文件量大,electron这类的客户端环境使用较为合适

3.8K20
领券