Lightning ์น ๊ตฌ์ฑ ์์์ ์คํ์ผ ๋ฐ ๋ฐ์ดํฐ ์ถ๊ฐํ๊ธฐ
ํ์ต ๋ชฉํ
์ด ์ ๋์ ์๋ฃํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ๊ตฌ์ฑ ์์์ ํจ๊ป CSS ๋ฐ Lightning Design System ์ฌ์ฉํ๊ธฐ
- Salesforce org์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ์กฐ์ง์ ์ฑ์ ๋ฐฐํฌํ๊ณ ํ
์คํธํ๊ธฐ
๊ตฌ์ฑ ์์ ์กฐ์ ํ๊ธฐ
์ด์ Lightning ์น ๊ตฌ์ฑ ์์์ ๋ํ ์ค๋ช ์ ๋ง๋ฐ์ง ๋จ๊ณ์ ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๊ตฌ์ฑ ์์์ ๋ชจ์์ ์ ์ดํ๊ณ ๋ผ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. Lightning ํ๊ฒฝ์ ๋ง๊ฒ ๋ชจ์๊ณผ ๋๋์ ์กฐ์ ํ๊ณ ์กฐ์ง์์ ๋ผ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ ๋์์๋ ํ ์คํธ์ ๋ชจ์์ ์๋๊ฐ ์๊ฒ ๋ฐ๊พธ๊ณ ์กฐ์ง์ ๋ ์ฝ๋์์ ์ด๋ฆ์ ๋์ ์ผ๋ก ๋์ด์ ๋ณด๊ฒ ์ต๋๋ค.
์ง๋ ์ ๋์ Bike Selector ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ด ์ ๋์ ์๋ฃํ์ธ์.
CSS ๋ฐ ๊ตฌ์ฑ ์์ ์คํ์ผ๋ง
Lightning ์น ๊ตฌ์ฑ ์์์ฉ CSS์ ๊ตฌํ์ W3C ํ์ค์ ์ค์ํฉ๋๋ค. CSS ํ์ผ์์ ์คํ์ผ์ํธ๋ฅผ ๋ง๋ค๋ฉด ํด๋น HTML ํ์ผ์ ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
Lightning ์น ๊ตฌ์ฑ ์์๋ ๊ตฌ์ฑ ์์๋ฅผ ์บก์ํํ์ฌ ์ ์ญ DOM๊ณผ ๋ถ๋ฆฌํฉ๋๋ค. ์ด๋ Shadow DOM์ด๋ผ๋ ๋ฉ์ปค๋์ฆ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. Shadow DOM์ ๊ตฌ์ฑ ์์๊ฐ DOM์ โํ์ ํธ๋ฆฌโ์ ์์นํ ์ ์๋๋ก ํ๋ ๊ธฐ์ ์ ๋๋ค(Shadow DOM์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฆฌ์์ค ์น์ ์ ๋งํฌ๋ฅผ ํ์ธํ์ธ์). ๊ตฌ์ฑ ์์๋ ๋ค๋ฅธ ์ฑ ๋ด์์ ๋๋ ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ์์์ผ๋ก ๊ทธ ๋ชจ์๊ณผ ๋์์ ์ ์งํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์์ ๊ฑฐ์ ๊ฐ๊ฒฉ์ ๊ตต์ ๋
น์ ํ
์คํธ๋ก ํ์ํ๋๋ก ์ค์ ํด ๋ณด๊ฒ ์ต๋๋ค. detail.css ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด .price๋ฅผ ์
๋ ฅํฉ๋๋ค.
body{
margin: 0;
}
.price{
color: green;
font-weight: bold;
}ํ์ผ์ ์ ์ฅํ๊ณ ๋ฐฐํฌํฉ๋๋ค.
์กฐ์ง์์ Bike Selector ์ฑ ํ์ด์ง๊ฐ ์บ์๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๋ ค๋ฉด ์๋ก ๊ณ ์นจํด์ผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์ ๊ฑฐ๋ฅผ ์ ํํ๋ฉด ๊ฐ๊ฒฉ์ด ๋ น์์ ๊ตต์ ๊ธ์จ๋ก ํ์๋ฉ๋๋ค.

