Проект Umbrella с несколькими приложениями, содержащими логику интерфейса.

У меня есть 2 приложения, которые имеют общую функциональность / маршруты. Например, в обоих приложениях есть дневник, отслеживание целей, отслеживание сна и т. Д., Которые работают одинаково. Есть также маршруты, специфичные для каждого приложения. В AppA пользователь может отслеживать свое настроение, а в AppB пользователь может просматривать заметки от своего врача.

Есть ли способ иметь зонтичный проект, который содержит в /apps универсальное приложение, AppA и AppB? Каждое приложение будет иметь свой собственный маршрутизатор / контроллеры / шаблоны и т. Д. Каждому AppA и AppB потребуется GenericApp в качестве зависимости. До сих пор я видел только зонтичные проекты с одним приложением, которое содержит интерфейсную логику (веб), а другие приложения являются библиотеками, которые включены в него. Как это может работать с маршрутизацией между несколькими приложениями? Есть ли другой подход, который я могу использовать для этого?

Я нашел этот вопрос и ответ в своем поиске, но это не совсем то, что я ищу. Похоже, по образцу одного внешнего приложения, в том числе в других библиотеках.

1 ответ

Да, вы можете разделить "общие" маршруты на отдельные зонтичные приложения и forward к этому от AppA а также AppB,

Используйте функцию Phoenix.Router.forward/4 для пересылки запросов от AppA а также AppB в общий код.

Например, вот как exq_ui может быть включен в более крупное приложение:

  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
Другие вопросы по тегам