2017-07-31 60 views
6

Mam 2 aplikacje, które mają wspólną funkcjonalność/trasy. Na przykład w obu aplikacjach znajduje się dziennik, śledzenie celów, śledzenie snu itp., Które działają w ten sam sposób. Istnieją również trasy specyficzne dla każdej aplikacji. W AppA użytkownik może śledzić swój nastrój, aw AppB użytkownik może przeglądać notatki od swojego lekarza.Projekt parasola z wieloma aplikacjami zawierającymi logikę front end.

Czy istnieje sposób na projekt parasolowy, który zawiera /apps aplikację ogólną, AppA i AppB? Każda aplikacja będzie miała własny router/kontrolery/szablony itp. AppA i AppB będą wymagać od GenericApp jako zależności. Do tej pory widziałem tylko projekty parasolowe z jedną aplikacją, która zawiera logikę front-end (sieć), a inne aplikacje są bibliotekami, które są włączone. Jak to działa z routingiem w wielu aplikacjach? Czy istnieje inne podejście, które mogę za to przyjąć?

Znalazłem this question & answer w moich poszukiwaniach, jednak nie jest to dokładnie to, czego szukam. Wydaje się, że podąża za wzorcem jednej aplikacji z przodu, w tym w innych bibliotekach.

Odpowiedz

4

Tak, z całą pewnością można podzielić "ogólne" trasy na oddzielną aplikację parasolową i forward na tę z AppA i AppB.

Użyj funkcji Phoenix.Router.forward/4, aby przekazywać żądania od AppA i AppB do udostępnionego kodu.

Na przykład, jest to, w jaki sposób exq_ui mogą być włączone do większych aplikacji:

pipeline :exq do 
    plug :accepts, ["html"] 
    plug :fetch_session 
    plug :fetch_flash 
    plug :put_secure_browser_headers 
    plug ExqUi.RouterPlug, namespace: "exq" 
    end 

    scope "/exq", ExqUi do 
    pipe_through :exq 
    forward "/", RouterPlug.Router, :index 
    end