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 Components | Lightning 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 →