Lightning Design System ์คํ์ผ ์ ์ฉํ๊ธฐ
SLDS(Salesforce Lightning Design System)๋ Lightning Experience์ ๋์ผํ ๋ชจ์๊ณผ ๋๋์ ์ ๊ณตํ๋ CSS ํ๋ ์์ํฌ์ ๋๋ค. Lightning Experience ๋๋ Salesforce ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ Lightning ์น ๊ตฌ์ฑ ์์๋ import ๋ฌธ์ด๋ ์ ์ ๋ฆฌ์์ค ์์ด SLDS๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, SLDS ์ ๋ชฉ ์คํ์ผ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์ ํ
์คํธ๋ฅผ ํ์ค Lightning ํ
์คํธ์ฒ๋ผ ๋ณด์ด๋๋ก ํ ์ ์์ต๋๋ค. detail.html ํ์ผ์์ ๋ค์๊ณผ ๊ฐ์ด slds-text-heading_small ๋ฐ slds-text-heading_medium์ผ๋ก ๊ธ๊ผด ์ค์ ์ ์
๋ฐ์ดํธํฉ๋๋ค.
<template>
<template lwc:if={product}>
<div class="container">
<div class="slds-text-heading_small">{product.fields.Name.value}</div>
<div class="price">{product.fields.MSRP__c.displayValue}</div>
<div class="description">{product.fields.Description__c.value}</div>
<img class="product-img" src={product.fields.Picture_URL__c.value} alt={product.fields.Name.value}/>
<p>
<lightning-badge label={product.fields.Material__c.value}></lightning-badge>
<lightning-badge label={product.fields.Level__c.value}></lightning-badge>
</p>
<p>
<lightning-badge label={product.fields.Category__c.value}></lightning-badge>
</p>
</div>
</template>
<template lwc:else>
<div class="slds-text-heading_medium">Select a bike</div>
</template>
</template>ํ์ผ์ ์ ์ฅํ๊ณ ๋ฐฐํฌํฉ๋๋ค.
์ด์ ์กฐ์ง์์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํด ๋ณด๊ณ ์ฐจ์ด๋ฅผ ํ์ธํ์ธ์(ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํด์ผ ํฉ๋๋ค).

