Предварительно скомпилированные одностраничные приложения в приложении Phoenix

У меня есть предварительно скомпилированное приложение ember.js (которое здесь не имеет значения для fronted-js-framework), которое в основном состоит из папки с файлом index.html и нескольких ресурсов js / css.

Я поместил эту папку в / priv / static в моем приложении Phoenix и попытался настроить маршрутизацию для ее обслуживания ... пока безуспешно. Я на версии Phoenix 0.17.1 (так же, как 1.0 afaik). Я попробовал следующие шаги, в том порядке:

В endpoint.ex я удалилonly: ~w(...) фильтр.Реализован минимальный контроллер с одним действием для обслуживания файла:def index(conn, _params) do redirect conn, to: "/my_app/index.html" endдобавил контроллер в мои маршруты.get "/my_app", MyCustomController, :index

Ни один из вышеперечисленных шагов не сработал, я получаю только ошибкуno route found for GET /my_app/index.html, Как я мог решить эту проблему? Я просто хочу сопоставить URL"/my_app" (или, если ничего не работает,"/my_app/index.html") к путиpriv/static/my_app/index.html в моем приложении Феникс. Есть идеи?

РЕДАКТИРОВАТЬ:

Основной рабочий процесс, который я пытаюсь реализовать, заключается в следующем:

У меня есть разные разработчики, которые создают некоторые SPA-файлы ember.js в своей специальной папке, расположенной в$phoenix_root/apps/, Итак, у меня есть здание разработчика$phoenix_root/apps/my_app с тлеющим углем и тлеющим углем. Этот разработчик используетember server при разработке своего приложения, и имеетmix phoenix.server работает в фоновом режиме, потому что само приложение Phoenix предоставляет необходимые данные в виде RESTful API.

После каждой реализованной функции разработчик внешнего интерфейса набираетember build [...]эта задача компилирует все приложение внешнего интерфейса ember.js в одну папку с файлом index.html и некоторыми активами и перемещает эту папку в$phoenix_root/web/static/assets/my_app, Затем Феникс (или поздний завтрак) запускает и копирует этот материалкак есть в$phoenix_root/priv/static/my_app, готовый быть обслуженным как любой другой актив.

Суть заключается в том, чтобы иметь возможность создавать кучу изолированных «внешних интерфейсов» в виде автономных пакетов в единой кодовой базе (приложение phoenix), тогда как у самого приложения phoenix есть дополнительные (другие) вещи, которые нужно сделать.

Поскольку разработчики Frontend автоматически генерируют SPA каждый раз, я всегда изменяю постоянно обновляемый файл index.html.высоко хочу избежать. С точки зрения производительности, было бы лучше всего просто обслуживать эти SPA как статические файлы, которые они есть - они инициализируются самостоятельно в браузере пользователя.

Я надеюсь, что это добавляет некоторые пояснения, почему я делаю это.

РЕДАКТИРОВАТЬ 2:

У меня есть рабочее решение, посмотрите пример репозитория, который я создал для демонстрационных целей:https://github.com/Anonyfox/Phoenix-Example-Multiple-SPA-Frontends

Необходимые модификации приложения феникс:

модифицироватьendpoint.ex' Plug.Static включить SPA и их активы.запустить снова mix phoenix.server после этого!

Необходимые изменения в приложениях ember.js:

добавлять"output-path": "../../web/static/assets/*my_app*/" в.ember-cli, удобство настройки для запускаember build всегда с этим путемдобавлятьbaseURL: '/*my_app*/' а такжеlocationType: 'none' вconfig/environment.jsrm -rf .git если вы хотите, чтобы весь код был версионирован в рамках одного проекта (цель этого вопроса)

Ответы на вопрос(1)

Ваш ответ на вопрос