Fork me on GitHub
#clojure-russia
<
2016-10-03
>
kuzmin_m08:10:44

Привет! Написал статью на хабр "Организация роутинга в clojure веб-приложении" https://habrahabr.ru/post/311500/ Что скажите?

misha08:10:07

> Мне не хватает REST и понятия "ресурс". REST is so 2015 kappa

kuzmin_m08:10:23

какие альтернативы?

misha08:10:57

слишком много неявного у тебя там в роутах и ресурсах

misha08:10:25

много wtf per loc

kuzmin_m08:10:49

ты про код библиотеки или про dsl?

misha08:10:33

сниппеты в статье

misha08:10:05

(request-for :show [:pages] {:page-id "1"}) ;; returns {:uri "/pages/1", :request-method :get}
тут еще ладно, можно догадаться что получится

misha08:10:49

а тут вроде то же самое:

(request-for :index [:pages :comments] {:page-id "some-id"}) ;; #=> {:uri "/pages/some-id/comments", :request-method :get}
но откуда я знаю, что :page-id между [:pages :comments] окажется? и вообще как :page-id с :pages связано?

misha09:10:25

через символ 'page-id?

kuzmin_m09:10:36

Это 2 ресурса, pages и comments. Комменты вложены в страницы. Это видно по порядку в scope: [:pages :commets]. > но откуда я знаю, что :page-id между [:pages :comments] окажется? это id ресурса: pages/ID/comments Как я понял это вопрос возник, т.к. я рассчитываю на подход соглашения вместо конфигурации. Вместо того, что бы полностью описывать схему url, есть абстракция resources, которая ведет себя определенным образом.

kuzmin_m09:10:57

> через символ 'page-id? в аргументах - да

misha09:10:29

ну я с этой абстракцией не знаком, если что ) ну и классика: Explicit is better than implicit.

kuzmin_m09:10:23

>ну я с этой абстракцией не знаком, если что ) ничего страшного) я привел там ссылку на рельсовый гайд. >ну и классика: Explicit is better than implicit. это не про то. ты же не расписываешь каждый раз как доставать элемент с вершины стека, всегда пользуемся методом/функцией pop это про абстракцию

misha09:10:19

мне что-то не особо охота в рельсовый гайд смотреть девелопя кложа апп kappa

kuzmin_m09:10:22

есть такое 😃 в рельсах очень много чего сделано "easy", в отличие от clojure, где "simple"

misha09:10:29

ну как бы дада, но всё равно мимо меня, кароче

kuzmin_m09:10:42

но нужно смотреть по сторонам и брать хорошие идеи

kuzmin_m09:10:50

@misha спасибо за комментарии)

andre10:10:49

зарелизил 0.2.0 с дебагом в отдельном окне браузера

savelichalex10:10:35

@andre ждем time travelling?)

andre10:10:50

ага, в 0.2.1

andre10:10:14

вроде там все просто

andre10:10:38

но интерсепторы свои писать придется, не получится встроиться глобально

andre10:10:59

это будет удобно тем ,кто уже пользуется и у кого встроены интерсепторы, просто появится удобная навигация

savelichalex10:10:14

а там на [email protected] завязано?

maxim13:10:18

@kuzmin_m: мне кажется, твоя библиотека не упрощает, а усложняет. А ещё есть juxt/bidi для bidirectional routing

maxim13:10:28

Вот так вот с ходу не понять, что происходит, пока не прочитаешь документацию. Easy да, но не simple. В то время как compojure, например, можно и без документации понять.

kuzmin_m13:10:16

@mkaschenko я решал 2 проблемы 1) организация и упорядочивание кода 2) обратный роутинг: получение запроса по имени, скоупу и параметрам для себя я их решил и хочу получить обратную связь, другое мнение >твоя библиотека не упрощает, а усложняет она добавляет абстракцию, вместо url, она позволяет оперировать ресурсами есть еще такой момент, что этот подход навеян rails, их можно не любить, но имхо у них лучший роутинг, который я видел.

ilshad14:10:26

@kuzmin_m re:darkleaf/router - с почином!