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

React вместо LWC

Пытаюсь понять почему бы не используем React вместо LWC ? Есть подводные камни ?
Пытаюсь понять почему бы не используем React вместо LWC ? Есть подводные камни ?
Sergey Prishchepa
React вместо LWC

такие выборы могут быть, если ты пилишь прям реальное one-page application, и тебе все нужно, что эти фреймворки могут дать или не дать.

а у простых людей выборы уже попроще: Flow VS OmnisScript
[quote="Sergey Prishchepa"]React вместо LWC[/quote]

такие выборы могут быть, если ты пилишь прям реальное one-page application, и тебе все нужно, что эти фреймворки могут дать или не дать.

а у простых людей выборы уже попроще: Flow VS OmnisScript
Den Brown
Sergey Prishchepa
React вместо LWC

такие выборы могут быть, если ты пилишь прям реальное one-page application, и тебе все нужно, что эти фреймворки могут дать или не дать.
я уже знаю одну компанию которая использует React на фронте в место lwc в сложном продукте. Несколько идей преследовалось как я понимаю, банальная разработчиков на реакт тупо больше, можно писать компоненты под себя именно как хочет команада. Единственно где пока простоматриваются под водные камни написание своего апи для бэка и декораторов. А так все это просто стадарт экмаскрпта.
[quote="Den Brown"][quote="Sergey Prishchepa"]React вместо LWC[/quote]

