이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 영어 버전을 참조하세요
NocoBase에서 서버 플러그인(Server Plugin)은 서버 기능을 확장하고 사용자 정의할 수 있는 모듈화된 방법을 제공합니다. 개발자는 @nocobase/server의 Plugin 클래스를 상속하여 다양한 생명 주기 단계에서 이벤트, API, 권한 설정 및 기타 사용자 정의 로직을 등록할 수 있습니다.
기본적인 플러그인 클래스 구조는 다음과 같습니다.
플러그인의 생명 주기 메서드는 다음 순서로 실행되며, 각 메서드에는 특정 실행 시점과 용도가 있습니다.
| 생명 주기 메서드 | 실행 시점 | 설명 |
|---|---|---|
| staticImport() | 플러그인 로드 전 | 클래스의 정적 메서드로, 애플리케이션 또는 플러그인 상태와 무관한 초기화 단계에서 실행됩니다. 플러그인 인스턴스에 의존하지 않는 초기화 작업을 수행하는 데 사용됩니다. |
| afterAdd() | 플러그인이 플러그인 관리자에 추가된 직후 실행 | 이때 플러그인 인스턴스는 생성되었지만, 모든 플러그인이 초기화를 완료한 것은 아닙니다. 일부 기본적인 초기화 작업을 수행할 수 있습니다. |
| beforeLoad() | 모든 플러그인의 load() 메서드 실행 전 | 이 시점에서 모든 활성화된 플러그인 인스턴스에 접근할 수 있습니다. 데이터베이스 모델 등록, 데이터베이스 이벤트 수신, 미들웨어 등록 등 준비 작업에 적합합니다. |
| load() | 플러그인 로드 시 실행 | 모든 플러그인의 beforeLoad() 메서드 실행이 완료된 후에야 load() 메서드가 실행되기 시작합니다. 리소스, API 인터페이스, 서비스 등 핵심 비즈니스 로직을 등록하는 데 적합합니다. |
| install() | 플러그인이 처음 활성화될 때 실행 | 플러그인이 처음 활성화될 때 한 번만 실행됩니다. 일반적으로 데이터베이스 테이블 구조 초기화, 초기 데이터 삽입 등 설치 로직에 사용됩니다. |
| afterEnable() | 플러그인이 활성화된 후 실행 | 플러그인이 활성화될 때마다 실행되며, 타이머 작업 시작, 예약 작업 등록, 연결 설정 등 활성화 후 동작에 사용될 수 있습니다. |
| afterDisable() | 플러그인이 비활성화된 후 실행 | 플러그인이 비활성화될 때 실행되며, 리소스 정리, 작업 중지, 연결 종료 등 정리 작업에 사용될 수 있습니다. |
| remove() | 플러그인이 삭제될 때 실행 | 플러그인이 완전히 삭제될 때 실행됩니다. 데이터베이스 테이블 삭제, 파일 정리 등 제거 로직을 작성하는 데 사용됩니다. |
| handleSyncMessage(message) | 다중 노드 배포 시 메시지 동기화 | 애플리케이션이 다중 노드 모드에서 실행될 때, 다른 노드에서 동기화된 메시지를 처리하는 데 사용됩니다. |
생명 주기 메서드의 일반적인 실행 흐름은 다음과 같습니다.
staticImport()afterAdd() → beforeLoad() → load()afterAdd() → beforeLoad() → load() → install()afterAdd() → beforeLoad() → load()afterDisable()이 실행됩니다.remove()가 실행됩니다.플러그인 개발 시 this.app을 통해 애플리케이션 인스턴스가 제공하는 다양한 API에 접근할 수 있으며, 이는 플러그인 기능 확장의 핵심 인터페이스입니다. app 객체는 시스템의 다양한 기능 모듈을 포함하고 있으며, 개발자는 플러그인의 생명 주기 메서드에서 이러한 모듈을 사용하여 비즈니스 요구 사항을 구현할 수 있습니다.
| 멤버 이름 | 타입/모듈 | 주요 용도 |
|---|---|---|
| logger | Logger | 시스템 로그를 기록하고, 다양한 수준(info, warn, error, debug)의 로그 출력을 지원하여 디버깅 및 모니터링에 용이합니다. 자세한 내용은 로그를 참조하십시오. |
| db | Database | ORM 계층 작업, 모델 등록, 이벤트 수신, 트랜잭션 제어 등 데이터베이스 관련 기능을 제공합니다. 자세한 내용은 데이터베이스를 참조하십시오. |
| resourceManager | ResourceManager | REST API 리소스 및 작업 핸들러를 등록하고 관리하는 데 사용됩니다. 자세한 내용은 리소스 관리를 참조하십시오. |
| acl | ACL | 접근 제어 계층으로, 권한, 역할 및 리소스 접근 정책을 정의하여 세분화된 권한 제어를 구현합니다. 자세한 내용은 권한 제어를 참조하십시오. |
| cacheManager | CacheManager | 시스템 수준 캐시를 관리하며, Redis, 메모리 캐시 등 다양한 캐시 백엔드를 지원하여 애플리케이션 성능을 향상시킵니다. 자세한 내용은 캐시를 참조하십시오. |
| cronJobManager | CronJobManager | 타이머 작업을 등록, 시작 및 관리하는 데 사용되며, Cron 표현식 구성을 지원합니다. 자세한 내용은 타이머 작업을 참조하십시오. |
| i18n | I18n | 국제화 지원을 통해 다국어 번역 및 현지화 기능을 제공하여 플러그인이 여러 언어를 지원하는 데 용이합니다. 자세한 내용은 국제화를 참조하십시오. |
| cli | CLI | 명령줄 인터페이스를 관리하고, 사용자 정의 명령을 등록 및 실행하여 NocoBase CLI 기능을 확장합니다. 자세한 내용은 명령줄을 참조하십시오. |
| dataSourceManager | DataSourceManager | 여러 데이터 소스 인스턴스 및 해당 연결을 관리하며, 다중 데이터 소스 시나리오를 지원합니다. 자세한 내용은 데이터 소스 관리를 참조하십시오. |
| pm | PluginManager | 플러그인 관리자로, 플러그인을 동적으로 로드, 활성화, 비활성화, 삭제하고 플러그인 간의 의존 관계를 관리하는 데 사용됩니다. |
참고: 각 모듈의 자세한 사용 방법은 해당 문서 장을 참조하십시오.