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

Tak можно ли обойти Lightning Locker ?

Всем привет! Заинтересовала проблема обхода Lightning Locker в LWC, я уже видел ответ в других темах о том что это возможно если не использовать LightingElement, но только вот ничего не получается... Буду признателен за подсказки.
via
Всем привет! Заинтересовала проблема обхода Lightning Locker в LWC, я уже видел ответ в других темах о том что это возможно если не использовать LightingElement, но только вот ничего не получается... Буду признателен за подсказки.  
Золотого решения нет. Все зависит от задачи. Вполне возможно что ничего обходить не придется если переосмыслить задачу.
Можно пример задачи?
Золотого решения нет. Все зависит от задачи. Вполне возможно что ничего обходить не придется если переосмыслить задачу. 
Можно пример задачи?
Dmitry Shnyrev
Золотого решения нет. Все зависит от задачи. Вполне возможно что ничего обходить не придется если переосмыслить задачу.
Можно пример задачи?
Дело не в задаче а в идее. Если можно обойти то какие есть варианты?
via
[quote="Dmitry Shnyrev"]Золотого решения нет. Все зависит от задачи. Вполне возможно что ничего обходить не придется если переосмыслить задачу. 
Можно пример задачи?[/quote] Дело не в задаче а в идее. Если можно обойти то какие есть варианты?
Что-то не понятна суть вопроса. Lightning Locker это базовая штука Lightning UI которая включает в себя целый комплекс разных решений. Что значит его обойти? Полностью отключить? Нужно получить доступ к другим компонентам на странице или к глобальному окружению? Или достучаться до "скрытых" JS функций? Lightning Locker не один год писали и допиливали серьезные команды разрабов. Явно такую штуку просто так в две строчки кода не сломать. Да и смысл обходить этот механизм? Если даже что-то заработает в одном браузере, где вероятность что решение будет работать у всех пользователей. Имхо тут надо подстраиваться под Lightning Locker чем стараться его обойти. Почему я и спрашиваю что за задача, может проще будет "обойти" саму задачу чем Lightning Locker.
Что-то не понятна суть вопроса. Lightning Locker это базовая штука Lightning UI которая включает в себя целый комплекс разных решений. Что значит его обойти? Полностью отключить? Нужно получить доступ к другим компонентам на странице или к глобальному окружению? Или достучаться до "скрытых" JS функций? Lightning Locker не один год писали и допиливали серьезные команды разрабов. Явно такую штуку просто так в две строчки кода не сломать. Да и смысл обходить этот механизм? Если даже что-то заработает в одном браузере, где вероятность что решение будет работать у всех пользователей. Имхо тут надо подстраиваться под Lightning Locker чем стараться его обойти. Почему я и спрашиваю что за задача, может проще будет "обойти" саму задачу чем Lightning Locker.
Dmitry Shnyrev
Что-то не понятна суть вопроса. Lightning Locker это базовая штука Lightning UI которая включает в себя целый комплекс разных решений. Что значит его обойти? Полностью отключить? Нужно получить доступ к другим компонентам на странице или к глобальному окружению? Или достучаться до "скрытых" JS функций? Lightning Locker не один год писали и допиливали серьезные команды разрабов. Явно такую штуку просто так в две строчки кода не сломать. Да и смысл обходить этот механизм? Если даже что-то заработает в одном браузере, где вероятность что решение будет работать у всех пользователей. Имхо тут надо подстраиваться под Lightning Locker чем стараться его обойти. Почему я и спрашиваю что за задача, может проще будет "обойти" саму задачу чем Lightning Locker.


Нужно получить доступ к методам в родительском компоненте
via
[quote="Dmitry Shnyrev"]Что-то не понятна суть вопроса. Lightning Locker это базовая штука Lightning UI которая включает в себя целый комплекс разных решений. Что значит его обойти? Полностью отключить? Нужно получить доступ к другим компонентам на странице или к глобальному окружению? Или достучаться до "скрытых" JS функций? Lightning Locker не один год писали и допиливали серьезные команды разрабов. Явно такую штуку просто так в две строчки кода не сломать. Да и смысл обходить этот механизм? Если даже что-то заработает в одном браузере, где вероятность что решение будет работать у всех пользователей. Имхо тут надо подстраиваться под Lightning Locker чем стараться его обойти. Почему я и спрашиваю что за задача, может проще будет "обойти" саму задачу чем Lightning Locker.[/quote]