такие выборы могут быть, если ты пилишь прям реальное one-page application, и тебе все нужно, что эти фреймворки могут дать или не дать.
[/quote]
я уже знаю одну компанию которая использует React на фронте в место lwc в сложном продукте. Несколько идей преследовалось как я понимаю, банальная разработчиков на реакт тупо больше, можно писать компоненты под себя именно как хочет команада. Единственно где пока простоматриваются под водные камни написание своего апи для бэка и декораторов. А так все это просто стадарт экмаскрпта. 
Sergey Prishchepa
Пытаюсь понять почему бы не используем React вместо LWC ? Есть подводные камни ?
Lightning UI заточен под LWC компоненты. Ты просто собираешь UI из LWC, встраиваешь их куда тебе надо. С реактом такое не проканает. Ты либо делаешь одно большое SPA + Visualforce Page, либо городишь Франкиштейна оборачивая Реакт внутр LWC. Если с первым вариантом (на VF) можно вполне жить. Я сам долго пилил похожие Ангуляр приложения под SF и получалось очень классно. То вот React + LWC я не думаю что будет много желающих попробовать, даже из рядов самих React разрабов. LWC сегодня очень удобный инструмент и очень классно вписывается в Lightning UI. Низкий порог входа. Не нужны никакие локальные компиляторы, dev сервера и прочая инфраструктура. Надобность в других фреймворках отсутствует.
[quote="Sergey Prishchepa"]Пытаюсь понять почему бы не используем React вместо LWC ? Есть подводные камни ?[/quote]
Lightning UI заточен под LWC компоненты. Ты просто собираешь UI из LWC, встраиваешь их куда тебе надо. С реактом такое не проканает. Ты либо делаешь одно большое SPA + Visualforce Page, либо городишь Франкиштейна оборачивая Реакт внутр LWC. Если с первым вариантом (на VF) можно вполне жить. Я сам долго пилил похожие Ангуляр приложения под SF и получалось очень классно. То вот React + LWC я не думаю что будет много желающих попробовать, даже из рядов самих React разрабов. LWC сегодня очень удобный инструмент и очень классно вписывается в Lightning UI. Низкий порог входа. Не нужны никакие локальные компиляторы, dev сервера и прочая инфраструктура. Надобность в других фреймворках отсутствует. 
Dmitry Shnyrev
либо городишь Франкиштейна оборачивая Реакт внутр LWC.
Так вот идея в том что бы не обворачивать сейчас пытаюсь понять с какими трудностями я столкнусь, пока просматривается только api для бекенда.
[quote="Dmitry Shnyrev"]либо городишь Франкиштейна оборачивая Реакт внутр LWC.[/quote]
Так вот идея в том что бы не обворачивать сейчас пытаюсь понять с какими трудностями я столкнусь, пока просматривается только api для бекенда.
Sergey Prishchepa
т внутр LWC. Если с первым вариантом (
API для бэкэнда решается относительно просто, через API. Ну или можно эмулировать работу @remoteAction

А вот имплементация всяких лукапов, депенденд пиклистов и прочего может попить крови даже на LWC.
[quote="Sergey Prishchepa"]т внутр LWC. Если с первым вариантом ([/quote]
API для бэкэнда решается относительно просто, через API. Ну или можно эмулировать работу @remoteAction

А вот имплементация всяких лукапов, депенденд пиклистов и прочего  может попить крови даже на LWC.
Да что вы на бэкенде зациклились. Это вообще не вопрос, все элементарно делается. Вы лучше скажите куда вы этот реакт на фронте пихать собираетесь? В Lightning UI использовать? Посмотрю как это получится со всеми его ограничениями. А как с development flow + Salesforce?

Единственное что получится это пилить обычное (независимое от Salesforce) React SPA которое будет дергать Salesforce через API (или remoteAction после деплоя) и запихнуть его в Visualforce page. В современных реалиях для SF решение морально устарело. Для какого-нибудь внешнего сервиса или мобильного приложения сгодится.
Да что вы на бэкенде зациклились. Это вообще не вопрос, все элементарно делается. Вы лучше скажите куда вы этот реакт на фронте пихать собираетесь? В Lightning UI использовать? Посмотрю как это получится со всеми его ограничениями. А как с development flow + Salesforce? 

Единственное что получится это пилить обычное (независимое от Salesforce) React SPA которое будет дергать Salesforce через API (или remoteAction после деплоя) и запихнуть его в Visualforce page. В современных реалиях для SF решение морально устарело. Для какого-нибудь внешнего сервиса или мобильного приложения сгодится.
Хотя сейчас припомнился случай когда я возвращался из Python в SF и начал разбираться с LWC с нуля, я тогда пробовал силы с небошой домашней задачей.
https://salesforce-developer.ru/lightnin ... 12616054
Там я пробовал вставить Google Maps в LWC, но получилось сделать это с помощью симбиоза LWC+VF+LWC(для связи с другими компонентами). По такому принципу можно React компоненты делать вместо Google Maps. Но опять же остается вопрос с процессом разработки. Как React пилить локально, компилить и тестить в контексте SF/Lightning. Надо постараться чтобы настроить все по красоте.
Хотя сейчас припомнился случай когда я возвращался из Python в SF и начал разбираться с LWC с нуля, я тогда пробовал силы с небошой домашней задачей.
https://salesforce-developer.ru/lightning-message-service-v-visualforce-1649412616054
Там я пробовал вставить Google Maps в LWC, но получилось сделать это с помощью симбиоза LWC+VF+LWC(для связи с другими компонентами). По такому принципу можно React компоненты делать вместо Google Maps. Но опять же остается вопрос с процессом разработки. Как React пилить локально, компилить и тестить в контексте SF/Lightning. Надо постараться чтобы настроить все по красоте.
Dmitry Shnyrev
Вы лучше скажите куда вы этот реакт на фронте пихать собираетесь?
Как я это понимаю легко. Я тебе еще больше скажу Salesforce собирается добавить возможность нативно подключать разные реакты и т.д. Даже уже вроде бета есть надо будет глянуть.
[quote="Dmitry Shnyrev"]Вы лучше скажите куда вы этот реакт на фронте пихать собираетесь?[/quote] Как я это понимаю легко. Я тебе еще больше скажу Salesforce собирается добавить возможность нативно подключать разные реакты и т.д. Даже уже вроде бета есть надо будет глянуть. 
Sergey Prishchepa
Как я это понимаю легко.
А конкретнее? Чего не поделишься информацией? Секрет?
[quote="Sergey Prishchepa"]Как я это понимаю легко.[/quote]
А конкретнее? Чего не поделишься информацией? Секрет?
Sergey Prishchepa
Я тебе еще больше скажу Salesforce собирается добавить возможность нативно подключать разные реакты и т.д. Даже уже вроде бета есть надо будет глянуть.
Не слышал.
[quote="Sergey Prishchepa"]Я тебе еще больше скажу Salesforce собирается добавить возможность нативно подключать разные реакты и т.д. Даже уже вроде бета есть надо будет глянуть.[/quote]
Не слышал. 
Dmitry Shnyrev
Не слышал.
Погуглил быстро, но никаких упоминаний не нашел. Все что есть это SLDS под React (обычные реакт компоненты ничего общего с SF не имеющие кроме внешнего вида), да React Native для мобильной разработки (тоже косвенно к SF относится).
[quote="Dmitry Shnyrev"]Не слышал.[/quote]
Погуглил быстро, но никаких упоминаний не нашел. Все что есть это SLDS под React (обычные реакт компоненты ничего общего с SF не имеющие кроме внешнего вида), да React Native для мобильной разработки (тоже косвенно к SF относится).
[quote="Dmitry Shnyrev"]Не слышал.[/quote]
https://developer.salesforce.com/docs/platform/lwc/guide/create-use-third-party-components.html
Dmitry Shnyrev
А конкретнее? Чего не поделишься информацией? Секрет?

import { ReactElement } from "React"; как то так :)

Это стандарт экмаскрипта модульная система, lwc это по сути открытый фреймворк
Там Есть с нюансы бекендом, с секьюрити, в реакте Virtual DOM в lwc Shadow DOM и т.д.
Я пользуюсь IDEA не знаю как там VSCode. Но исходники lwc просматриваются легко.

Я знаю что есть одна компания которая так и работает React на фронте а на беки джависты.:)




