loadComponent API를 이용하여 컴포넌트 작성하기 1
컴포넌트를 만들어 배포하는 방법을 설명합니다.
jikji 3.3.31 버전 이상에서 지원되는 loadComponent API를 이용하여 컴포넌트를 작성하는 방법을 소개합니다.
컴포넌트에 대한 기본적인 내용은 Element에서 JS 파일 동적으로 로드 페이지를 참고하세요.
작업 내용
작업 내용은 다음과 같습니다.
외부 JS 파일에 컴포넌트를 구현합니다.
이벤트 창에서 컴포넌트가 구현된 JS 파일을 로드합니다.
이벤트 창에서는 컴포넌트 구현에 필요한 정보를 컴포넌트 구현 객체에 넘겨줍니다.
element 요소들을 참조할 수 있도록 이름 정보
컴포넌트 설정 옵션
컴포넌트 초기화 완료 후 실행할 콜백함수
외부 JS 파일에 컴포넌트를 구현하면 다음과 같은 장점이 있습니다.
이벤트 코드 창에 컴포넌트 구현로직이 있으면 컴포넌트를 생성할때 또는 Element를 복사해서 사용할때마다 코드 복제본이 생성되게 되어 코드 수정 및 관리가 어려워 집니다.
컴포넌트 로직을 직지 외부에서 일괄 수정할 수 있습니다. 재 출판 없이 수정된 기능을 일괄적으로 적용 가능하기 때문에 컴포넌트 기능 관리가 쉬워집니다.
요소들 배치 (디자인)
먼저 직지에서 그룹을 하나 생성한 후 그룹 내부에 컴포넌트에서 사용할 element 요소들을 디자인 합니다.

Tab 네비게이션 그룹을 선택한 후 initialize 이벤트에 스크립트를 추가합니다.

컴포넌트 로드 및 설정 코드
initialize 이벤트에 추가할 코드 샘플입니다.
컴포넌트 정의 JS 파일을 로드해서 컴포넌트 초기화를 실행하는 코드입니다.
전달되는 config 속성은 컴포넌트에 따라 알맞게 설정하여 전달하면 됩니다.
컴포넌트를 페이지에 여러개 사용하더라도 컴포는트 소스는 최초 한번만 로드됩니다
컴포넌트 구현 코드 (외부 JS 파일)
위 코드에서 ./_share/jikji.component/Navi/Tab.0.0.1.js 경로로 설정된 파일에 작성되는 코드입니다.
_share 폴더 경로 사용
_share 폴더 경로 사용_share 폴더 하위에 에셋 파일을 설정해 놓으면 컴포넌트로 등록할때 경로가 바뀌지 않는 이점이 있습니다.
OPS/asset.file 경로에 있는 asset 파일을 사용하여 컴포넌트를 만든 경우 컴포넌트 등록 후 파일 경로는 다음과 같이 바뀝니다.
주의할 점
다른 컴포넌트가 사용하는 경로와 겹치지 않을만한 경로를 사용해야 다른 컴포넌트 설치시 같은 경로에 덮어쓰기 되는 것을 방지할 수 있습니다.
직지에서 설치된 컴포넌트를 삭제할때 자동 삭제되지 않습니다.
컴포넌트 구현 템플릿 코드 (pure JS)
컴포넌트 구현 샘플입니다. 코드 템플릿으로 사용하시면 좋을것 같습니다.
주목할 부분은 컴포넌트 객체를 window['jikjiComponent'].Navi.Tab 으로 전역 범위에 설정 했습니다. 이는 나중에 loadComponent 콜백 함수에서 컴포넌트 객체를 찾는데 사용됩니다.
컴포넌트 로드할때 필요한 소스 파일 명시
소스 파일은 배열로도 명시할 수 있습니다.
이후 컴포넌트에 배포, 등록 과정은 Element에서 JS 파일 동적으로 로드 페이지를 참고하세요.
Last updated