Нужно получить доступ к методам в родительском компоненте
via
Нужно получить доступ к методам в родительском компоненте
Это не имеет смысла. Не имеет смысла напрямую обращаться к методам в родительском компоненте. Компонент не знает и не должен знать где его будут использовать и кто будет его родителем.
Есть предельно простая схема для взаимодействия child-to-parent в LWC через events. Когда компонент инициирует событие с данными, а уже родительский компонент подписывается на это событие и реагирует, то есть вызывает тот же метод. Зачем здесь что-то ломать? Так же родитель после того как споймал событие, вызвал метод, что-то сделал, может вернуть данные обратно в child компонент.
Схема взаимодействия между LWC компонентами полностью достаточна чтобы замутить любой сложности взаимодействие. Вот со стандартными компонентами уже сложнее потому что внутрь к ним не влезешь и можно использовать только набор стандартных свойств и событий (обычно в таких случаях если мне не хватает чего-то в стандартных компонентах я пишу его более навороченный клон с нуля уже со всеми возможностями взаимодействия что я описал выше)
[quote="via"]Нужно получить доступ к методам в родительском компоненте[/quote]
Это не имеет смысла. Не имеет смысла напрямую обращаться к методам в родительском компоненте. Компонент не знает и не должен знать где его будут использовать и кто будет его родителем.
Есть предельно простая схема для взаимодействия child-to-parent в LWC через events. Когда компонент инициирует событие с данными, а уже родительский компонент подписывается на это событие и реагирует, то есть вызывает тот же метод. Зачем здесь что-то ломать? Так же родитель после того как споймал событие, вызвал метод, что-то сделал, может вернуть данные обратно в child компонент. 
Схема взаимодействия между LWC компонентами полностью достаточна чтобы замутить любой сложности взаимодействие. Вот со стандартными компонентами уже сложнее потому что внутрь к ним не влезешь и можно использовать только набор стандартных свойств и событий (обычно в таких случаях если мне не хватает чего-то в стандартных компонентах я пишу его более навороченный клон с нуля уже со всеми возможностями взаимодействия что я описал выше)
via, сорри за этот вопрос, но каков уровень ваших знаний LWC?
Просто если вы скиловый разраб и ищите реально сложные варианты как нагнуть LWC то можем попробовать обсудить реальную задачу.
Если вы только начали пробовать LWC то я бы посоветовал глубже разобраться в стандартных возможностях LWC а обход Lightning Locker оставить на самый конец.
via, сорри за этот вопрос, но каков уровень ваших знаний LWC? 
Просто если вы скиловый разраб и ищите реально сложные варианты как нагнуть LWC то можем попробовать обсудить реальную задачу. 
Если вы только начали пробовать LWC то я бы посоветовал глубже разобраться в стандартных возможностях LWC а обход Lightning Locker оставить на самый конец.
Dmitry Shnyrev
via, сорри за этот вопрос, но каков уровень ваших знаний LWC?
Просто если вы скиловый разраб и ищите реально сложные варианты как нагнуть LWC то можем попробовать обсудить реальную задачу.
Если вы только начали пробовать LWC то я бы посоветовал глубже разобраться в стандартных возможностях LWC а обход Lightning Locker оставить на самый конец.


Хорошо, у меня есть инсайд о том что LWC могут общатся на всех уровнях (чайлд-парент, на одном уровне) без ивентов, Lightning Message Service и pub/sub используя API как при парент-чайлд связи. Вот я и хочу проверить / понять можно ли этого добиться. Просто профессиональное любопытство.
via
[quote="Dmitry Shnyrev"]via, сорри за этот вопрос, но каков уровень ваших знаний LWC? 
Просто если вы скиловый разраб и ищите реально сложные варианты как нагнуть LWC то можем попробовать обсудить реальную задачу. 
Если вы только начали пробовать LWC то я бы посоветовал глубже разобраться в стандартных возможностях LWC а обход Lightning Locker оставить на самый конец.[/quote]


Хорошо, у меня есть инсайд о том что LWC могут общатся на всех уровнях (чайлд-парент, на одном уровне) без ивентов, Lightning Message Service и pub/sub используя API как при парент-чайлд связи. Вот я и хочу проверить / понять можно ли этого добиться. Просто профессиональное любопытство.
via
LWC могут общатся на всех уровнях (чайлд-парент, на одном уровне) без ивентов, Lightning Message Service и pub/sub используя API как при парент-чайлд связи
Хм. Я с таким пока не сталкивался. Было дело использовал Lightning Message Service чтобы организовать связь между Visualforce и LWC. Но это по сути те же самые events только в другой обертке и работают глобально. pub/sub не пробовал на практике, но тут опять же event - кто-то отсылает, кто-то слушает. Но что-то глобальное без events а по принципу "дернуть метод" пока не встречал.
[quote="via"]LWC могут общатся на всех уровнях (чайлд-парент, на одном уровне) без ивентов, Lightning Message Service и pub/sub используя API как при парент-чайлд связи[/quote]
Хм. Я с таким пока не сталкивался. Было дело использовал Lightning Message Service чтобы организовать связь между Visualforce и LWC. Но это по сути те же самые events только в другой обертке и работают глобально. pub/sub не пробовал на практике, но тут опять же event - кто-то отсылает, кто-то слушает. Но что-то глобальное без events а по принципу "дернуть метод" пока не встречал.
Задача общения разных компонентов между собой на прямую не связана с Locker Service. Но без решения задачи с Locker Service у нас будет больше проблем, особенно в больших приложениях с десятками компонентов.
Задача общения разных компонентов между собой на прямую не связана с Locker Service. Но без решения задачи с Locker Service у нас будет больше проблем, особенно в больших приложениях с десятками компонентов.