Проект 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