跳到主要内容

Code Editor

@aiao/code-editor 系列提供基于 CodeMirror 6 的跨框架代码编辑器,支持 100+ 种语言高亮、暗色主题、动态语言切换。

架构

@aiao/code-editor            ← 核心:语言定义 + 类型
├── @aiao/code-editor-angular ← Angular 组件 + ControlValueAccessor
├── @aiao/code-editor-react ← React 受控组件
└── @aiao/code-editor-vue ← Vue SFC + v-model

安装

# 核心包(自动安装)
npm install @aiao/code-editor

# 选择框架
npm install @aiao/code-editor-angular # Angular
npm install @aiao/code-editor-react # React
npm install @aiao/code-editor-vue # Vue

支持语言

内置 16 种常用语言,并合并 @codemirror/language-data 的 100+ 种语言(按需加载):

语言代码扩展名底层包
CSScss.css@codemirror/lang-css
HTMLhtml.html, .htm@codemirror/lang-html
XMLxml.xml@codemirror/lang-xml
JavaScriptjavascript.js, .mjs, .cjs@codemirror/lang-javascript
JSXjsx.jsx@codemirror/lang-javascript
TypeScripttypescript.ts, .mts, .cts@codemirror/lang-javascript
TSXtsx.tsx@codemirror/lang-javascript
JSONjson.json, .map@codemirror/lang-json
SCSSscss.scss@codemirror/lang-sass
Sasssass.sass@codemirror/lang-sass
Pythonpython.py, .pyw@codemirror/lang-python
Markdownmarkdown.md@codemirror/lang-markdown
SQLsql.sql@codemirror/lang-sql
SQLitesqlite@codemirror/lang-sql
PostgreSQLpostgresql@codemirror/lang-sql

使用 SUPPORT_LANGUAGES 常量获取完整语言列表:

import { SUPPORT_LANGUAGES } from '@aiao/code-editor';

主题

主题说明
'light'CodeMirror 默认浅色主题
'dark'One Dark 暗色主题(@codemirror/theme-one-dark

通过 Compartment 机制动态切换,无需重建编辑器实例。

通用配置

所有框架共享以下配置项:

配置类型默认值说明
valuestring''编辑器内容
languagestring语言名称(大小写不敏感)
theme'light' | 'dark''light'主题
placeholderstring''占位文本
readonlybooleanfalse只读模式
disabledbooleanfalse禁用编辑
setup'basic' | 'minimal''basic'预设扩展包
indentWithTabbooleanfalse启用 Tab 缩进
indentUnitstring''缩进单位字符串
lineWrappingbooleanfalse自动换行
highlightWhitespacebooleanfalse高亮空白字符

Setup 预设

说明
'basic'完整编辑体验(行号、代码折叠、括号匹配等)
'minimal'精简模式(适合嵌入式场景)
null无预设(仅 Angular 支持)

跨框架对比

特性AngularReactVue
双向绑定ControlValueAccessorvalue + onChangev-model:value
Focus/Blur 事件aoFocus/aoBlur
autoFocus
自定义语言列表languages input
Shadow DOMroot input
setup=null
SSR 安全isPlatformBrowser
公共方法set*() 方法
默认语言'sql''sql'