[quote="Dmitry Shnyrev"]А конкретнее? Чего не поделишься информацией? Секрет?[/quote]

import { ReactElement } from "React"; как то так :)

Это стандарт экмаскрипта модульная система, lwc это по сути открытый [url=https://github.com/salesforce/lwc/blob/master/CONTRIBUTING.md]фреймворк[/url]
Там Есть с нюансы бекендом, с секьюрити, в реакте Virtual DOM в lwc Shadow DOM и т.д.  
Я пользуюсь IDEA не знаю как там VSCode. Но исходники lwc просматриваются легко.

Я знаю что есть одна компания которая так и работает React на фронте а на беки джависты.:)



 
wilder
может попить крови даже на LWC.
Это мне и попило крови кастомный лоокап over 300 строк js.
[quote="wilder"]может попить крови даже на LWC.[/quote]
Это мне и попило крови кастомный лоокап  over 300 строк js.:sad:
Sergey Prishchepa
https://developer.salesforce.com/docs/pl ... nts.html
Прикольно, но есть КУЧА вопросов.
Во первых это поддержка стандартных Web Components. Когда ты работаешь с React или любым другим фреймворком это не Web Components. Есть вариант компиляции React компонентов в Web Components но там столько гемора и нетрадиционных для реакт разработки принципов что лучше не связываться. Я пробовал эту тему изучить и использовать, мне как раз хотелось иметь что-то похожее на независимые компоненты как мы имеем это в LWC для обычных сайтов, но дев процесс привращается в боль. React или похожие фреймворки все таки предполагают подход когда ты делаешь мелкие компоненты НО собираешь из них монолит и просто вставляешь его в определенное место в HTML. Web Components это подход именно ближе к LWC когда у тебя независимые компоненты, но они могут подгружать другие. В реакте если тебе надо в разных местах страницы разметить два компонента, которые используют третий, то тебе надо будет собрать два мини бандла с основным и зависимым компонентом. Это значит что зависимый компонент будет два раза загружаться на странице. И это просто пример, а когда у тебя тонна зависимостей в проекте и тебе надо показать на странице 10 разных компонентов, то с каждым из них ты подтянешь весь проект 10 раз. Смысл от реакта тут теряется.
Но вот стандартные Web Components это интересная тема, но сложная и спецов по ним уж точно меньше чем по LWC.

А так я ничего из доки интересного не увидел. Там тоже самое что loadScript из статик ресурсов, просто автоматизируют использование Web Components через lwc:external. Собственно Web Component наверное можно и сейчас точно так же использовать без этой штуки просто подгрузив и запустив js script инициализации. Но плюшки думаю скоро подвезут к этому lwc:external + Web Components. Плюс вижу только в том что в интернете умельцы уже насоздавали кучу очень полезных Web Component которые можно просто скачать и использовать. Внедряться в процесс разработки этих самых Web Components против LWC смысла я пока не вижу.
[quote="Sergey Prishchepa"]https://developer.salesforce.com/docs/pl ... nts.html[/quote]
Прикольно, но есть КУЧА вопросов.
Во первых это поддержка стандартных Web Components. Когда ты работаешь с React или любым другим фреймворком это не Web Components. Есть вариант компиляции React компонентов в Web Components но там столько гемора и нетрадиционных для реакт разработки принципов что лучше не связываться. Я пробовал эту тему изучить и использовать, мне как раз хотелось иметь что-то похожее на независимые компоненты как мы имеем это в LWC для обычных сайтов, но дев процесс привращается в боль. React или похожие фреймворки все таки предполагают подход когда ты делаешь мелкие компоненты НО собираешь из них монолит и просто вставляешь его в определенное место в HTML. Web Components это подход именно ближе к LWC когда у тебя независимые компоненты, но они могут подгружать другие. В реакте если тебе надо в разных местах страницы разметить два компонента, которые используют третий, то тебе надо будет собрать два мини бандла с основным и зависимым компонентом. Это значит что зависимый компонент будет два раза загружаться на странице. И это просто пример, а когда у тебя тонна зависимостей в проекте и тебе надо показать на странице 10 разных компонентов, то с каждым из них ты подтянешь весь проект 10 раз. Смысл от реакта тут теряется. 
Но вот стандартные Web Components это интересная тема, но сложная и спецов по ним уж точно меньше чем по LWC.

