Size: a a a

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

2020 February 09

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
я описываю статично

(defcss my-style
{:color “red”
:font-size 14})
ну, в принципе ты можешь написать макрос, который разберёт мапку и интеропом слепит js object
при условии, что мапка эта будет инлайновая
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ну не нужен тебе тут компайл тайм
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
и кстати, этот интероп не быстрый
> Note that js->clj is not optimized for speed and the transit.cljs library is recommended for parsing large amounts of JSON data.
https://cljs.github.io/api/cljs.core/js-GTclj
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
оптимизация. я не хочу делать не нужные трансформации в рантайме
Может быть, попробовать вот это https://cljs.github.io/api/syntax/js-literal?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
если аргументы меняются — макрос не поможет, если нет - мемоизация, в лиспе макросы не для того. для чего дрочат в компайл тайм в плюсах
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну, в принципе ты можешь написать макрос, который разберёт мапку и интеропом слепит js object
при условии, что мапка эта будет инлайновая
нее, я так извращаться не буду
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
я описываю статично

(defcss my-style
{:color “red”
:font-size 14})
да, кстати #js {...}
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
нее, я так извращаться не буду
ну ты уже извращаешься 😊
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Ещё можно попробовать self-hosted clojurescript.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
да, кстати #js {...}
а макросом можно автоматизировать подстановку литерала — если сунули мапку — добавить #js
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Vyacheslav Mikushev
Ещё можно попробовать self-hosted clojurescript.
думал об этом. нужно где-то початать может ли это работать
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
странно что макросы в cljs не настоящие
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Не получится, #js - это reader-макрос, который выполняется до раскрытия обычных макросов.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
например:

(defmacro defcss
 [sym css]
  `(def ~sym
       (-> ~css
           cljs.core/clj->js
           emotion/create-css))


здесь я написал макрос для интеропа с emotion (styled components), который генерирует css стили. В этот макрос я передаю clojure map, но в emotion (это js либа) мне нужно передать js объект. Так вот, я бы хотел сделать это cljs.core/clj->js в компайл лайме, а не рантайме
то есть проверить, что (map? css), и добавить #js вместо вызова cljs.core/clj->js
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Vyacheslav Mikushev
Не получится, #js - это reader-макрос, который выполняется до раскрытия обычных макросов.
и этот не получится?
https://cljs.github.io/api/cljs.core/js-obj
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
оптимизировать надо тогда, когда не хватает производительности
Кстати, по поводу этого. Я тут солидарен с Тонским https://tonsky.me/blog/performance-first/
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
тогда можно писать вебстранички на ассемблере, лол
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
> For example, JavaScript has seen impressive speed improvements over the years, but it still can’t be made as fast as C++ or even Java.

лооол, ну пусть покроет потребности веба на C++ или хотя бы на джаве
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Он тут больше про раст торит я думаю
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
а что не так с растом?
источник