핵심 구성 요소 기반 적응형 양식의 사용자 정의 함수 만들기
핵심 구성 요소를 기반으로 하는 적응형 Forms은 사용자 입력에 따라 콘텐츠 및 동작을 조정하여 다이내믹한 사용자 경험을 제공합니다. 사용자 정의 기능을 사용하면 개발자가 기능을 확장하여 양식이 특정 요구 사항을 충족할 수 있습니다. 개발자는 사용자 정의 기능을 통합하여 복잡한 논리를 구현하고 프로세스를 자동화하며 특정 비즈니스 요구 사항 또는 사용자의 기대에 부합하는 고유한 상호 작용을 도입할 수 있습니다. 양식이 다양한 조건에 적응할 뿐만 아니라 다양한 사용 사례에 대해 보다 정확하고 효과적인 솔루션을 제공하도록 보장합니다.
이 문서에서는 핵심 구성 요소를 사용하여 적응형 Forms에 대한 사용자 지정 기능을 만드는 단계를 안내합니다.
고려 사항
-
parameter type
및return type
은(는)None
을(를) 지원하지 않습니다. -
사용자 지정 함수 목록에서 지원되지 않는 함수는 다음과 같습니다.
- 생성기 함수
- 비동기/대기 함수
- 메서드 정의
- 클래스 메서드
- 기본 매개 변수
- 나머지 매개 변수
사용자 지정 함수를 만들기 위한 사전 요구 사항
적응형 Forms에 사용자 지정 기능을 추가하기 전에 다음을 확인하십시오.
소프트웨어:
-
IDE(일반 텍스트 편집기): 모든 일반 텍스트 편집기가 작동할 수 있지만, Microsoft Visual Studio Code와 같은 IDE(통합 개발 환경)에서는 쉽게 편집할 수 있는 고급 기능을 제공합니다.
-
Git: 코드 변경 내용을 관리하려면 이 버전 제어 시스템이 필요합니다. 설치되지 않은 경우 https://git-scm.com에서 다운로드하십시오.
사용자 정의 함수 만들기
규칙 편집기에서 사용자 지정 함수를 호출할 클라이언트 라이브러리를 만듭니다. 자세한 내용은 클라이언트측 라이브러리 사용을 참조하십시오.
사용자 정의 함수를 만드는 단계는 다음과 같습니다.
클라이언트 라이브러리 만들기 create-client-library
클라이언트 라이브러리를 추가하여 사용자 정의 함수를 추가할 수 있습니다. 클라이언트 라이브러리를 만들려면 다음 단계를 수행하십시오.
리포지토리 복제
AEM Forms as a Cloud Service 리포지토리 복제:
-
명령줄 또는 터미널 창을 엽니다.
-
저장소를 저장할 시스템에서 원하는 위치로 이동합니다.
-
다음 명령을 실행하여 저장소를 복제합니다.
git clone [Git Repository URL]
이 명령은 저장소를 다운로드하고 시스템에 복제된 저장소의 로컬 폴더를 만듭니다. 이 안내서에서는 이 폴더를 [AEMaaCS 프로젝트 디렉터리] (으)로 참조합니다.
클라이언트 라이브러리 폴더 추가
새 클라이언트 라이브러리 폴더를 [AEMaaCS 프로젝트 디렉터리]에 추가하려면 다음 단계를 수행합니다.
-
편집기에서 [AEMaaCS 프로젝트 디렉터리]를 엽니다.
-
ui.apps
찾기. -
새 폴더를 추가합니다. 예를 들어
experience-league
(으)로 이름이 지정된 폴더를 추가합니다. -
/experience-league/
폴더로 이동하여ClientLibraryFolder
을(를) 추가합니다. 예를 들어 이름이customclientlibs
인 클라이언트 라이브러리 폴더를 만듭니다.Location is: [AEMaaCS project directory]/ui.apps/src/main/content/jcr_root/apps/
클라이언트 라이브러리 폴더에 파일 및 폴더 추가
추가된 클라이언트 라이브러리 폴더에 다음을 추가합니다.
- .content.xml 파일
- js.txt 파일
- js 폴더
Location is: [AEMaaCS project directory]/ui.apps/src/main/content/jcr_root/apps/experience-league/customclientlibs/
-
.content.xml
에서 다음 코드 행을 추가합니다.code language-javascript <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" jcr:primaryType="cq:ClientLibraryFolder" categories="[customfunctionscategory]"/>
note note NOTE client library folder
및categories
속성의 이름을 선택할 수 있습니다. -
js.txt
에서 다음 코드 행을 추가합니다.code language-javascript #base=js function.js
-
js
폴더에서 사용자 지정 함수를 포함하는function.js
(으)로 Javascript 파일을 추가합니다.code language-javascript /** * Calculates Age * @name calculateAge * @param {object} field * @return {string} */ function calculateAge(field) { var dob = new Date(field); var now = new Date(); var age = now.getFullYear() - dob.getFullYear(); var monthDiff = now.getMonth() - dob.getMonth(); if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) { age--; } return age; }
-
파일을 저장합니다.
filter.xml에 새 폴더 포함:
-
[AEMaaCS 프로젝트 디렉터리]에서
/ui.apps/src/main/content/META-INF/vault/filter.xml
파일로 이동합니다. -
파일을 열고 끝에 다음 줄을 추가합니다.
<filter root="/apps/experience-league" />
-
파일을 저장합니다.
새로 만든 클라이언트 라이브러리 폴더를 AEM 환경에 배포합니다
Cloud Service 환경에 AEM as a Cloud Service [AEMaaCS 프로젝트 디렉터리]를 배포합니다. Cloud Service 환경에 배포하려면 다음을 수행하십시오.
-
변경 내용 커밋
- 아래 명령을 사용하여 저장소의 변경 내용을 추가하고, 커밋하고, 푸시합니다.
code language-javascript git add . git commit -a -m "Adding custom functions" git push
-
업데이트된 코드를 배포합니다.
- 기존 전체 스택 파이프라인을 통해 코드 배포를 트리거합니다. 이렇게 하면 업데이트된 코드가 자동으로 빌드 및 배포됩니다.
아직 파이프라인을 설정하지 않았다면 AEM Formsas a Cloud Service 에 대한 파이프라인 설정 방법에 대한 안내서를 참조하십시오.
파이프라인이 실행되면 클라이언트 라이브러리에 추가된 사용자 지정 함수를 적응형 양식 규칙 편집기에서 사용할 수 있게 됩니다.
적응형 양식에 클라이언트 라이브러리 추가 use-custom-function
클라이언트 라이브러리를 Forms CS 환경에 배포한 후에는 적응형 양식에서 해당 기능을 사용하십시오. 적응형 양식에 클라이언트 라이브러리를 추가하려면
-
편집 모드에서 양식을 엽니다. 편집 모드에서 양식을 열려면 양식을 선택하고 편집 을 선택합니다.
-
콘텐츠 브라우저를 열고 적응형 양식의 안내서 컨테이너 구성 요소를 선택합니다.
-
안내서 컨테이너 속성
-
기본 탭을 열고 드롭다운 목록에서 클라이언트 라이브러리 범주 의 이름을 선택합니다(이 경우
customfunctionscategory
선택).note note NOTE 클라이언트 라이브러리 범주 필드 내에서 쉼표로 구분된 목록을 지정하여 여러 범주를 추가할 수 있습니다. -
완료 를 클릭합니다.
JavaScript 주석을 사용하여 적응형 양식의 규칙 편집기에서 사용자 지정 함수를 사용할 수 있습니다.
적응형 양식에서 사용자 정의 함수 사용
적응형 양식에서는 규칙 편집기 내에서 사용자 지정 함수를 사용할 수 있습니다. JavaScript 파일(Function.js
파일)에 다음 코드를 추가하여 생년월일(YYYY-MM-DD)을 기준으로 연령을 계산합니다. 생년월일을 입력으로 취하여 연령을 반환하는 사용자 지정 함수를 calculateAge()
(으)로 만듭니다.
/**
* Calculates Age
* @name calculateAge
* @param {object} field
* @return {string}
*/
function calculateAge(field) {
var dob = new Date(field);
var now = new Date();
var age = now.getFullYear() - dob.getFullYear();
var monthDiff = now.getMonth() - dob.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) {
age--;
}
return age;
}
위의 예에서 사용자가 생년월일을 형식(YYYY-MM-DD)으로 입력하면 사용자 지정 함수 calculateAge
이(가) 호출되고 연령을 반환합니다.
이제 양식을 미리 보기하여 사용자 정의 함수가 규칙 편집기를 통해 어떻게 구현되는지 살펴보겠습니다.
사용자 정의 함수의 기능
AEM Forms의 사용자 지정 기능은 양식의 기능을 확장하고 개인화하는 강력한 솔루션을 제공합니다. 사용자 지정 함수를 사용하여 조직의 특정 요구 사항을 충족할 수 있습니다.
이러한 함수는 특정 필드 작업, 전역 필드 사용 및 비동기 작업, 캐싱 메커니즘 통합 등 다양한 기능을 지원합니다. 이러한 유연성으로 인해 양식이 복잡한 요구 사항에 맞게 조정되고 효율적이고 맞춤화된 사용자 경험을 제공할 수 있습니다. 이러한 고급 기능을 활용하면 양식 상호 작용을 강화하고 성능을 최적화하여 AEM 양식의 기능을 개선하고 반응성을 높일 수 있습니다.
사용자 정의 함수의 기능에 대해 자세히 살펴보겠습니다.
사용자 지정 함수에서의 비동기 지원 support-of-async-functions
사용자 지정 함수를 사용하여 규칙 편집기에서 비동기 함수를 구현할 수 있습니다. 이 방법에 대한 자세한 내용은 문서 적응형 양식에서 비동기 기능 사용을 참조하세요.
사용자 지정 함수에서 필드 및 전역 범위 개체 지원 support-field-and-global-objects
필드 개체는 텍스트 필드, 확인란 등 양식 내의 개별 구성 요소 또는 요소를 나타냅니다. Globals 개체에는 사용자 지정 함수 내에서 양식을 수정하는 방법, 대상 필드 인스턴스 및 양식 인스턴스와 같은 읽기 전용 변수가 포함되어 있습니다.
param {scope} globals
은(는) 마지막 매개 변수여야 하며 적응형 양식의 규칙 편집기에 표시되지 않습니다.범위 개체에 대한 자세한 내용은 사용자 지정 함수의 범위 개체 문서를 참조하십시오.
사용자 지정 함수에서 캐싱 지원
적응형 Forms은 규칙 편집기에서 사용자 지정 함수 목록을 검색하는 동안 응답 시간을 개선하기 위해 사용자 지정 함수에 대한 캐싱을 구현합니다. Fetched following custom functions list from cache
(으)로 표시되는 메시지가 error.log
파일에 나타납니다.
캐시를 지원하는
사용자 지정 함수가 수정되면 캐싱이 무효화되고 구문 분석됩니다.
문제 해결
-
사용자 정의 함수에 대한 코드가 들어 있는 JavaScript 파일에 오류가 있는 경우 사용자 정의 함수가 적응형 양식의 규칙 편집기에 나열되지 않습니다. 사용자 지정 함수 목록을 확인하려면
error.log
파일로 이동하여 오류를 확인할 수 있습니다. 오류가 발생하면 사용자 지정 함수 목록이 비어 있습니다.오류가 없는 경우 사용자 지정 함수를 가져와서
error.log
파일에 나타납니다.Fetched following custom functions list
(으)로 표시되는 메시지가error.log
파일에 있습니다.
다음 단계
이제 핵심 구성 요소를 기반으로 하는 적응형 양식에 대한 다양한 사용자 지정 함수의 예를 살펴보겠습니다.
추가 참조
- 핵심 구성 요소 기반 적응형 양식의 규칙 편집기 소개
- 핵심 구성 요소 기반 적응형 양식의 규칙 편집기에서 사용 가능한 연산자 유형 및 이벤트
- 핵심 구성 요소 기반 적응형 양식의 규칙 편집기 사용자 인터페이스
- 핵심 구성 요소 기반 적응형 양식의 규칙 편집기의 다양한 사용 사례
- 다양한 규칙 편집기 에디션의 차이점
- 적응형 양식에서 비동기 함수 사용
- 핵심 구성 요소 기반 양식의 시각적 규칙 편집기에서 Service 개선 사항 호출
- 핵심 구성 요소 기반 적응형 양식의 사용자 정의 함수 소개
- 핵심 구성 요소 기반 적응형 양식의 사용자 정의 함수 만들기
- 사용자 정의 함수의 범위 오브젝트
- 사용자 정의 함수 개발 및 사용의 예