Lightning Component Framework 정의
Lightning Component Framework란 web app과 mobile 장치를 개발하기위한 UI framework이다.
구성요소
App
- Component는 Component에 Component를 추가할 수 있지만, app은 App안에 App을 추가할 수 없음.
- App은 분리되어 있는 URL을 가지고 있다.
- <arua: application> - 쉽게 말해서 Lightning Component App은 container의 종류중에 하나.
Component
- Component는 Lightning에서 app을 구성하는데 가장 필요한 아이템
Controller
- Component의 controller. 혹은 주요 JavaScript 파일. Client-Side Controller이다. Client-Side Controller는 컴포넌트 안에서 event를 handle한다.
- Event 발생시 사용
- Business Logic을 helper method에 위임할 때 사용
- 컴포넌트 초기화에서 DML operation을 초기화하지 않을때. 만약 우리가 init()에서 DML을 사용한다면, 이것은 CSRF(Cross-Site Request Forgery) 문제를 소개한다.
- DOM은 Controller에서 수정될 수 없다.
Custom Controller VS Controller Extension
- Custom Controller는 Apex class that implements all of the logic for a page without leveraging a standard controller. Use custom controllers when you want your Visualforce page to run entirely in system mode, which does not enforce the permissiosn and field-level security of the current user.
- Controller Extension은 Apex class that extends the functionality of a standard or custom controller. Use Controller extensions when:
You want to leverage the built-in functionality of standard controller but override one or more actions, such as edit, view, save, or delete.
You want to add new actions.
You want to build a Visualforce page that respects user permission. Although a controller extension class executes in system mode, if a controller extension extends a standard controller, the logic from the standard controller does not execute in system mode. Instead, it executes in user mode, in which permissions, field-level security, and sharing rules of the current user apply.
Helper
- Component의 helper. 혹은 JavaScript의 두번째 파일.
- Helper란 server-side Controller이다. Server-Side action이나 data나 task를 프로세싱할 때 사용한다.
- Client-side Controller나 Renderer로부터 Helper의 자바 스크립트 함수를 호출할 수 있다.
- A component's helper is the appropriate place to put code to be shard between several different action handlers.
- A component's helper is the great place to put complex processing details, so that the logic of your action handlers remains clear and streamlined.
- Helper functions can have any function signature.
- Helper Function은 컴포넌트 번들에서 다른 자바스크립트로부터 호출될 것이다.
- 코드의 재사용과 무게감을 줄이기 위해 보통 쓰임
- Cilent-Side의 Controller나 Renderer에 의해 호출된다
Controller vs Helper
실행하는 동 Framework가 각각 컴포넌트에서 Controller의 인스턴스, Renderer의 인스턴스 생성 (하지만 오로지 Helper의 한 카피만 생성). 이점으로는, Helper가 모든 곳을 across하기 때문에, 한 장소에서 Controller와 Renderer의 로직을 공유할 수 있다.
차이점:
1. User event나 component와 같은 다른 event를 듣기 위해선 Controller를 사용한다. 하지만 비즈니스 논리를 위임하려면 helper를 사용한다.
2. 모든 Renderer functions (render, rerender)에서 비슷한 위임할 수 있다.
3. 한 controller function에서 또다른 controller function을 호출할 떄마다, Helper로 로직을 옮겨라.
Renderer
-컴포넌트의 기본 rendering 행동을 변화하거나 override하기 위해 custom render 사용한다.
- Cliend-Side Controller이다.
- 컴포넌트를 HTML로 바꾸어 브라우저에 나타나게 하는 것
- It is a JavaScript resource that defines the functions for all the components's actions.
- 이벤트 발생하면, 데이터를 변화하거나 renderer()를 호출하기 위해 액션을 유발한다.
- Renderer() function은 컴포넌트가 그들스스로 업데이트 가능하게 하게 한다.
- 일반적으로 superRenderer()을 호출함으로써 확장시키기를 원한다.
-컴포넌트의 기본 rendering 행동을 변화하거나 override하기 위해 custom render 사용한다.
- Cliend-Side Controller이다.
- 컴포넌트를 HTML로 바꾸어 브라우저에 나타나게 하는 것
- It is a JavaScript resource that defines the functions for all the components's actions.
- 이벤트 발생하면, 데이터를 변화하거나 renderer()를 호출하기 위해 액션을 유발한다.
- Renderer() function은 컴포넌트가 그들스스로 업데이트 가능하게 하게 한다.
- 일반적으로 superRenderer()을 호출함으로써 확장시키기를 원한다.
출처: https://www.mstsolutions.com/technical/lightning-component-bundle