А так я ничего из доки интересного не увидел. Там тоже самое что loadScript из статик ресурсов, просто автоматизируют использование Web Components через lwc:external. Собственно Web Component наверное можно и сейчас точно так же использовать без этой штуки просто подгрузив и запустив js script инициализации. Но плюшки думаю скоро подвезут к этому lwc:external + Web Components. Плюс вижу только в том что в интернете умельцы уже насоздавали кучу очень полезных Web Component которые можно просто скачать и использовать. Внедряться в процесс разработки этих самых Web Components против LWC смысла я пока не вижу.

Dmitry Shnyrev
Это значит что зависимый компонент будет два раза загружаться на странице. И это просто пример, а когда у тебя тонна зависимостей в проекте и тебе надо показать на странице 10 разных компонентов, то с каждым из них ты подтянешь весь проект 10 раз. Смысл от реакта тут теряется.
Вот написал и понял затупил. Это не аргумент. Что так же и LWC работает
Если расположить два LWC компонента на странице то они явно не будут шарить общую библиотеку зависимостей.
[quote="Dmitry Shnyrev"]Это значит что зависимый компонент будет два раза загружаться на странице. И это просто пример, а когда у тебя тонна зависимостей в проекте и тебе надо показать на странице 10 разных компонентов, то с каждым из них ты подтянешь весь проект 10 раз. Смысл от реакта тут теряется.[/quote]
Вот написал и понял затупил. Это не аргумент. Что так же и LWC работает :smiley: 
Если расположить два LWC компонента на странице то они явно не будут шарить общую библиотеку зависимостей.
В общем я не противник использования всякого реакта для SF, но мне бы хотелось увидеть как будет построен проект и процесс разработки. Мой небольшой опыт почему-то подсказывает что будет не все так просто.
В общем я не противник использования всякого реакта для SF, но мне бы хотелось увидеть как будет построен проект и процесс разработки. Мой небольшой опыт почему-то подсказывает что будет не все так просто.
Dmitry Shnyrev
Если расположить два LWC компонента на странице то они явно не будут шарить общую библиотеку зависимостей.

А вот тут ты ошибаешься. И такое можно сделать:)
[quote="Dmitry Shnyrev"]Если расположить два LWC компонента на странице то они явно не будут шарить общую библиотеку зависимостей.[/quote]

А вот тут ты ошибаешься. И такое можно сделать:)
Sergey Prishchepa
wilder
может попить крови даже на LWC.
Это мне и попило крови кастомный лоокап over 300 строк js.
К этому все равно рано или поздно приходишь. Я уже переписал многие стандартные LWC компоненты на кастомные. Тот же Лукап, пиклисты, даже Data Table. В стандартных каждый раз чего то не хватает, что надо клиенту. Зато один раз написал, и спи спокойно. Надо какую-то хотелку клиентскую на стандартный коспонент, пошел, пару if/else закинул в свой компонент и радуешься. При React подходе начало будет сложным - придется переписать библиотеку стандартных LWC компонентов с нуля, зато потом как кирпичики складывай и кастомизируй. В этом плане последующая разработка будет более гибкая. В этом плане я завидую. Пока что мне не нравится в LWC это когда тебе надо быстро а ты уперся в стардартный компонент в котором нет нужной фичи. Это у меня так с Date picker пока война. Справляюсь с клиентскими требованиями, но каждый раз на грани чтобы кастомный не запилить.
[quote="Sergey Prishchepa"][quote="wilder"]может попить крови даже на LWC.[/quote]
Это мне и попило крови кастомный лоокап  over 300 строк js.:sad:[/quote]
К этому все равно рано или поздно приходишь. Я уже переписал многие стандартные LWC компоненты на кастомные. Тот же Лукап, пиклисты, даже Data Table. В стандартных каждый раз чего то не хватает, что надо клиенту. Зато один раз написал, и спи спокойно. Надо какую-то хотелку клиентскую на стандартный коспонент, пошел, пару if/else закинул в свой компонент и радуешься. При React подходе начало будет сложным - придется переписать библиотеку стандартных LWC компонентов с нуля, зато потом как кирпичики складывай и кастомизируй. В этом плане последующая разработка будет более гибкая. В этом плане я завидую. Пока что мне не нравится в LWC это когда тебе надо быстро а ты уперся в стардартный компонент в котором нет нужной фичи. Это у меня так с Date picker пока война. Справляюсь с клиентскими требованиями, но каждый раз на грани чтобы кастомный не запилить.
wilder
А вот тут ты ошибаешься. И такое можно сделать:)
Вполне возможно. Так глубоко в LWC пока не разбирался. Не было челенжа. Но если есть пример, буду рад обсудить.
[quote="wilder"]А вот тут ты ошибаешься. И такое можно сделать:)[/quote]
Вполне возможно. Так глубоко в LWC пока не разбирался. Не было челенжа. Но если есть пример, буду рад обсудить.