๋ฉ์ง๋ค์! ์ด์ ๋ชจ์๊ณผ ๋๋์ด ์์ฑ๋์์ต๋๋ค. (๋งํฌ์ ๋ณ๊ฒฝ ๋ฐ SLDS ์คํ์ผ๋ง์ ์ด ๋ชจ๋์ ์๋ฃํ ํ ์ํํ ์ฐ์ต ๊ณผ์ ๋ก ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค. ๋ช ๊ฐ์ง ๊ฐ๋ ์ Mobile-Friendly Markup (๋ชจ๋ฐ์ผ ์นํ์ ์ธ ๋งํฌ์ )์ ํ์ธํ๊ณ ์ด ์ฑ์ผ๋ก ์คํํด ๋ณด์ธ์!)
์ง๊ธ๊น์ง๋ ๋ฐ์ดํฐ ๊ตฌ์ฑ ์์์์ ๊ฐ์ ธ์จ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ํ์ด์ง์ ๋์ ๋ฐ์ดํฐ๋ผ๋ ๋ฉ์ง ๊ธฐ๋ฅ์ ํ๋ ๋ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
Salesforce ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
์ด ์ฑ์ ๊ฒฐ๊ตญ Salesforce ์ฑ์ด๋ฉฐ, Salesforce org์์ ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํ๊ณ ์ ํฉ๋๋ค. Lightning ์น ๊ตฌ์ฑ ์์๋ Lightning Data Service๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๋ฐ์ํ ์์ด์ด ์๋น์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฑ์ ์ด๋ฆ์ ๋์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฑ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ด์ด ์๋น์ค
์์ด์ด ์๋น์ค๋ ํ๋ซํผ์ ์ผ๋ถ๋ก, ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ ๊ณตํฉ๋๋ค. ์์ ์ ๊น ์ธ๊ธํ๋ @wire ๋ฐ์ฝ๋ ์ดํฐ๋ ์ฑ์์ ์์ด์ด ์๋น์ค๋ฅผ ๊ตฌํํฉ๋๋ค. ์์ด์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- JavaScript ํ์ผ์์ ์์ด์ด ์ด๋ํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
-
@wire๋ฐ์ฝ๋ ์ดํฐ๋ก ์์ฑ์ด๋ ํจ์๋ฅผ ๋ฐ์ฝ๋ ์ดํธํฉ๋๋ค.
๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import { adapterId } from 'adapter-module';
@wire(adapterId, adapterConfig) propertyOrFunction;-
adapterId(์๋ณ์)-์์ด์ด ์ด๋ํฐ์ ์๋ณ์์ ๋๋ค.
-
adapter-module(๋ฌธ์์ด)-์์ด์ด ์ด๋ํฐ ๊ธฐ๋ฅ์ด ํฌํจ๋ ๋ชจ๋์ ์๋ณ์์ ๋๋ค.
-
adapterConfig(๊ฐ์ฒด)-์์ด์ด ์ด๋ํฐ์ ๊ด๋ จ๋ ๊ตฌ์ฑ ๊ฐ์ฒด์ ๋๋ค.
-
propertyOrFunction-์์ด์ด ์๋น์ค์์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์์ ํ๋ ๊ฐ์ธ ์์ฑ ๋๋ ํจ์์ ๋๋ค. ์์ฑ์ด@wire๋ก ๋ฐ์ฝ๋ ์ดํธ๋ ๊ฒฝ์ฐ, ์์ฑ์ ๋ฐ์ดํฐ ์์ฑ ๋๋ ์ค๋ฅ ์์ฑ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ฉ๋๋ค. ํจ์๊ฐ@wire๋ก ๋ฐ์ฝ๋ ์ดํธ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ์์ฑ๊ณผ ์ค๋ฅ ์์ฑ์ด ์๋ ๊ฐ์ฒด๋ก ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ฉ๋๋ค.
๋ค์์ ์์ ์ค์ธ ํ๋ก์ ํธ์ selector.js ํ์ผ์ ์ด๋ฅผ ์ถ๊ฐํ์ฌ ์กฐ์ง์์ ํ์ฌ ์ฌ์ฉ์์ ์ด๋ฆ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋๋ค.
import { LightningElement, wire } from 'lwc';
import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
import Id from '@salesforce/user/Id';
import NAME_FIELD from '@salesforce/schema/User.Name';
const fields = [NAME_FIELD];
export default class Selector extends LightningElement {
selectedProductId;
handleProductSelected(evt) {
this.selectedProductId = evt.detail;
}
userId = Id;
@wire(getRecord, { recordId: '$userId', fields })
user;
get name() {
return getFieldValue(this.user.data, NAME_FIELD);
}
}- ์ค 1์
lwc์์wire์๋น์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ์ค 2๋
lightning/uiRecordApi์์getRecord๋ฐgetFieldValue์ ๋ํ adapterId ๋ฐ adapter-module์ ๊ฐ์ ธ์ต๋๋ค.
- ์ค 3์
@salesforce๋ชจ๋์ ์ฌ์ฉํ๋ ํ์ฌ ์ฌ์ฉ์ ID๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ์ค 4๋
User.Name์ ๋ํ@salesforce์คํค๋ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ์ค 12๋
@wire๋ฐ์ฝ๋ ์ดํฐ๋ก ์์ด์ด ์๋น์ค๋ฅผ ์ฌ์ฉํดuserId๋ฅผ ์ ๋ฌํ๊ณfields๋ฅผ ๊ฐ์ ธ์ค๋getRecord๋ฅผ ํธ์ถํฉ๋๋ค.
- ์ค 13์
user๋ฅผ@wireํธ์ถ์ ๋ํ ์์ ์๋ก ์ค์ ํฉ๋๋ค.
selector.html ํ์ผ์ ํธ์งํด ์ด๋ฆ์ ํฌํจํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค. ๋ค์์ ์๋ฅผ ํ์ธํด ๋ณด์ธ์.
<template>
<div class="wrapper">
<header class="header">Available Bikes for {name}</header>
<section class="content">
<div class="columns">
<main class="main" >
<c-list onproductselected={handleProductSelected}></c-list>
</main>
<aside class="sidebar-second">
<c-detail product-id={selectedProductId}></c-detail>
</aside>
</div>
</section>
</div>
</template>์ ํ๊ธฐ ๊ตฌ์ฑ ์์ ํ์ผ์ ์ ์ฅํ๊ณ ์กฐ์ง์ ๋ฐฐํฌํ๋ฉด(๋ฐฐํฌ์ ์ ํ๊ธฐ ํ์ผ์ด ํฌํจ๋์ด ์๋์ง ํ์ธ ํ์) Mary Jones๊ฐ ์๋ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ํจ๊ป ๋ค์ ๋ด์ฉ์ด ํ์๋์ด์ผ ํฉ๋๋ค. ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํด์ผ ํ ์๋ ์์ต๋๋ค.

