Klient ma aplikacje w angularze, my mamy dość duży komponent w Reacie. React jest kompilowany do web componentu, web component jest lazy loadowany i osadzany w angularze (bardzo przyjemne rozwiązanie w package.json angulara pojawia się tylko 1 dependency i nie śmieci w angularze zależnościami do tego komponentu). W naszej aplikacji w Reakcie dodałem web worker (żeby liczył na osobnym wątku coś ciężkiego. Liczy to coś biblioteką napisaną chyba w C wykompilowaną do Wasm).

Przed chwilą udało mi się uruchomić logikę napisaną w C wykonwertowaną do Wasm w web workerze w web componecie wygenerowanym z aplikacji reacktowej osadzonym w angularze. WebComponent ma ładny typ w TS który mówi jakich propsów spodziewa się React.

I brzmi to strasznie ale wbrew pozorom bardzo zgrabnie to wszystko działa i ze sobą komunikuje, jest ładne separation of concerns i samo wywołanie zajmuje mniej niż 100 linii na poziomie angulara, a jak jesteśmy w reakcie to budujemy paczkę na wyjście.

#programowanie

2fb55341-d4c3-47a7-ab4a-e1b543c587da

Komentarze (15)

Sweet_acc_pr0sa

@Deykun nic nie rozumiem xD

Fly_agaric

Fajny ulep, ale tak to było pomyślane, żeby jednak działało na koniec, więc chyba wykonanie prawidłowe, skoro śmiga.

serel

A można było wszystko w pehapie opędzić, elegancko by było, a nie taką ekwilibrystykę uprawiać ¯\_( ͡° ͜ʖ ͡°)_/¯

pierdonauta_kosmolony

@serel Teraz jak masz zużywać zasoby sprzętowe i prąd - rób to na maszynie klienta.

Catharsis

Przez takie akcje potem przychodzą ludzie od niskopoziomowych języków programowania i z wyższością piszą że webdev to patola jest xD.

serel

@Catharsis a nie jest? xD

Catharsis

@motokate To trzeba by jeszcze używać aktualnych paczek żeby być na takie coś narażonym xD.

serel

@Catharsis tru, dalej supportujemy jednego strupa na nodeJS 12.x xD co prawda nikt nam supply chainem nie wjedzie, ale i bez tego mamy setki podatności 9+ w CVSSv3

potato_fairy

@Deykun a jak ten komponent napisany w Reacie pojawia się na stronie? Skoro jest tylko dodany moduł w package.json i nie ma żadnych innych referencji nigdzie to brzmi, jakby appendował się do jakiegoś określonego DOM elementu czy macie to jakoś inaczej rozwiązane?

Deykun

@potato_fairy

React jest kompilowany do web componentu,

Tego akurat nie czytałem ale jest tam sekcja " Create your Web Component From your React Component" i to jest w sumie clue: https://techblog.skeepers.io/create-a-web-component-from-a-react-component-bbe7c5f85ee6 można wygenerować web component z aplikacji reactowej bez instalowania żadnych magicznych paczek.


W kodzie są dwa main.tsx i jeden do developmentu zwykły, i main-to-web-component.tsx który tworzy web component. Technicznie można potem sobie dać go w public zamiast w aplikacji reactowej, ale błędy w tak developowanej apce są gorsze i nie ma dobrego namiaru w map.js, więc lepiej mieć dwa osobne procesy.


A angular instaluje paczkę z web componentem który jest natywny dla JS i to jego osadzam.


Jak rozeznawałem się, to są jakieś inne rozwiązania, z dodatkowymi paczkami, niektóre wymagają instalacji "react" w angularze, ale to opisałem tu bardzo zgrabnie działa.

potato_fairy

@Deykun a czyli to takie angularowe custom elements

Deykun

@potato_fairy nie wiem nie szanuję angulara ;d

potato_fairy

@Deykun zgadzam się, angulara jebać prądem

Zaloguj się aby komentować