Чисто просветите по Lightning

Чисто просветите по Lightning

О! Lightning тема оживилась. Наконец-то тестовые задания по Lightning начали давать.

Друзья небольшая просьба - поделитесь информацией. Немного отстал от SF жизни. Даже вчера знакомился с новыми босами в компании и представлял себя, сказал что 3-4 года уже на Python, JS и немножко .Net сижу, а вот сказать что 7 лет SF разрабом был чет не додумался. Даже как-то обидно стало за пропадающий бесценный опыт . Но душей я с вами друзья!

Посему поделитесь пожалуйста последними новостями из мира вашей разработки если она связана с Lightning. Как и что вы сейчас пилите (без конкретики, можно общими словами или на пальцах). Это какие-то отдельные виджеты которые потом пихаются с стандартный интерфейс или целые страницы. Может какую интересную задачку можете подкинуть чтобы немного возбудить интерес и попробовать запилить в свободное время. Как сейчас дела обстоят с использованием сторонних JS фреймворков типа Angular/React из под Lightning?

Dmitry Shnyrev
какие-то отдельные виджеты которые потом пихаются с стандартный интерфейс или целые страницы

типичная зада - это кастомизация стандартного интерфейса под какую то конкретную бизнес логику.
все эти задачи решаются через Quick Action buttons (или кастомными кнопками в кастомной секции, например на верху рел листа)c AURA и LWC компонетами.

пользователю нужно выполнить какую то бизнес операцию - кликнул кнопку, поднялось модальное окно, пользователь поработал, окно автоматически или по клику закрылось, родительское окно рефрешнулось если нужно, всплыл Тоаст с уведомлением, и все.

Никакие Single-page application, ни сложных компонентов с ветвистой логикой и множеством views делать не приходилось.

То есть сейчас модалочки с простой логикой в моде? Интересно.

А как дела обстоят с managed packages которые уже под LWC. Это я так полагаю сейчас просто набор биджетов/модалок которые потом (после установки) просто распихиваются по стандартному интерфейсу?

А как вообще дела обстоят с взаимодействием стандартного интерфейса и кода из кастомного компонента? Раньше боролись с iframe c разных поддоменов. Сейчас с этим как? Могу я загрузить свой кастомный код который тупо перересует с помощью JS кусок стандартной страницы?

Dmitry Shnyrev
Могу я загрузить свой кастомный код который тупо перересует с помощью JS кусок стандартной страницы?

How to use Apex natively with Svelte, Vue, and Preact within LWC
https://developer.salesforce.com/blogs/2020/11/how-to-use-apex-natively-with-svelte-vue-and-preact-within-lwc.html

Eric
Dmitry Shnyrev
Могу я загрузить свой кастомный код который тупо перересует с помощью JS кусок стандартной страницы?

How to use Apex natively with Svelte, Vue, and Preact within LWC
https://developer.salesforce.com/blogs/2020/11/how-to-use-apex-natively-with-svelte-vue-and-preact-within-lwc.html

Вот кстати просветите, есть ли смысл заморачиваться с впихиванием одного фреймворка в другой?

Maxim Elets
Вот кстати просветите, есть ли смысл заморачиваться с впихиванием одного фреймворка в другой?

Согласен, хороший вопрос
Наверное LWC уже дорос до уровня когда такой вопрос возникает

Dmitry Shnyrev
Наверное LWC уже дорос до уровня когда такой вопрос возникает

LWC дорос до уровня, когда почти всего хватает, а если чего-то не хватает, то это не пропустит Locker service

Developer
это не пропустит Locker service

Это был бы мой второй вопрос :)

Developer
LWC дорос до уровня, когда почти всего хватает, а если чего-то не хватает, то это не пропустит Locker service

Его можно и обойти при большом желании

Например у меня был код, который показывает debug log в виде дерева. Для этого генерил html код с onClick calback. Пришлось скрестить ужа и ежа.

wilder
Его можно и обойти при большом желании

Например у меня был код, который показывает debug log в виде дерева. Для этого генерил html код с onClick calback. Пришлось скрестить ужа и ежа.

И как? Вынести из контекста Lightning в какой-нибудь iframe?
В самом lightning его не обойти. Он пропускает код через secure wrappers и кидает js exceptions всегда, когда что-то ему не нравится или что-то пока не поддерживается в нём. Даже банально многие стандартные js объекты с ним не создать.

Developer
И как? Вынести из контекста Lightning в какой-нибудь iframe?

Не не надо никаких iframe

wilder
Не не надо никаких iframe

А что нужно?

Developer
wilder
Не не надо никаких iframe

А что нужно? :)

Для начала нужно понять когда в Lwc используется locker а когда нет.

wilder
Для начала нужно понять когда в Lwc используется locker а когда нет.

Если уже пошёл такой разговор, а выше было про "при большом желании", то можно сразу к делу.
Есть, к примеру, простейшая компонента с обычным input полем типа file, для загрузки файлов. "Когда" нужно создавать инстанс DataTransfer для манипуляций с FileList, чтобы locker service не мешал?

Если не использовать LightningElement, то Locker не бужет мешать. А вот как это сделать нужно подумать:)

wilder
Если не использовать LightningElement, то Locker не бужет мешать. А вот как это сделать нужно подумать:)

Ну тут вопрос, что нужно использовать, т.к. делаются lwc компоненты, которые нужно потом добавлять в коммьюнити через builder и которым нужно общаться между собой без всяких костылей

Developer
wilder
Если не использовать LightningElement, то Locker не бужет мешать. А вот как это сделать нужно подумать:)

Ну тут вопрос, что нужно использовать, т.к. делаются lwc компоненты, которые нужно потом добавлять в коммьюнити через builder и которым нужно общаться между собой без всяких костылей :)

Можно одновременно и использовать и не использовать. Сделай отладку и посмотри когда внутри класса LightningElement не используется Locker.

Они(Salesforce) похоже сами не в восторге от своего Locker. Видел из код который генерит дерево, у них там ест отдельный метод deepClone.

wilder
Developer
wilder
Если не использовать LightningElement, то Locker не бужет мешать. А вот как это сделать нужно подумать:)

Ну тут вопрос, что нужно использовать, т.к. делаются lwc компоненты, которые нужно потом добавлять в коммьюнити через builder и которым нужно общаться между собой без всяких костылей :)

Можно одновременно и использовать и не использовать. Сделай отладку и посмотри когда внутри класса LightningElement не используется Locker.

Они(Salesforce) похоже сами не в восторге от своего Locker. Видел из код который генерит дерево, у них там ест отдельный метод deepClone.

А уж как девелоперы не в восторге

PS: Например приколы с localStorage.
Они взяли намутили свою обертку, которая каким-то боком понимает контекст и каким-то хером этот же контекст теряет.

И вот можно добавить через их враппер что-то в local storage, а через какое-то время, увидеть что в этом local storage уже 300 одинаковых записей, а метод localStorage.clear() не чистит локал сторадж, а чистит только то что сф воспринимает как внутри своего контекста, а если активно работать и выгружать кучу данных, то встретить такую ошибку очень легко.

Interesting information? Help us, post link to social media..