๋ชจ๋ฐ์ผ ์นํ์ ์ธ ๋งํฌ์
Bike Selector ์ฑ์ ๊ตฌ์ฑํ๋ Lightning ๊ตฌ์ฑ ์์์ ๋งํฌ์ ์ ๊น๋ํ๊ณ ๊ฐ๊ฒฐํ๋ฉฐ, ์ฌ๋ฌ๋ถ์ด Lightning ์น ๊ตฌ์ฑ ์์์ ๊ธฐ๋ณธ์ ์ตํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ฐ์ผ ์นํ์ ์ด์ง๋ ์์ต๋๋ค. Salesforce ๋ชจ๋ฐ์ผ ์ฑ์์ ์ดํด๋ณด๊ฑฐ๋ ๋ชจ๋ฐ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํตํด ํ์ธํด ๋ณด์ธ์. ๋ชจ๋ ๊ธฐ๋ฅ์ด ์๋ํ์ง๋ง ๊ทธ๋ค์ง ์ข์ ๋ชจ๋ฐ์ผ ๊ฒฝํ์ ์ ๊ณตํ์ง๋ ์์ต๋๋ค.

SLDS๋ฅผ ์ฌ์ฉํ ๋์ ์ฅ์ ์ ์ฝ๊ฐ์ ๋ ธ๋ ฅ๋ง์ผ๋ก ๋ฐ์คํฌํฑ๊ณผ ๋ชจ๋ฐ์ผ์์ ๋ชจ๋ ์ ๋๋์ด ๋ณด์ด๊ณ ์ ์์ ์ผ๋ก ์๋ํ๋๋ก ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ ์์ธํ ์ค๋ช ํ๊ณ ์ถ์ง๋ง ์ด ๋ชจ๋์์ ๋ค๋ฃฌ ๋ด์ฉ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ๊ฒ ๊ฐ์ต๋๋ค. ๋ชจ๋ฐ์ผ ์ฌ์ฉ์๋ฅผ ๋ง์กฑ์ํฌ Lightning ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ๋๊ตฌ์ ๊ธฐ์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ด ์ ๋์ ๋ง์ง๋ง์ ์๋ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ธ์.
์ง๊ธ์ ๋ชจ๋ฐ์ผ์ ์ ์ณ๋๊ณ ์์ง๋ง, '์ค์ ' Lightning ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ์์ํ ๋๋ ๋ฐ๋๋ก ํ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ฒ์๋ถํฐ ๋ชจ๋ฐ์ผ ์ธ๋ถ ์ฌํญ๊ณผ ์ค๊ณ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ์ธ์. SLDS์ ๋ชจ๋ฐ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์๋ถํฐ ๋ชจ๋ฐ์ผ๊ณผ ๋ฐ์คํฌํฑ์ ํจ๊ป ๊ฐํธํ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋์ ๋ชจ๋ฐ์ผ์ ์ด๊ธฐ ๋จ๊ณ๋ถํฐ ๊ณ ๋ คํ์ง ์์ ๋์ ์ํ์ฑ์ ๋ณด์ฌ์ฃผ๋ ์์์ ๋๋ค. Bike Selection ์ฑ์ด ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋ณด๊ธฐ ์ข์ง ์๋ค๋ ํผ๋๋ฐฑ์ ๋ฐ์์ ๋, ์ฝ๊ฐ์ ์์ ๋ง ํ๋ฉด ๋์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ณ๊ฒฝ ์์ ์ ์ฐฉ์ํ๋ ค ํ์ต๋๋ค. ํ์ง๋ง ์ฑ์ ๋งํฌ์ ์ด ๊น๋ํ๊ณ ์๋ฏธ๋ก ์ ์ผ๋ก ์ ์ง์ฌ์ ธ ์๋๋ผ๋ ๊ธฐ์กด์ ๊ตฌ์ถ๋ ํ๊ฒฝ์ ๋ชจ๋ฐ์ผ์ ์ฌํ์ ์ต์ง๋ก ๋ผ์ ๋ง์ถ๋ ๋ฐฉ์์ ์ฌ๋ฐ๋ฅธ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ๋ ๊ฒฐ๋ก ์ ๋ด๋ ธ์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๋งํฌ์ ๋ฟ๋ง ์๋๋ผ ๋งํฌ์ ์ ๋ํ ์ค๋ช ๊ณผ ์ค์ต ๊ณผ์ ๊น์ง ๋ชจ๋ ๋ค์ ์์ ํ๊ณ ์ ํฉ๋๋ค. ์ด ๋ชจ๋์ ๊ตฌ์กฐ์ ํ๋ก์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค! ๋ฏธ๋ฆฌ ์์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์์ด ๋ ๋ง์ด ๊ฐ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ๊ด์ฐฎ์ต๋๋ค! ๊ธฐ์ ์์คํ ๊ตฌํ์๋ ์ธ์ ๋ ์ ์ถฉ์์ด๋ผ๋ ๊ฒ์ด ์๊ณ , ์ฌ๋ฌ๋ถ๋ ํ๊ณผ ํ๋ก์ ํธ์ ๋ง๋ ์ ์ ํ ์ ์ถฉ์์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํ๋ก์ ํธ์์ ์ด ์ ์ถฉ์์ ์ผ๋์ ๋์ธ์. ๋ฏธ๋ฆฌ ์๋ฉด ๋๋นํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์ด๋ Lightning ์น ๊ตฌ์ฑ ์์ ๋ชจ๋ธ๋ก ํ ์ ์๋ ์์ ์ ์์์ ๋ถ๊ณผํฉ๋๋ค. ์ด ๋ชจ๋ธ์๋ ํ ์คํธ, ๋ณด์, Apex ํตํฉ ๋ฑ์ ๋ํ ์ง์์ด ํฌํจ๋ฉ๋๋ค. ๊ณ์ ํ์ํ๊ณ , ์๋ก์ด ๊ฒ์ ์๋ํ๊ณ , ๋ง๋ค์ด ๋ณด์ธ์. W3C ์น ๊ตฌ์ฑ ์์ ํ์ค์ ๋ฐ์ ๊ณผ ํจ๊ป ์ ํฌ ๋ชจ๋ธ๋ ๋ฐ์ ํ ๊ฒ์ ๋๋ค.

๋ฆฌ์์ค
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: Lightning ์น ๊ตฌ์ฑ ์์ ์๊ฐ
- ๊ฐ๋ฐ์: ์ฝ๋ ์ํ ๋ฐ SDK Trailhead ์ํ ๊ฐค๋ฌ๋ฆฌ
- Trailhead: Salesforce ๊ฐ๋ฐ์๋ฅผ ์ํ JavaScript ๊ธฐ์
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: ๋ชจ๋ฐ์ผ ์ง์ ๊ตฌ์ฑ ์์ ๋ง๋ค๊ธฐ
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: Lightning Design System์ ์ฌ์ฉํ ์คํ์ผ ๊ตฌ์ฑ ์์
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: ๋ชจ๋ฐ์ผ์์ Lightning ์น ๊ตฌ์ฑ ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: Shadow DOM
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: ์์ด์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฐ์ ธ ์ค๊ธฐ
- Lightning ์น ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์ ๊ฐ์ด๋: @salesforce ๋ชจ๋
