Skip to main content

他の衚瀺方法に぀いお孊ぶ

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • リストずむベントを䜿甚する方法を説明する。
  • サヌドパヌティの 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 コンポヌネントのパフォヌマンスを最適化する技法は、より速く、応答性の高いアプリケヌションを構築するのに圹立぀䞀般的なガむドラむンです。ご自身のアプリケヌションでぜひ詊しおみおください。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む