Прочитать Clojure for brave and true https://www.braveclojure.com/ Сделать все задачки с 4clojure http://www.4clojure.com/ Опционально прочитать Web Development with Clojure Дмитрия Сотникова https://pragprog.com/book/dswdcloj2/web-development-with-clojure-second-edition Очень не помешает посмотреть толки Ричарда Хикки https://changelog.com/posts/rich-hickeys-greatest-hits
Провожу сейчас инспекцию фронтэнд-кода, пришел к выводу, что re-frame - это зло. Если людям давать возможность срезать угол, положив стейт в базу - они так и будут делать к месту и не к месту. В итоге у нас половина компонентов прибита гвоздями к app-db и их невозможно переиспользовать. Пример из сегодняшнего: есть форма, данные формы хранятся в базе, есть эвент, который делает валидацию формы, никаких параметров не принимает, идет сам ищет форму в базе, валидирует и туда же рядом в базу кладет результаты валидации. Из-за этого переиспользовать ее затруднительно.
Можно было то же самое сделать, сложив стейт в атом внутри hiccup компонента формы и повесив на этот атом watcher в котором производилась бы валидация и генерация сообщений об ошибках, которые складывались бы в другой атом внутри формы, но увы.
А случилось так потому, что взяли люминус, где уже re-frame был прикручен изначально, кинулись изучать re-frame и стали все делать через базу, вместо того чтобы побольше внимания уделить возможностям Reagent. А вновь приходящие бойцы смотрели уже существующий код и делали так же как там.
Вообщем смысл этого ранта в том, что прежде чем тащить в проект красивый блестящий re-frame - подумайте нельзя ли того же достичь реагентом и заранее ограничьте то, что будет класться в базу.
ИМХО, проблема в недостаточном опыте работы с технологией и понимании архитектурных подходов
то же самое и в JS происходит
Да, к сожалению даже самые крутые фреймворки опыт не заменят.
вы бы колхоз и без рефрейма нахачили бы. на глобальных атомах вместо базы, например.
В большинстве мест - скорее всего да. А какие подводные камни у такого решения?
Кажись, фронтэнд обречён, если даже clojurescript не помогает :troll: