Reitit не распознает маршрут при прямом переходе к нему в браузере
Я пытаюсь определить несколько маршрутов для использования на моем веб-сайте. Я определил их так:
(def routes
["/"
[""
{:name :home
:controllers [{:start (fn [& params] (js/console.log "Home"))
:stop (fn [& params] (js/console.log "Leaving Home"))}]}]
["posts"
[""
{:name :posts
:controllers [{:start (fn [& params] (js/console.log "Posts"))
:stop (fn [& params] (js/console.log "Leaving Posts"))}]}]
(for [post blog/posts]
[(:route post)
{:name (:tag post)
:controllers [{:start (fn [& params] (js/console.log (:name post)))
:stop (fn [& params] (js/console.log "Leaving " (:name post)))}]}])]])
(defn on-navigate [new-match]
(when new-match
(re-frame/dispatch [::e/navigated new-match])))
(def router
(rf/router
routes))
(defn init-routes! []
(rfe/start!
router
on-navigate
{:use-fragment false}))
Это должно динамически создавать маршруты для сообщений блога, которые я определяю в своем файле блога. Он отлично работает, когда я начинаю с любогоlocalhost:8280/
или localhost:8280/posts
и щелкните ссылку публикации, которая ведет к localhost:8280/posts/blank
(страница шаблона сообщения в блоге). Если я просматриваю сообщение (/posts/blank
) и обновите страницу, она откроется на пустой экран и, похоже, не загружает какой-либо скомпилированный javascript. Если я перезагружусь/
или /posts
он работает, как ожидалось, и позволяет мне продолжать просмотр.
У меня есть два вопроса о Reitit, по которым я был бы очень благодарен за помощь:
- Почему это происходит и что я могу изменить в настройках маршрута, чтобы это исправить?
- В настоящее время я могу перейти только к
/posts
и нет/posts/
, как мне зарегистрировать маршрут с дополнительным/
в конце тоже? Если я попытаюсь определить два маршрута с одинаковым именем, Reitit не позволит этого.