Открыть сервис

Lightning Components

Lightning Components — это фреймворк для разработки пользовательских интерфейсов на платформе Salesforce, основанный на языке программирования Aura (Aura Components) и более современном наборе технологий Lightning Web Components (LWC). Фреймворк предназначен для создания динамических, адаптивных и многократно используемых компонентов, которые встраиваются в интерфейс Salesforce Lightning Experience, мобильные приложения и порталы. Lightning Components заменили устаревшую технологию Visualforce и являются основным инструментом для кастомизации интерфейсов в экосистеме Salesforce.

История

Разработка Lightning Components началась компанией Salesforce в 2013 году. Первая публичная версия фреймворка Aura была представлена на конференции Dreamforce в 2014 году. Aura Components создавались как альтернатива Visualforce, которая использовала серверную модель рендеринга и была менее удобна для создания современных одностраничных приложений (SPA). В 2015 году Salesforce выпустила Lightning Experience — новый интерфейс платформы, полностью построенный на Lightning Components.

В 2019 году Salesforce представила Lightning Web Components (LWC) — новую модель разработки, основанную на веб-стандартах (Web Components, Custom Elements, Shadow DOM). LWC не является заменой Aura, а сосуществует с ней: оба фреймворка могут использоваться в одном приложении, но LWC рекомендуется для новых проектов. В 2021 году Salesforce объявила, что Visualforce больше не будет получать новые функции, и рекомендовала миграцию на Lightning Components.

Архитектура и компоненты

Модель компонентов

Lightning Components состоят из двух основных частей:

  • Разметка (Markup) — файл .cmp (для Aura) или .html (для LWC), описывающий структуру интерфейса с помощью HTML-подобных тегов.
  • Контроллер (Controller) — файл JavaScript (для Aura — controller.js, для LWC — *.js), содержащий логику взаимодействия с пользователем и обработку событий.
  • Стили (Styles) — файл CSS (для Aura — .css, для LWC — .css), определяющий внешний вид компонента.
  • Помощники (Helpers) — для Aura: файл helper.js, содержащий вспомогательные функции, которые не зависят от событий.

Жизненный цикл компонента

Компонент проходит через несколько этапов: создание, рендеринг, обновление и уничтожение. В Aura жизненный цикл управляется фреймворком, который автоматически вызывает методы init, render, rerender и destroy. В LWC жизненный цикл основан на стандартных событиях веб-компонентов: constructor, connectedCallback, renderedCallback, disconnectedCallback и errorCallback.

События и коммуникация

Компоненты обмениваются данными через события:

  • События приложения (Application Events) — передаются между компонентами, независимо от их иерархии.
  • События компонента (Component Events) — передаются от дочернего компонента к родительскому.
  • События DOM (DOM Events) — стандартные события браузера, поддерживаемые в LWC.

В LWC также используется механизм публичных свойств (@api) и методов для передачи данных между компонентами.

Типы компонентов

Aura Components

Aura Components — это оригинальная реализация Lightning Components, использующая собственный язык разметки и серверный рендеринг. Они поддерживают:

  • Декларативное определение зависимостей.
  • Автоматическое управление состоянием.
  • Интеграцию с серверными контроллерами Apex.
  • Работу с токенами стилей и темами.

Lightning Web Components (LWC)

LWC — это более современная реализация, основанная на стандартах веб-компонентов. Ключевые особенности:

  • Использование нативных возможностей браузера (Shadow DOM, Custom Elements, ES6+).
  • Меньший размер кода и более высокая производительность.
  • Поддержка реактивного программирования через декораторы (@track, @api, @wire).
  • Интеграция с базой данных Salesforce через Wire Service.
  • Возможность использования в любом фреймворке, поддерживающем веб-компоненты.

Сравнение Aura и LWC

ХарактеристикаAura ComponentsLightning Web Components
Язык разметкиСобственный (.cmp)HTML (стандарт)
РендерингСерверный + клиентскийКлиентский (Shadow DOM)
ПроизводительностьСредняяВысокая
СложностьВышеНиже
СовместимостьТолько SalesforceВеб-стандарты
Рекомендация SalesforceУстаревшаяАктуальная

Применение

Lightning Components используются для:

  • Кастомизации интерфейса Salesforce Lightning Experience — создание настраиваемых страниц, панелей, форм и отчетов.
  • Разработки мобильных приложений — компоненты адаптируются под мобильные устройства через Salesforce Mobile SDK.
  • Создания порталов и сообществ — компоненты встраиваются в Experience Cloud (ранее Community Cloud).
  • Интеграции с внешними системами — через Apex REST, JavaScript Remoting и API.
  • Автоматизации бизнес-процессов — компоненты могут взаимодействовать с Flow Builder и Process Builder.

Примеры использования

  • Кастомная форма ввода данных — компонент, который собирает информацию о клиенте и сохраняет её в объекте Salesforce.
  • Дашборд с графиками — компонент, отображающий данные из отчетов в виде диаграмм (с использованием библиотек Chart.js или D3.js).
  • Виджет поиска — компонент, который ищет записи по заданным критериям и отображает результаты в таблице.
  • Интеграция с картами — компонент, показывающий местоположение клиентов на карте (Google Maps или Mapbox).

Инструменты разработки

Для разработки Lightning Components используются:

  • Salesforce CLIкомандная строка для создания, развертывания и тестирования компонентов.
  • Visual Studio Code — с расширениями Salesforce Extension Pack (содержит подсветку синтаксиса, автодополнение, отладчик).
  • Salesforce Developer Console — встроенный редактор кода в браузере.
  • Lightning Web Component Generator — инструмент для создания шаблонов компонентов.
  • Salesforce DX — набор инструментов для управления жизненным циклом приложений.

Ограничения

  • Зависимость от платформы Salesforce — компоненты не могут быть перенесены на другие платформы без значительной переработки.
  • Сложность отладки — в Aura Components ошибки могут быть трудно диагностируемы из-за абстракции фреймворка.
  • Производительность — при большом количестве вложенных компонентов может снижаться скорость рендеринга.
  • Ограничения безопасности — компоненты выполняются в изолированном контексте (Locker Service), что ограничивает доступ к некоторым API браузера.

Критика

Основные претензии к Lightning Components связаны с:

  • Сложностью обучения — Aura Components имеют крутую кривую обучения из-за собственного синтаксиса и концепций.
  • Неполной документацией — в первые годы существования документация была фрагментарной, что затрудняло разработку.
  • Проблемами с совместимостью — некоторые сторонние библиотеки JavaScript (например, jQuery) не работают корректно из-за Locker Service.
  • Медленной миграцией — переход с Visualforce на Lightning Components требует значительных трудозатрат.

Перспективы

Salesforce продолжает развивать Lightning Web Components, добавляя поддержку новых стандартов (например, ES modules, TypeScript). В 2023 году была выпущена версия LWC с поддержкой Shadow DOM в режиме open, что улучшило совместимость с внешними библиотеками. Ожидается, что Aura Components будут постепенно вытесняться LWC, хотя полная замена в ближайшие годы не планируется.

Источники

  • Salesforce Developer Documentation: Lightning Components Developer Guide
  • Salesforce Developer Documentation: Lightning Web Components Developer Guide
  • Salesforce Blog: "Introducing Lightning Web Components" (2019)
  • Salesforce Trailhead: "Lightning Web Components" module
  • Salesforce Developer Documentation: "Aura Components vs Lightning Web Components"
  • Salesforce Developer Documentation: "Locker Service Overview"
  • Salesforce Developer Documentation: "Lightning Data Service"
  • Salesforce Developer Documentation: "Wire Service"
  • Salesforce Developer Documentation: "Lifecycle Hooks"

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →