Регистрация  |  Вход

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

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

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

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

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

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

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

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

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

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

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

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

А как дела обстоят с 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

[quote="Dmitry Shnyrev"]Могу я загрузить свой кастомный код который тупо перересует с помощью JS кусок стандартной страницы?[/quote]
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

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

[quote="Eric"][quote="Dmitry Shnyrev"]Могу я загрузить свой кастомный код который тупо перересует с помощью JS кусок стандартной страницы?[/quote]
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[/quote]
Вот кстати просветите, есть ли смысл заморачиваться с впихиванием одного фреймворка в другой?

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

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

[quote="Maxim Elets"]Вот кстати просветите, есть ли смысл заморачиваться с впихиванием одного фреймворка в другой?[/quote]
Согласен, хороший вопрос :) 
Наверное LWC уже дорос до уровня когда такой вопрос возникает :) 

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

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

[quote="Dmitry Shnyrev"]Наверное LWC уже дорос до уровня когда такой вопрос возникает [/quote]

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

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

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

[quote="Developer"]это не пропустит Locker service[/quote]
Это был бы мой второй вопрос :)

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

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

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

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

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

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

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

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

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

[quote="wilder"]Его можно и обойти при большом желании

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

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

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

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

[quote="Developer"]И как? Вынести из контекста Lightning в какой-нибудь iframe?[/quote]

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

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

А что нужно?

[quote="wilder"]Не не надо никаких iframe[/quote]

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

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

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

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

[quote="Developer"][quote="wilder"]Не не надо никаких iframe[/quote]

А что нужно? :)[/quote]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Можно одновременно и использовать и не использовать. Сделай отладку и посмотри когда внутри класса 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() не чистит локал сторадж, а чистит только то что сф воспринимает как внутри своего контекста, а если активно работать и выгружать кучу данных, то встретить такую ошибку очень легко.

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

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

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

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

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

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

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