LoaderRegistry?
LoaderRegistry
는 load
기능을 보다 간편하게 사용하기 위해 미리 사용할 시트 라이브러리들을 등록해 놓을 수 있는 저장소입니다.
이 레지스트리에 아이템(라이브러리)을 추가하는 방법은 세 가지가 있습니다.
config
기능의registry
옵션에 추가registry.add
기능을 사용load
기능을 사용
이하 문서에서 LoaderRegistry에 추가할 또는 추가된 라이브러리(스크립트) 객체는 "아이템"이라고 일컫습니다.
인터페이스
CustomEventEmitter
abstract class CustomEventEmitter extends EventEmitter {// overrideemit(event: string | symbol, ...args: any[]): boolean// custom functionbind(events: string | symbol, listener: (...args: any[]) => void): this}
- class extends
EventEmitter
bind
: 공백으로 구분된 이벤트 유형들에 하나의 이벤트 콜백을 바인딩// load, loaded 이벤트 바인딩loader.bind('load loaded', eventHandler)
IBSheetLoader
abstract class IBSheetLoader extends CustomEventEmitter {registry: LoaderRegistry// ...}
- class extends
CustomEventEmitter
LoaderRegistry
LoaderRegistry 클래스
abstract class LoaderRegistry extends CustomEventEmitter {private _list: RegistryItem[]// ...}
- class extends
CustomEventEmitter
RegistryItem
RegistryItem의 아이템 객체
abstract class RegistryItem extends CustomEventEmitter {constructor(data: RegistryItemData) => thisname: stringversion: stringreadonly alias: stringreadonly loaded: string// ...}
- class extends
CustomEventEmitter
name
:string
- 아이템 식별자(name
), 유일하지만 여러 개의 버전을 가질 수 있음version
:string
- 아이템의 버전alias
:string
- 식별자(name
)와 버전version
의 조합 문자열(name@version
),
버전이 없다면 식별자와 동일loaded
:boolean
- 아이템이 로드되었는지 여부를 반환
RegistryItemData
라이브러리 등록 데이터
Common Interface
name
:string
- 식별자(Must be unique)version
:string
- 버전baseUrl
:string
- URL의 기본 경로(프로토콜 또는 절대경로를 포함하지 않은 경우)urls
:string[]|object[]
- URL 목록url
:string
- URL 문자열target
:head|body
- 추가시킬 부모 HTML 태그 이름(head
또는body
)type
:css|js
- 스크립트 타입, URL에 파일의 확장자가 포함되지 않은 경우 명시
dependentUrls
- 함께 제거시킬 URL 목록(unload
시 사용)validate
:() => boolean
- 스크립트 추가 후 검증 로직
only for IBSheet
license
:URL|string
URL
- 라이센스 파일 URL을 목록에 추가(ex:ibleaders.js
)string
- 전역 스코프의ibleaders
객체에,license
키 값을 추가합니다.
theme
: CSS 테마 로드 옵션(기본값:default
)- 설정에 따라 CSS 파일 URL을 완성합니다.
css/<theme>/main.css
- 설정에 따라 CSS 파일 URL을 완성합니다.
locales
: 메시지 데이터 로드 옵션(기본값:['ko']
)- 설정에 따라 언어팩 파일 URL을 완성합니다.
locale/<locale>.js
locales: ['ko']
를locales: 'ko'
와 같이 사용할 수 있다.
- 설정에 따라 언어팩 파일 URL을 완성합니다.
corefile
: 코어 파일이름 사용자화 옵션(기본값:ibsheet.js
)plugins
: 설정에 따라 스크립트 파일 URL을 완성합니다.plugins/ibsheet-<name>.js
excel
-plugins/ibsheet-excel.js
common
-plugins/ibsheet-common.js
dialog
-plugins/ibsheet-dialog.js
주요 기능
add
1.0.0
아이템을 추가
interface LoaderRegistryFunc {add(data: RegistryItemData,overwrite?: boolean = false): RegistryItem | undefined}// usageloader.registry.add(data)
data
: 등록 데이터overwrite
: 이미 동일한alias
의 아이템이 존재할 때 업데이트 하기 (기본값:false
)
addAll
1.0.0
아이템들을 순차적으로 추가
interface LoaderRegistryFunc {addAll(data: RegistryItemData[],overwrite?: boolean = false): RegistryItem[]}// usageloader.registry.addAll(data)
data
: 등록 데이터 목록overwrite
: 이미 동일한alias
의 아이템이 존재할 때 덮어쓰기 (기본값:false
)
get
1.0.0
일치하는 alias
의 아이템을 찾아서 반환, 없다면 null
을 반환
interface LoaderRegistryFunc {get(alias: string): RegistryItem | null}// usageloader.registry.get(alias)
getAll
1.0.0
일치하는 name
또는 alias
의 아이템을 찾아서 목록을 반환
interface LoaderRegistryFunc {getAll(alias: string): RegistryItem[]}// usageloader.registry.getAll(alias)
info
1.0.0
일치하는 name
또는 alias
의 아이템을 찾아서 각 객체의 정보들을 JSON
문자열로 반환, 없다면 undefined
를 반환
interface LoaderRegistryFunc {info(alias: string): string | undefined}// usageloader.registry.info(alias)
list
1.0.0
추가된 아이템의 alias
목록을 반환
interface LoaderRegistryFunc {list(): string[]}// usageloader.registry.list()
exists
1.0.0
일치하는 name
또는 alias
의 아이템 존재 여부를 반환
interface LoaderRegistryFunc {exists(alias: string): boolean}// usageloader.registry.exists(alias)
remove
1.0.0
일치하는 name
또는 alias
의 아이템들을 제거하고 그 객체를 반환, 없다면 undefined
를 반환
interface LoaderRegistryFunc {remove(alias: string): RegistryItem | RegistryItem[] | undefined}// usageloader.registry.remove(alias)
사용 예제
등록하기
// get global loader instanceimport loader from '@ibsheet/loader'// 데이터 정의const ibsheetLibrary = {name: 'ibsheet', // unique name// <publicpath>: your public directorybaseUrl: '<publicpath>/ibsheet',theme: 'default', // defaultlocales: ['ko'], // or locales: 'ko' (default)plugins: ['excel', 'common', 'dialog']// license: './ibleaders.js'}// define registry listconst registry = [ibsheetLibrary]// 방법 1: loader.config 를 사용.loader.config({ registry: registry })// 방법 2: loader.registry.add 를 사용loader.registry.add(ibsheetLibrary)// 방법 3: loader.registry.addAll 를 사용loader.registry.addAll(registry)
등록 아이템 확인하기
// exists registry itemconsole.log('ibsheet exists:', loader.registry.exists('ibsheet'))// get registry itemconst item = loader.registry.get('ibsheet')console.log('ibsheet item:', item)console.log('ibsheet item.loaded:', item.loaded)// get registry item infoconsole.log('ibsheet info:', loader.registry.info('ibsheet'))// get registry listconsole.log('ibsheet aliases', loader.registry.list())console.log('loader list', loader.list())