这个项目能做什么
Monaco Editor 是 VS Code 中功能完整的代码编辑器,打包为可在浏览器中运行的库。它以 `monaco-editor` 名称发布在 npm 上,提供 ESM 构建(兼容 webpack 等打包器)以及为向后兼容而保留的已弃用 AMD 构建。版本化的公共接口在 `monaco.d.ts` 中描述;其他一切均视为私有,可能随版本变化。
核心概念:
- 模型表示已打开的内容:它们保存文本、确定语言并跟踪编辑历史。模型不必对应真实文件。
- URI 标识模型,因此两个模型不能共享同一个 URI。未指定 URI 创建的模型会获得生成的 `inmemory://model/N` URI。选择有意义的 URI 很重要,因为某些智能功能(例如 TypeScript 导入解析或 JSON schema 选择)依赖于文件 URI。
- 编辑器是附加到 DOM 的用户可见视图;它们显示模型、管理视图状态并执行操作或命令。
- 提供程序提供智能编辑器功能,如补全和悬停信息,通常映射到语言服务器协议能力。
- 许多对象暴露 `.dispose()` 用于清理;释放模型会释放其 URI,编辑器也应被释放以释放资源和监听器。
本地化通过在主编辑器脚本之前加载匹配的 nls 脚本(例如 `esm/nls.messages.de.js`)来处理。README 指向一个交互式游乐场,用于尝试功能、测试版本和构建最小复现,以及完整的集成示例、API 文档、面向集成商的无障碍指南,以及用于为新语言创建 tokenizer 的 Monarch 游乐场。
FAQ 澄清了 Monaco 是从 VS Code 源代码生成的,并通过 shim 使其能在浏览器中运行;其版本不跟随 VS Code 的版本;VS Code 扩展通常无法在其中工作,除非它们完全基于 LSP 并带有 JavaScript 语言服务器。语言服务使用 web worker;通过 `file://` 加载的页面无法创建 worker,因此应通过 http 或 https 提供编辑器服务。不支持移动浏览器和移动 Web 应用框架,并且未内置 TextMate 语法(一个单独的社区项目将 monaco-editor 与 vscode-oniguruma 和 vscode-textmate 结合)。该项目采用 MIT 许可证,欢迎社区贡献。
评论
0 评分人数达到10人后显示
登录后参与讨论。