Moduły i budowa aplikacji

Moduł grupuje funkcję biznesową wraz z jej stronami, API, danymi i tłumaczeniami. Aplikacja wybiera moduły do uruchomienia. Generatory zbierają ich deklaracje, żeby aplikacja mogła z nich korzystać.

Na tej stronie

Gdzie umieścić własny kod?

We własnej aplikacji dodaj funkcję w osobnym katalogu src/modules. Włącz ją w src/modules.ts. Praca nad samym frameworkiem odbywa się w repozytorium produktu, gdzie moduły Core znajdują się w packages/core/src/modules.

Architektura w praktyceTwój moduł staje się częścią aplikacji podczas budowania

src/modules/service/

backend/Strony w panelu
api/Trasy HTTP
data/Encje i walidacja
subscribers/Reakcje na zdarzenia
src/modules.tsWłącz moduł
generate
RejestryŁączą pliki z aplikacją
build
Działająca aplikacja
src/modules/visit_planning/   # example custom module
src/modules.ts              # enabled modules
Kod i dokumentacja

generators/module-registry.ts

Od plików do działającej aplikacji

  1. Wybierz moduły i zadeklaruj ich zależności.
  2. Uruchom skrypty generowania aplikacji. Brak zadeklarowanej zależności zatrzymuje generowanie rejestru modułów.
  3. Zbuduj aplikację i sprawdź, czy oczekiwana strona, trasa lub usługa została zarejestrowana.
Kod i dokumentacja

generators/module-registry.ts

Przykład: moduł serwisowy

Funkcja serwisowa może mieć własne sprawy, API i strony panelu w jednym module. Poniższy przykładowy katalog pokazuje podział plików. Dodaj te, których potrzebuje funkcja; moduł może korzystać z części dostępnych konwencji.

src/modules/service/
  index.ts           # module metadata
  acl.ts             # permission identifiers
  di.ts              # service registration
  data/entities.ts   # stored records
  api/               # HTTP routes
  backend/           # admin pages
  subscribers/       # event handlers
  i18n/              # translations
Kod i dokumentacja

generators/module-registry.ts · extensibility/current-surfaces.mdx

Dlaczego samo dodanie pliku czasem nie wystarcza

Aplikacja odnajduje strony, trasy i rozszerzenia w generowanych rejestrach. Po dodaniu pliku włącz moduł i uruchom skrypt generowania dostępny w swojej aplikacji. Jeśli funkcja się nie pojawia, sprawdź rejestr. Ręczna zmiana wygenerowanego pliku zniknie przy kolejnym generowaniu.

Deklaracja encji wpływa również na strukturę bazy. Wygeneruj i przejrzyj migrację, a następnie zastosuj ją w docelowym środowisku. Poprawne zbudowanie trasy samo nie utworzy brakującej tabeli.

Kod i dokumentacja

generators/module-registry.ts

Jak przekazywać dane między modułami?

Korzystaj z udokumentowanych rozszerzeń i zadeklarowanych zdarzeń. Przekazuj potrzebne dane, na przykład identyfikator klienta oraz informacje wymagane przez drugą funkcję. Importowanie prywatnego kodu innego modułu utrudnia późniejsze aktualizacje.

Kod i dokumentacja

extensibility/current-surfaces.mdx · events/factory.ts

Przed aktualizacją

Zmieniaj pliki źródłowe i ponownie generuj rejestry. Testuj funkcje korzystające ze zmienionych modułów. Podział na moduły ułatwia pracę nad kodem. Własne rozszerzenia nadal trzeba sprawdzić po aktualizacji.

Kod i dokumentacja

generators/module-registry.ts · extensibility/current-surfaces.mdx

Źródła

Kod Open Mercato użyty w opisach