Как лучше отправлять разметку в браузер: edn или #js объектами

35 views
Skip to first unread message

bushu

unread,
Dec 29, 2015, 4:36:36 AM12/29/15
to Clojure Russian
Привет всем!

Делаю обертку над mithril.js. Взал за основу Crate и переделал его немножко, чтобы на выходе из такого
[:a {:href "http://google.com"} "test"]
выдавал
{tag: "a", attrs: {href: "http://google.com"}, children: "test"}
т.е. объект, который уже можно скормить mithril.js и это даже работает:

(def demo
  #js {:controller (fn [x] (println "Hey, I'm controller"))
       :view (fn [x] (m/html [:p#my-name.inner-item {:style "margin-top: 10px"} "Hello"]))})

(.mount js/m (.getElementById js/document "app") demo)


Возник следующий вопрос, как лучше вставлять разметку в итоговый скомпиленный js файл:

так mithril.html.call(null,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"p#my-name.inner-item","p#my-name.inner-item",490290203),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"style","style",-496642736),"margin-top: 10px"], null),"Hello"], null));

или так #js [#js {:tag p, :attrs #js {:id my-name, :class inner-item, :style margin-top: 10px}, :children #js [Hello]}]

Если вариант с #js лучше, то насколько трудно будет написать макрос?
Reply all
Reply to author
Forward
0 new messages