这玩意什么都好,毕竟是vscode 的祖宗,就是文档,是真费解啊 当然你也可以另辟蹊径,找了另一个极端codemirror5 这也是跟monaco-editor 可以分庭抗礼的编辑器,支持语言众多而且接入方便...有很多jym 对这个一块可能还相当陌生,那么我们就来分别对这两个编辑器的使用方式来一个简单的介绍 monaco-editor monaco-editor 虽然也有vue的版本接入 vue-monaco-editor...来省去了自己配置的繁琐 // vue.config.js const path = require('path') const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin...有了大佬的贡献,我们说干就干 在开始之前,我们还需要一样东西onigasm 这个东西简单的来说,就是一个web版本的正则表达式的库 ,他脱胎于c语言编写Oniguruma 简单的来说,就是将 Oniguruma...就简单很多了 主要包含: 编辑器包vue-codemirror 主题包 @codemirror/theme-one-dark 自带暗黑主题 js 语言包@codemirror/lang-javascript
背景 笔者开源了一个小项目code-run,类似codepen的一个工具,其中代码编辑器使用的是微软的Monaco Editor,这个库是直接从VSCode的源码中生成的,只不过是做了一点修改让它支持在浏览器中运行...自定义主题 Monaco Editor支持自定义主题,方法如下: // 定义主题 monaco.editor.defineTheme(themeName, themeData) // 使用定义的主题 monaco.editor.setTheme...onigasm 这个库就是用来解决上述浏览器不支持C语言编写的Oniguruma的问题,解决方法是把Oniguruma编译为WebAssembly,WebAssembly是一种中间格式,可以把非js代码编译成...安装: npm install monaco-editor-webpack-plugin -D Vue项目配置如下: // vue.config.js const MonacoWebpackPlugin...,因为所有内置语言都被去除了嘛,比如我们要使用js语言的话: monaco.languages.register({id: 'javascript'}) 这种方法虽然可以完美解决该问题,但是很大的一个副作用是语法提示不生效了
技术点 vue3 vite element-plus monaco-editor 实现后效果 实现 1....引入monaco-editor 首先在/src/views/home/index.vue的script添加引入: import * as monaco from 'monaco-editor/esm/vs.../editor/editor.main.js'; import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?...language: 'html', //此处使用的python,其他语言支持自行查阅demo theme: 'vs', //官方自带三种主题"vs" | "vs-dark" | "hc-black...language: 'html', //此处使用的python,其他语言支持自行查阅demo theme: 'vs', //官方自带三种主题"vs" | "vs-dark" | "hc-black
于是我向 CodeBuddy 提出一个大胆的请求:“我想要一个 Vue3 + Monaco Editor 打造的在线格式化平台 FormatForge,它要看起来专业,操作简单,还要有那种灰蓝配色和毛玻璃背景的氛围感...它首先用 Vite 初始化了 Vue3 项目,并立即装好了我提到的 monaco-editor、@monaco-editor/loader 和 prettier。...然后,它创建了主入口 App.vue 和一个叫 Editor.vue 的核心组件。...特别让我印象深刻的是,Editor.vue 中 monaco-editor 的集成写得非常稳,加载逻辑简洁明确,还支持自动语言检测。...当我刚想到要不要补一个压缩功能,它已经开始安装 terser、cssnano 和 html-minifier-terser,并写好代码支持 HTML、CSS、JS 三种语言的压缩处理。
// new VueLoaderPlugin() //开 .vue 支持的话加这一行 ] } HTML模板引擎和ejs webpack 默认是对js打包的,但是如果能在编译期对html打包才能满足我们...和 typescript 支持 我们GM工具里内嵌了VSCode的编辑器内核 monaco-editor ,在通用信息查看编辑和diff上还是很有用的。...然后由于 monaco-editor 依赖 typescript 就顺便把 typescript 也导入进来了。...安装脚本: npm install monaco-editor --save npm install monaco-editor-webpack-plugin typescript vue-ts-loader...= require('monaco-editor-webpack-plugin'); module.exports = { // mode: 'development', //'mode'
Monaco Editor 是 VS Code 中使用的开源代码编辑器, 拥有代码高亮和代码自动补全的功能,Monaco Editor 支持的语言有很多,所以使用的时候不需要将全部语言都支持,我们只需要按需加载需要支持的语言就可以了...默认会加载一个 editor.worker.js,这是一个基础功能文件,提供了所有语言通用的功能(例如已定义常量的代码补全提示),无论使用什么语言,monaco 都会去加载它。...看了下 webpack 打包出了所有的 chunk js,这些语言是我们不需要的,我们只需要加载所需要的语言 JS 就可以了,因此需要优化 js 文件大小。...languages (string[]) - 编辑器需要支持的语言,默认值是全部语言。 features (string[]) - 编辑器需要支持的控件,默认值是全部控件。...', }) ) } return config }, } 将 monaco-editor 封装一个 react 组件 import React, { useRef
安装安装依赖,这里请特别注意下版本yarn add monaco-editor@0.29.1yarn add monaco-editor-webpack-plugin@5.0.0复制代码配置 webpack...插件// vue.config.js...const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')module.export...和 monaco-editor 的对应关系,否则可能会出现无法运行的情况。...* 编辑器默认 sql 语言,支持的语言请参考 node_modules\monaco-editor\esm\vs\basic-languages 目录下~ * 编辑器样式仅有 'vs', 'vs-dark...setTheme() { monaco.editor.setTheme(this.theme) },复制代码SQL 代码格式化编辑器自身不支持 sql 格式化(试了下 JavaScript
vue-monaco-editor Monaco Editor Vue Component Based off React Monaco Editor Setup npm install...vue-monaco-editor –save Simple Vue Use import MonacoEditor from ‘vue-monaco-editor’ // use in component...()); } } }; Webpack Use By default, monaco-editor is loaded from a cdn asyncronously using require...: npm install copy-webpack-plugin --save-dev Add this to your webpack.config.js: const CopyWebpackPlugin...See src/App.vue for an example.
它支持触摸屏并且极大地提高了库的可访问性。 另一个优秀的库就是 Monaco Editor,它比较重量级,但功能却十分优秀,本文主要介绍下 Monaco Editor 的用法。...Monaco Editor 介绍 Monaco Editor 是 VS code 使用的编辑器,支持丰富的代码格式,拥有良好的可扩展性,支持代码并排对比编辑器,并且友好的支持视觉障碍人士,拥有语音播报功能...,但 Monaco Editor 在移动 web 中却不支持。...修改 webpack.config.js ,在 languages 填写只包含支持的语言子集。...0, "endLineNumber": 0, "endColumnNumber": 0 } 自定义语言 monaco editor 还可以支持自定义语言,下面代码演示一个日志的编辑器 //
Monaco Editor 是运行在浏览器环境中、为VS Code提供支持的代码编辑器。功能强大而且开源。...支持 TypeScript, JavaScript, CSS, LESS, SCSS, JSON, HTML 的智能感知、验证功能 多数语言支持的语法着色支持 代码差异比较 内置三种主题 2..../editor.worker.bundle.js'; } }; // webpack.config.js module.exports = { mode: 'development', entry.../src/index.tsx', 'editor.worker': 'monaco-editor/esm/vs/editor/editor.worker.js', 'json.worker...就能帮你搞定这些麻烦事: 自动注入 getWorkerUrl 全局变量 处理 worker 的编译配置 自动引入控件和语言包 https://github.com/Microsoft/monaco-editor-webpack-plugin
编辑器 目前涉及到代码编辑的场景基本使用的都是codemirror,因为它功能强大,使用简单,支持语法高亮、支持多种语言和主题等,但是为了能更方便的支持语法提示,本文选择的是微软的monaco-editor...monaco-editor支持多种加载方式,esm模块加载的方式需要使用webpack,但是vite底层打包工具用的是Rollup,所以本文使用直接引入js的方式。..."/monaco-editor/min/vs/loader.js"> monaco-editor/min/vs/editor/editor.main.js"...> 复制代码 monaco-editor内置了10种语言,我们选择中文的,其他不用的可以直接删掉: ?...动态切换编辑器语言 Monaco Editor想要动态修改语言的话我们需要换一种方式来设置文档,上文我们是创建编辑器的同时直接把语言通过language选项传递进去的,然后使用setValue来设置文档内容
、状态机、增量 ASTMarkdownRender渲染调度中枢,连接数据流与 UI虚拟窗口、批次队列、优先级调度CodeBlockNode代码块渲染,支持 Monaco 流式更新Worker 隔离、增量...Worker 加载失败检查 vite-plugin-monaco-editor 配置,确认 worker 文件路径Mermaid 图表不显示未安装 peer 依赖或未启用pnpm add mermaid...outputDirectory": "dist", "framework": "vite", "env": { "NODE_VERSION": "20" }}关键配置:启用 vite-plugin-monaco-editor...rel="preload" href="/monaco-editor-workers/*.js" as="script">5.2 阿里云 OSS + CDN 加速// 配置 CDN 回源规则{ "origin...Editor 流式更新方案:stream-monaco 项目Vue 3 虚拟化渲染最佳实践:Vue RFC #0030开源地址: GitHub: https://github.com/Simon-He95
官网就有一个 Diff Editor 的演示,我们要开发的就是在这个基础之上,加上语言切换的功能,让这个 Diff Editor 拥有内置云语言的语法高亮。...马上掘金 使用 monaco-editor 创建一个简单的代码编辑器 使用 monaco-editor 创建一个简单的 Diff 编辑器 Monaco Editor 有 2 种加载方式,分别是 amd...关于 Monaco Editor 在 next.js 中的配置,之前有介绍过,大家可以看这篇文章 《在 Next.js 中使用 Monaco Editor》。...({ jsx: monaco.languages.typescript.JsxEmit.React, }) 对与一些 typescript 的语法校验我们可以选择关闭,jsx 不支持,可以设置为 react...语法支持。
编辑器 目前涉及到代码编辑的场景基本使用的都是codemirror,因为它功能强大,使用简单,支持语法高亮、支持多种语言和主题等,但是为了能更方便的支持语法提示,本文选择的是微软的monaco-editor...monaco-editor支持多种加载方式,esm模块加载的方式需要使用webpack,但是vite底层打包工具用的是Rollup,所以本文使用直接引入js的方式。..."/monaco-editor/min/vs/loader.js"> monaco-editor/min/vs/editor/editor.main.js"...> monaco-editor内置了10种语言,我们选择中文的,其他不用的可以直接删掉: 接下来创建编辑器就可以了: const editor = monaco.editor.create...动态切换编辑器语言 Monaco Editor想要动态修改语言的话我们需要换一种方式来设置文档,上文我们是创建编辑器的同时直接把语言通过language选项传递进去的,然后使用setValue来设置文档内容
概述 前面有文章monaco-editor做自己的代码测试工具 ,本文书接前文,在代码中加入vconsole工具,可以进行代码调试、查看网络、查看元素等。...跟框架无关的,可以在 Vue、React 或其他任何框架中使用。...* as monaco from "monaco-editor"; import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker...worker'; import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?.../components/Editor.vue' export default { components: { Editor }, mounted() { this.runCode
界面也很优雅,如图: 但美中不足的是,Editor.md 目前不支持将 HTML 解析为 Markdown,有这方面需求的朋友要注意下。...用法也很简单,原生 JS 就可以,界面也很精简: 此外,它还有适用于 Vue 和 React 的封装版本,无论你习惯用哪个前端框架,都能无差异地使用它。...Vue 版本:https://github.com/surmon-china/vue-quill-editor React 版本:https://github.com/zenoamaro/react-quill...monaco-editor GitHub:https://github.com/microsoft/monaco-editor Star 数:28.6k 微软开源的代码编辑器,支持 Visual Studio...而且他是支持所见即所得的,类似 Typora 的那种编辑体验: 这款编辑器也同时支持原生 JS 以及 Vue、React 的封装版本,还是很推荐的。
再次之前,我们也许要先了解一两个工具,一个是 js 写的 DSL 解析器,叫做 nearley。另外一个也是 js 写的 ,叫做 jison 。...实现语法着色,代码补全,我们可能需要做一个让编辑器识别我们的自定义语言,这个过程叫做语言支持。...Monaco Editor 和 Ace Editor 都支持自定义语言支持,你可以根据自己的需求来实现自定义语言支持。这里我以 Monaco Editor 为例,来说明如何实现自定义语言支持。...你可以通过定义自己的语言支持来让 Monaco Editor 支持你的 DSL。以下是一个如何使用 Monaco Editor 来实现自定义语言支持的基本步骤:1....创建编辑器最后,你可以调用 monaco.editor.create 来创建一个编辑器实例,并设置它的语言和主题。
加载 monaco 脚本 这是一段加载 monaco 的js。...主要逻辑就是 load 一段 js,将 monaco 注册到 window 上 export default { // https://as.alipayobjects.com/g/cicada/monaco-editor-mirror.../0.6.1/min/vs/loader.js load(srcPath = 'https://as.alipayobjects.com/g/cicada/monaco-editor-mirror/..., monaco) { this.editor = editor; this.monaco = monaco; this.editor.onDidChangeModelContent.../components/vue-monaco-editor'; let logStore = []; export default { components: { MonacoEditor
在上文中,我们使用 monaco-editor 结合 Next.js,打造了编辑器的功能,在本文中,我们将继续优化 monaco-editor, 使它拥有代码格式化的功能。...集成到 monaco-editor monaco-editor 本身也提供了格式化的命令,可以通过右键菜单或者快捷键⇧ + ⌥ + F来对代码进行格式化,目前自带的格式化工具不如 Prettier 的标准...import * as monaco from "monaco-editor/esm/vs/editor/editor.api"; const modelToPaser={ html css,...,每一种语言都有不同的解析器,需要与Prettier的 paser 对应,比如:JavaScript 语言对应的就是babel paser。...修改 monaco 默认的格式化代码方法; editor.
下面我们将讲解在WPF中使用Blazor,并且使用Blazor做一些文件编辑操作,下面是需要用到的东西 WPF Blazor Masa Blazor Monaco 安装Masa Blazor模板 使用...打开wwwroot/index.html,并且引用Monaco的依赖,将一下依赖添加到body里面的最尾部。...' } }; monaco-editor/0.34.1/min/vs/loader.js"> monaco-editor/0.34.1/min/vs/editor/editor.main.nls.js..."> monaco-editor/0.34.1/min/vs/editor/editor.main.js