프로젝트 소개
모나코 에디터는 VS Code의 완전한 기능의 코드 에디터로, 브라우저에서 실행되는 라이브러리로 패키징되었습니다. npm에서 `monaco-editor`로 배포되며, webpack 같은 번들러와 호환되는 ESM 빌드와 하위 호환성을 위해 유지되는 비권장(사용 중단 예정) AMD 빌드를 포함합니다. 버전이 명시된 공개 API는 `monaco.d.ts`에 설명되어 있으며, 그 외의 모든 항목은 내부(private)로 간주되어 릴리스 간에 변경될 수 있습니다.
핵심 개념:
- 모델은 열린 콘텐츠를 나타냅니다: 텍스트를 보관하고, 언어를 결정하며, 편집 기록을 추적합니다. 모델은 반드시 실제 파일에 대응할 필요는 없습니다.
- URI는 모델을 식별하므로 두 모델이 동일한 URI를 공유할 수 없습니다. URI 없이 생성된 모델은 자동으로 `inmemory://model/N` 형식의 URI가 할당됩니다. 의미 있는 URI를 선택하는 것이 중요한 이유는 일부 지능형 기능(예: TypeScript 임포트 해결 또는 JSON 스키마 선택)이 파일 URI에 의존하기 때문입니다.
- 에디터는 DOM에 연결된 사용자 인터페이스 뷰입니다. 모델을 표시하고, 뷰 상태를 관리하며, 액션 또는 명령을 실행합니다.
- 프로바이더는 자동완성 및 호버 정보와 같은 지능형 에디터 기능을 제공하며, 일반적으로 언어 서버 프로토콜(LSP) 기능과 매핑됩니다.
- 많은 객체가 정리를 위해 `.dispose()` 메서드를 노출합니다. 모델을 폐기하면 해당 URI가 해제되며, 에디터는 리소스와 리스너를 해제하기 위해 폐기해야 합니다.
지역화는 주 에디터 스크립트 로드 전에 해당 nls 스크립트(예: `esm/nls.messages.de.js`)를 로드하여 처리합니다. README에는 기능을 시도하고, 버전을 테스트하며, 최소한의 재현 예제를 작성할 수 있는 인터랙티브 플레이그라운드, 완전한 통합 샘플, API 문서, 통합자를 위한 접근성 가이드, 그리고 새로운 언어용 토크나이저를 생성할 수 있는 모나크 플레이그라운드에 대한 링크가 포함되어 있습니다.
FAQ에서는 모나코가 브라우저에서 실행될 수 있도록 셸(shims)을 적용하여 VS Code 소스에서 생성된다는 점, 모나코의 버전이 VS Code의 버전을 따르지 않는다는 점, 그리고 VS Code 확장 프로그램은 JavaScript 언어 서버를 사용하는 완전한 LSP 기반이 아닌 한 일반적으로 모나코에서 작동하지 않는다는 점을 명확히 합니다. 언어 서비스는 웹 워커를 사용하며, `file://` 프로토콜로 로드된 페이지는 워커를 생성할 수 없으므로 에디터는 http 또는 https로 제공되어야 합니다. 모바일 브라우저 및 모바일 웹 앱 프레임워크는 지원되지 않으며, TextMate 문법은 기본 내장되지 않습니다(별도의 커뮤니티 프로젝트가 monaco-editor와 vscode-oniguruma 및 vscode-textmate를 결합합니다). 이 프로젝트는 MIT 라이선스를 따르며 커뮤니티 기여를 환영합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.