Size: a a a

Clojure — русскоговорящее сообщество

2020 January 28

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
зачем из about -handler'a передавать hashmap? а если я хочу просто вернуть hiccup-разметку.
ну тут ты уже сам придумываешь апи между своими about-handler и routing-handler
как тебе нравится, так и делаешь
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну тут ты уже сам придумываешь апи между своими about-handler и routing-handler
как тебе нравится, так и делаешь
ринг тебе задаёт рамки для routing-handler
а что получает и возвращает about-handler — это полностью твоё личное дело
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Спасибо за разъяснения и помощь
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
нет
(def routing-map {"/" {:handler home-handler :content-type "text/html"}
                 "/about" {:handler about-handler}})
а в таком виде будет совсем декларативное описание роутинга
(def routing-map {"/" {:handler :handler/home :content-type "text/html"}
                 "/about" {:handler :handler/about}})
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Что за магия
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
Что за магия
ну это если будет добавлена логика :handler/about → about-handler
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
Что за магия
забей, а то сейчас ещё на час обсуждений начнётся 😊
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
))))
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
ну как же забить-то) я уже забивал несколько раз) надо разбираться)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
ну как же забить-то) я уже забивал несколько раз) надо разбираться)
если ты в routing-map ссылаешься прямо на функцию, то тебе для её формирования надо импортировать все файлы с этими функциями
а если ты ссылаешься по неким идентификаторам, то логика перехода от идентификатора к конкретной функции может быть в другом месте, и сделана, например, через мультиметоды
считается, что описание роутинга чистыми данными — более правильно 😊
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Sergey Trofimov
если ты в routing-map ссылаешься прямо на функцию, то тебе для её формирования надо импортировать все файлы с этими функциями
а если ты ссылаешься по неким идентификаторам, то логика перехода от идентификатора к конкретной функции может быть в другом месте, и сделана, например, через мультиметоды
считается, что описание роутинга чистыми данными — более правильно 😊
ты сейчас как демона изгнал)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
если ты в routing-map ссылаешься прямо на функцию, то тебе для её формирования надо импортировать все файлы с этими функциями
а если ты ссылаешься по неким идентификаторам, то логика перехода от идентификатора к конкретной функции может быть в другом месте, и сделана, например, через мультиметоды
считается, что описание роутинга чистыми данными — более правильно 😊
но в твоём конкретном случае это может быть ненужное усложнение, поэтому я и предложил забить
если увидишь, что код стал слишком развесистым, сможешь вернуться к этому вопросу
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
ну как же забить-то) я уже забивал несколько раз) надо разбираться)
вот reitit объявляет это как преимущество — data-driven router  https://github.com/metosin/reitit
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
нет
(def routing-map {"/" {:handler home-handler :content-type "text/html"}
                 "/about" {:handler about-handler}})
а в таком виде это в compojure делается (прямая связь с функцией), если я ничего не путаю
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
то есть задача роутинга простая, но все борются за скорость, универсальность и удобство описания
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей и ещё принято учитывать метод (GET/POST/...), и тогда получится что-то вроде
(def routing-map {["GET" "/"] {:handler home-handler :content-type "text/html"}
                 ["GET" "/about"] {:handler about-handler}})
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
ты сейчас как демона изгнал)
призвал 😊
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а в таком виде будет совсем декларативное описание роутинга
(def routing-map {"/" {:handler :handler/home :content-type "text/html"}
                 "/about" {:handler :handler/about}})
Сергей и ещё при таком описании проще решать обратную задачу: получение урла для заданного роута (get-url :handler/about data)
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
кто нибудь вообще файрплейсом пользуется?
источник