Clojure China

使用 Garden 写 CSS 有什么好处?

clojure
#1

一直用 clj(s) 写程序, 就差 css 没有用 clojure 了, 有谁在实际项目中使用过
garden 吗? 体验如何, 有什么好处?

#2

感觉跟 hiccup => HTML 的情况差不多。使用 hiccup/garden 就是在写 Clojure 代码,所以 Clojure 的功能都可以用。
对于 hiccup,使用 for, 函数参数和调用比其他模版工具要灵活很多。
对于 garden,定义常量(例如按钮颜色值)和 garden 提供的一些工具是纯 CSS 做不到的,但是像 SASS, LESS 这些 CSS 预处理器可以做到。
garden 对于一般的 Web 设计师和前端开发者应该不那么容易接受,用基于 Node.js 的工具可能更亲切。如果熟悉 Clojure 我觉得完全可以用,只要你能驾驭的了(能说服自己和其他团队成员花时间和精力熟悉用法) :smile:

#3

我的意思就是他跟 sass, stylus 之类的比较, 而不是 css 本身。
我唯一可以想到的好处就是, (margin-right 42) 给我自动生成一个 margin-right-42 的class。

#4

感觉garden不如less等预处理器清晰(重点是:原本熟悉的css语法,在garden中又要从头学一遍,视觉上也没有less那样有熟悉感)。
另外,可以关注一下https://github.com/mhallin/forest,基于css module,有效解决命名冲突问题。不过有些css特性不支持,例如 :active :disabled :hover等,所以应该更适合一些补充性的场景(所谓补充性的场景示例:以bootstrap css为主,局部样式以forest补充)。

#5

没什么区别,预处理支持的,garden都可以做到,唯一的缺憾是文档不够详细

#6

可以使用高阶函数,从一些比较抽象的角度来写css。

我觉得语法本身不是关键,sexp倒不比css写着简洁。

(comp (正文版面)
           (横版布局)
           (图片嵌入 :style :环绕))

(defn 正文版面 [options]
  (fn [next-step]
    (fn [style]
       )))