Я делал личный сайт, используя ClojureScript, и решил go с Reitit в качестве моей библиотеки маршрутизации вместо моего обычного секретаря. Я прочитал действительно хорошие вещи о Reitit, и он вроде как работает, но он будет реагировать только тогда, когда я перейду к пути с символом # в нем.
Пример: я хочу иметь возможность go на «website.com/posts», но он распознает только когда я go на «website.com/#/posts"
My routes.cl js в значительной степени является копией их примера с перекомпоновкой:
(defn href
([k]
(href k nil nil))
([k params]
(href k params nil))
([k params query]
(rfe/href k params query)))
(def routes
["/"
[""
{:name :home
:view v/main-panel
:controllers [{:start (fn [& params] (js/console.log "Home"))
:stop (fn [& params] (js/console.log "Leaving Home"))}]}]
["posts"
{:name :posts
:view v/post-panel
:controllers [{:start (fn [& params] (js/console.log "Posts"))
:stop (fn [& params] (js/console.log "Leaving Posts"))}]}]])
(defn on-navigate [new-match]
(when new-match
(re-frame/dispatch [::e/navigated new-match])))
(def router
(rf/router
routes
{:data {:coercion rss/coercion}}))
(defn init-routes! []
(rfe/start!
router
on-navigate
{:use-fragment true}))
и мой events.cl js также следует их примеру:
(re-frame/reg-event-fx
::navigate
(fn [db [_ & route]]
{::navigate! route}))
(re-frame/reg-event-fx
::navigate!
(fn [route]
(apply rfe/push-state route)))
(re-frame/reg-event-db
::navigated
(fn [db [_ new-match]]
(let [old-match (:page db)
controllers (rfc/apply-controllers (:controllers old-match) new-match)]
(assoc db :page (assoc new-match :controllers controllers)))))
В моем views.cl js у меня есть лог c, чтобы изменить отображаемую страницу на основе словарной записи: page
(defn page []
(let [current @(rf/subscribe [::subs/page])]
[:div {:style {:justify-content :center}}
[navbar]
(case (:name (:data current))
:home [main-panel]
:posts [posts-panel]
[:div])]))
Маршрутизация работает, поэтому я могу pu sh вперед с моим веб-сайтом, но я бы хотел, чтобы конечный продукт не содержал "#" в URL-адресе при навигации по нему.
Что мне не хватает? Веб-разработчик для меня еще новичок, так что все предложения приветствуются.