ä»ã®è¡šç€ºæ¹æ³ã«ã€ããŠåŠã¶
åŠç¿ã®ç®ç
ãã®åå ãå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
- ãªã¹ããšã€ãã³ãã䜿çšããæ¹æ³ã説æããã
- ãµãŒãããŒãã£ã® JavaScript ã©ã€ãã©ãªãšã¹ã¿ã€ã«ã·ãŒãã䜿çšããæ¹æ³ã説æããã
- Lightning Web ã³ã³ããŒãã³ãã®ç»åãæé©åããã
- Lightning åºæ¬ã³ã³ããŒãã³ãã®å©ç¹ã説æããã
- ã©ã€ããµã€ã¯ã«ã®è¡šç€ºãšãªãããŒã䜿çšããæ¹æ³ã説æããã
ã¯ããã«
å€ãã®å ŽåãLightning Web ã³ã³ããŒãã³ãã®ããã©ãŒãã³ã¹ã¯åã®åå ã§ç޹ä»ãããã¹ããã©ã¯ãã£ã¹ã䜿çšããŠé«ããããšãã§ããŸãããããã©ãŒãã³ã¹ãåäžãããããã«äœ¿çšã§ããè¡šç€ºæ¹æ³ã¯ä»ã«ããããŸãã
Lightning Web ã³ã³ããŒãã³ããããã«é«éåããããã®ã¢ã€ãã¢ãããã€ã玹ä»ããŸãã
ãªã¹ã
ãªã¹ãã䜿çšãããšã倧éã®ããŒã¿ãç°¡åã«è¡šç€ºã§ããŸãããã ãããã£ãããšæºåããªããã°ãããŒã¿ãå€ããªããããå¯èœæ§ããããŸãã
ãªã¹ãã䜿çšãããšãã¯ã次ã®ç¹ã«çæããŠãã ããã
- ãªã¹ããäœæãããšãã¯ã
for:eachãŸãã¯iteratorã®ããããã䜿çšããŠãã ãããçžéç¹ãšããŠãiteratorã«ã¯é åã®æåãšæåŸã®é ç®ã«ç¹å¥ãªåäœãé©çšã§ããfirstããããã£ãšlastããããã£ãå«ãŸããŸãã<template for:each={contacts} for:item="contact"> <li key={contact.Id}>{contact.Name}, {contact.Title}</li> </template> - ã«ã¹ã¿ã ãªã¹ãã³ã³ããŒãã³ããäœæãããšãã¯ãç¡æ°ã®ãªã¹ãé
ç®ã®äœæããµããŒãããªãã§ãã ãããããããå Žåãç¹ã«å€§éã®ã¬ã³ãŒããããå€§èŠæš¡çµç¹ã§ãããã©ãŒãã³ã¹ãèãã劚ããããæãããããŸããããŒãžããŒã·ã§ã³ã®ã¡ã«ããºã ãæäŸãããããªã¹ããä»®æ³å (éãããæ°ã®ãªã¹ãé
ç®ã³ã³ããŒãã³ããå䜿çšããŠãªãã€ãã¬ãŒã) ããŠãã ããã
- åãªã¹ãèŠçŽ ã«ã¯ããã¹ãŠã®åã§å€ãäžæã®
keyãå«ããå¿ èŠããããŸãã - ãªã¹ãå
ã§ Lightning Web ã³ã³ããŒãã³ãã䜿çšããŠæ©èœãã«ãã»ã«åãããšãã¯æ³šæããŠãã ããããªãŒããŒãããã倧ããå¢å ããããã©ãŒãã³ã¹ã®åé¡ãçããæãããããŸããç¹ã«å€§ãããªã¹ãã®å Žåã«ã¯æ³šæãå¿
èŠã§ãã
ã€ãã³ã
ã€ãã³ãã®æŽ»çšã¯ã³ã³ããŒãã³ãéã§ã®éä¿¡ã«åªããæ¹æ³ã§ããLightning Web ã³ã³ããŒãã³ãã¯æšæº DOM ã€ãã³ãããã£ã¹ããããããããéçºè
㯠DOM å
ã®ã€ãã³ãããªã¹ã³ããããšãã§ããŸããã³ã³ããŒãã³ãã«ãã£ãŠã«ã¹ã¿ã ã€ãã³ããäœæããŠãã£ã¹ãããããããšãã§ããŸããã³ã³ããŒãã³ãã®ã³ã³ãã€ã³ã¡ã³ãéå±€ã®äžäœãšéä¿¡ããã«ã¯ãã€ãã³ãã䜿çšããŸããã€ãã³ããªã¹ããŒã¯ãaddEventListener() ã䜿çšããŠå®£èšçãŸãã¯ããã°ã©ã ã§æ·»ä»ã§ããŸãã
ã€ãã³ããšã€ãã³ããã³ãã©ãŒã掻çšãããšãã¯ã次ã®ç¹ã«çæããŠãã ããã
- ã€ãã³ããã³ãã©ãŒã®æ°ãå¿
èŠæå°éã«æããŸããåãã³ãã©ãŒã§ãªãŒããŒããããçºçãããããäœæãããããšãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãé
ããªãå¯èœæ§ããããŸãã
bubblesãšcomposedã䜿çšãã芪-åã³ã³ããŒãã³ãã®ã€ãã³ãäŒéã«ã€ããŠå¿ ãçè§£ããŠãã ãããéåžžãæ··ä¹±ãæå°éã«æãããããããã€ãã³ããbubbles:falseãšcomposed:falseã«èšå®ããŸãããã®ãããªã€ãã³ãã¯ãDOM ããªãŒå ã§äžã«äŒéããããã·ã£ããŠå¢çãè¶ããããšããããŸãããbubbles:trueãšcomposed:trueã䜿çšããŠã€ãã³ããäœæããå Žåãã€ãã³ããçæããã³ã³ããŒãã³ãã® API å¥çŽãäœæããŸãã- 1 ã€ã® Lightning ããŒãžå
ãŸãã¯è€æ°ã®ããŒãžã«ãããå
åŒã³ã³ããŒãã³ãéã§éä¿¡ããã«ã¯ãLightning Message Service ã䜿çšã§ããŸããVisualforceãAuraãLWCããŠãŒãã£ãªãã£ããŒã®åã³ã³ããŒãã³ããšã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªããŒãžã¿ãã§æ©èœãããšããå©ç¹ããããŸãã
- ãªã¹ããŒãã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«ã®äžéšã§ãªããã® (ãŠã£ã³ããŠãªããžã§ã¯ããããã¥ã¡ã³ããªããžã§ã¯ããªã©) ã«è¿œå ããå ŽåããŠãŒã¶ãŒèªèº«ããªã¹ããŒãåé€ããå¿
èŠããããŸããã€ãã³ããªã¹ããŒãåé€ããã«ã¯ã
disconnectedCallbackã©ã€ããµã€ã¯ã«ããã¯ã§removeEventListener()ã䜿çšããŸããããããªããšã¡ã¢ãªãªãŒã¯ãçºçããå¯èœæ§ãããããããªã£ãå ŽåããŠãŒã¶ãŒããã©ãŠã¶ãŒã¿ããéãããæŽæ°ãããŸã§ Lightning ã¢ããªã±ãŒã·ã§ã³å šäœã®ããã©ãŒãã³ã¹ãåŸã ã«äœäžããŸãã - ãªã¹ããæäœããå Žåã¯ãã€ãã³ããäžäœã«äŒéãããããã«ãããã¹ãŠã®ãªã¹ãé
ç®ã«åå¥ã®ã€ãã³ããªã¹ããŒãç»é²ãã代ããã«èŠªèŠçŽ ã« 1 ã€ã®ã€ãã³ããªã¹ããŒãç»é²ãããšãã¢ããªã±ãŒã·ã§ã³ã®ã€ãã³ããªã¹ããŒæ°ã倧å¹
ã«åæžã§ããŸããããããããšã§ãããã©ãŒãã³ã¹ãåäžããå¯èœæ§ããããŸãã
ãµãŒãããŒãã£ã® JavaScript ã©ã€ãã©ãªãšã¹ã¿ã€ã«ã·ãŒã
å¯èœãªå Žåã¯ãäžå¿ èŠãªã©ã€ãã©ãªã®é£åé¢ä¿ãåé€ããŸãããŸãããµãŒãããŒãã£ã®ã©ã€ãã©ãªã Lightning ã³ã³ããŒãã³ãã§äœ¿çšããããšã決å®ããåã«ããã®ã©ã€ãã©ãªãæ¬åœã«å¿ èŠããåè©äŸ¡ããŠãã ãããç¹ã« DOM æäœã©ã€ãã©ãª (jQuery ãªã©) ãš UI ã©ã€ãã©ãª (Bootstrap ãŸã㯠jQuery UI ãªã©) ã¯ãLWC ã®äœ¿çšæã«å¿ èŠã§ãªããªã£ãå¯èœæ§ããããŸãããµãŒãããŒãã£ãŸãã¯ç¬èªã®ã«ã¹ã¿ã ã¹ã¿ã€ã«ã·ãŒãã¯ãSalesforce Lightning Design System (SLDS) ã§ããŒãºãæºããããšãã§ããªãå Žåã®ã¿äœ¿çšããŸãã
DOM æäœã©ã€ãã©ãª
è¿å¹ŽãJavaScript ã¯å€§ããªé²æ©ãéããŸãããjQuery ã®ãããªãã®ããªããšäœ¿çšã§ããªãã£ãå€ãã® DOM æäœãŠãŒãã£ãªãã£ãããã®èšèªã§æšæºã«ãªã£ãŠããŸããLightning Web ã³ã³ããŒãã³ãã®ãããªææ°ã®ãã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠæœè±¡åãæäŸãããjQuery ã®éèŠæ§ã¯äœããªã£ãŠããŸãã
UI ã©ã€ãã©ãª
BootstrapãjQuery UI ã®ãã㪠UI ã©ã€ãã©ãªã®äœ¿çšã¯é¿ããããšããå§ãããŸãããã®ãããªã©ã€ãã©ãªã«ãã£ãŠäŸ¿å©ãªã³ã³ããŒãã³ããæäŸãããŸãããç¬èªã® UI ã¢ã€ãã³ãã£ãã£ãæã£ãŠãããã Lightning Experience ã®ã¢ã€ãã³ãã£ãã£ãšç«¶åããå¯èœæ§ããããŸããLightning åºæ¬ã³ã³ããŒãã³ããš SLDS ã§ã¯ãäžè²«æ§ã®ãããŠãŒã¶ãŒç°å¢ãšãé¡äŒŒããæ©èœãæäŸãããŸãã
MVC (Model-View-Controller) ãã¬ãŒã ã¯ãŒã¯
倧ãŸãã«èšããšãReact ã AngularJS ã®ãããªã©ã€ãã©ãªã®çŠç¹ã¯ãLightning Web ã³ã³ããŒãã³ããã¬ãŒã ã¯ãŒã¯ãšåãã§ããã€ãŸããã³ãŒãã®æŽçãšã³ã³ããŒãã³ããäœæãããŠãŒãã£ãªãã£ãæäŸããŸããã³ã³ããŒãã³ãå ã§ LWC ãšå¥ã® MVC ãã¬ãŒã ã¯ãŒã¯ã䜵çšããããšã¯ãå§ãããŸããããLightning Experience å ã§ Lightning ã³ã³ããŒãã³ããã³ã³ãããšããŠäœ¿çšããŠãä»ã®ãã¬ãŒã ã¯ãŒã¯ (React ã AngularJS ãªã©) ã§æ§ç¯ãããã³ã³ããŒãã³ãããã¹ãããããšã¯å¯èœã§ãããã ãããã®ãããã¯ã«ã€ããŠã¯ãã®åå ã§ã¯æ±ããŸããã
ã«ã¹ã¿ã ã¹ã¿ã€ã«ã·ãŒã
ãµãŒãããŒãã£ã® CSS ã¹ã¿ã€ã«ã·ãŒãã䜿çšããããç¬èªã®ã¹ã¿ã€ã«ãäœæããããããšãããã©ãŒãã³ã¹ã®åé¡ãçããå¯èœæ§ãããããšã³ããŠãŒã¶ãŒã«ãšã£ãŠ UI ãäžè²«ããŠããªãããã«èŠããå ŽåããããŸããéçºè ã¯ããšã³ããŠãŒã¶ãŒã®ããã«çŸãããªãã㪠UI ç°å¢ãäœæããããã«ãSalesforce ãéçºãã Salesforce Lightning Design System (SLDS) ã«ã€ããŠååã«çè§£ããå¿ èŠããããŸããã¹ã¿ã€ã«ã CSS ã ãã§ã¯ãªãã瀟å ãšã³ãžãã¢ã䜿çšãããã¶ã€ã³ã¬ã€ãã©ã€ã³ãšååã®ã»ãããã¬ããã¯ã©ã ãã¢ãŒãã«ãã¢ã©ãŒãã®ãããªäžè¬çãªéçºè ããŒãºã«å¯Ÿå¿ããã³ã³ããŒãã³ããã«ãŒããªã³ããå«ãŸããŠããŸããè²ããã©ã³ããã¹ããŒã·ã³ã°ããµã€ãºã®ã¿ãªãããã¿ããã®ããžã¥ã¢ã«ãã¶ã€ã³å±æ§ãä¿åãããçŽ æŽãããèšèšããŒã¯ã³ãªã¹ããåãã£ãŠããŸãã
Lightning ã«çŽæ¥çµã¿èŸŒãŸããŠãããéçºè ãç¬èªã® CSS ãäœæããŠç¶æããå¿ èŠããªããããSLDS ãæŽ»çšããã°ãéçºè ãã³ã³ããŒãã³ããäœæãããšãã®æéãççž®ããŸãã
çž®å°ããŒãžã§ã³ã®ã©ã€ãã©ãªãšã¹ã¿ã€ã«ã·ãŒãã䜿çšãã
ãµãŒãããŒãã£ã®ã©ã€ãã©ãªãã©ãããŠã䜿çšããå¿ èŠãããå Žåãå¿ ãçž®å°ããŒãžã§ã³ã®ã©ã€ãã©ãªãšã¹ã¿ã€ã«ã·ãŒãã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãé«ããŠãã ããã
Lightning åºæ¬ã³ã³ããŒãã³ã
ç¬èªã®ã«ã¹ã¿ã Lightning ã³ã³ããŒãã³ããäœæããåã«ãæäŸãããåºæ¬ã³ã³ããŒãã³ãã®ã©ã€ãã©ãªã«ã€ããŠååã«çè§£ããŠãã ãããããã«ã¯ãlightning-input-fieldãlightning-record-form ãªã©ãå«ãŸããŸãããã®åºæ¬ã³ã³ããŒãã³ããæŽ»çšãããšãéçºæéã倧å¹
ã«ççž®ã§ããŸããããšãã°ããŠãŒã¶ãŒã«æç€ºãã倧ããªèµ€ããã¿ã³ãå¿
èŠãªå Žåãlightning-button ã䜿çšãããšç°¡åã§ãã
<lightning-button variant="destructive" label="Destructive" onclick={handleClick}></lightning-button>Lightning åºæ¬ã³ã³ããŒãã³ãã®äœ¿çšã«ã¯ãä»ã«ã次ã®ãããªå©ç¹ããããŸãã
- ã¹ã¿ã€ã«: Lightning åºæ¬ã³ã³ããŒãã³ã㯠Lightning ã®ãã€ãã£ããªãã¶ã€ã³ã§ã¹ã¿ã€ã«èšå®ãããŠããŸãã
- ããã©ãŒãã³ã¹: Lightning åºæ¬ã³ã³ããŒãã³ãã¯ã¯ã©ã€ã¢ã³ãåŽã§ãã§ã«èªã¿èŸŒãŸããŠããããã远å ã§å¿
èŠãšãªãããŠã³ããŒããåŠçã¯ãããŸãããããã©ãŒãã³ã¹ãæé©åããåãçµã¿ã¯ãLightning åå空éã®ã³ã³ããŒãã³ãã«ãéç¹ã眮ãããŠããŸãã
- å¿çæ§: ããã©ã«ãã§ãLightning åºæ¬ã³ã³ããŒãã³ãã¯å¿çæ§ã®é«ãèšèšãšãªã£ãŠããŸãã
- ã€ãããŒã·ã§ã³: Lightning åå空éã¯ãã³ã³ããŒãã³ãã®éçºãç©æ¥µçã«é²ããããŠããå Žæã§ããä»åŸãæ°ããã³ã³ããŒãã³ããæ¹è¯ãããã³ã³ããŒãã³ããç®ã«ããããšããããããããŸããã
- ã¢ã¯ã»ã·ããªãã£: Lightning åºæ¬ã³ã³ããŒãã³ãã¯ã¢ã¯ã»ã·ããªãã£ã«é
æ
®ããŠäœæãããŠããŸãã
- ã¯ã©ã€ã¢ã³ãåŽæ€èšŒ: 該åœããå ŽåãLightning åºæ¬ã³ã³ããŒãã³ãã«ã¯ã¯ã©ã€ã¢ã³ãåŽæ€èšŒãå«ãŸããŸãã
ç»åã®æé©å
å¯èœãªå Žåã¯ãã«ã¹ã¿ã ã¢ã€ã³ã³ã®ä»£ããã«ã(ã¹ãã©ã€ãããŒã¹ã®) SLDS ã¢ã€ã³ã³ã䜿çšããŠãã ãã (<lightning-icon> ãš <lightning-button-icon> ã䜿çšããŠãã ãã)ãSalesforce ã«ã¯ãæ°çŸåãã®éžæå¯èœãªã¢ã€ã³ã³ãçšæãããŠãããããç¬èªã®ã«ã¹ã¿ã ã¢ã€ã³ã³ã®äœæã«æéãè²»ããåã«ãSLDS ã§æäŸãããŠããã¢ã€ã³ã³ãåå©çšããŠãã ããã
ä»ã®ç»åã䜿çšããå Žåãå¯èœã§ããã°ãå¿ ãç»åãµã€ãºãããã¯ããŠãªãããŒãåé¿ãããã®ãµã€ãºã§ç»åãæäŸããŸããããšãã°ããµã ããŒã«ã衚瀺ããããã«é«è§£å床ç»åãèªã¿èŸŒãŸãªãã§ãã ããã
ã³ã³ããŒãã³ãã©ã€ããµã€ã¯ã«ã®è¡šç€ºãšãªãããŒ
Lightning Web ã³ã³ããŒãã³ãã«ã¯ããã¬ãŒã ã¯ãŒã¯ã§ç®¡çãããã©ã€ããµã€ã¯ã«ããããŸãããã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠãã³ã³ããŒãã³ãã®äœæãDOM ãžã®æ¿å ¥ã衚瀺ãDOM ããã®åé€ãè¡ãããŸãã衚瀺ã©ã€ããµã€ã¯ã«ã«ã€ããŠåç §ãããã®ã©ã€ããµã€ã¯ã«äžã«ã©ã®ãããªããšãèµ·ããããã€ãã©ã®ã¡ãœãããèµ·åããããçè§£ããŠãã ãããã³ã³ããŒãã³ããå衚瀺ãããåæ°ãæå°éã«æããŸããå Žåã«ãã£ãŠã¯ãDOM é åãç¹å®ã®ãµã€ãºã«ããã¯ããŠãåšèŸºé åã®ãã©ãŠã¶ãŒã®ãªãããŒãåé¿ããããšã圹ç«ã€å ŽåããããŸãã
ãŸãšã
ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã¯ãå€çš®å€æ§ãªèŠå ã«ãã£ãŠåœ±é¿ãåããŸãããã®èšäºã§ç޹ä»ãã Lightning Web ã³ã³ããŒãã³ãã®ããã©ãŒãã³ã¹ãæé©åããææ³ã¯ãããéããå¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«åœ¹ç«ã€äžè¬çãªã¬ã€ãã©ã€ã³ã§ãããèªèº«ã®ã¢ããªã±ãŒã·ã§ã³ã§ãã²è©ŠããŠã¿ãŠãã ããã
ãªãœãŒã¹
- Lightning Web Components Dev Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã): Render Lists (ãªã¹ãã®è¡šç€º)
- Lightning Web Components Dev Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã): Communicate with Events (ã€ãã³ãã䜿çšããéä¿¡)
- Lightning Web Components Dev Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã): Configure Event Propagation (ã€ãã³ãäŒéã®èšå®)
- Trailhead: Lightning Web ã³ã³ããŒãã³ãéã§éä¿¡ãã
- Lightning Web Components Dev Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã): Communicate Across the DOM with Lightning Message Service (Lightning Message Service ã䜿çšãã DOM éã®éä¿¡)
- éçºè ããã°: Learn MOAR: Lightning Message Service Generally Available in Summer '20 (Learn MOAR: Summer '20 ã«æ£åŒãªãªãŒã¹ããã Lightning Message Service)
- åç»: Lightning Web Components: Parent-Child Components (Lightning Web ã³ã³ããŒãã³ã: 芪-åã³ã³ããŒãã³ã)
- Lightning Web Components: Component Reference (Lightning Web ã³ã³ããŒãã³ã: ã³ã³ããŒãã³ããªãã¡ã¬ã³ã¹)
- Lightning Design System: Icons (ã¢ã€ã³ã³)