题
在你的专业经验,拥有的 HAML 的和的上海社会科学院的证明是有用的?以何种方式?
解决方案
Haml的是不错的,我用了很多,但萨斯是值得的孤独,特别是如果你要建立复杂的样式表。例如,关于CSS的最糟糕的事情之一就是你有多少冗余命名选择什么时候做。在CSS中,你所要做的
#navbar ul
#navbar ul li a
#navbar ul li a:hover
使用萨斯,可以简单巢这些decendants自然。
#navbar
ul
margin: 0
padding: 0
list-style: none
width: 100%
li
margin: 0
float: left
margin-right: 10px
border: 1px solid #000
a
text-decoration: none
&:hover
color: red
您也可以使用变量
!border_color = #333
.box
border = 1px "solid" !border_color
您还可以使用数学与他们
!measure = 18px
!text_size = !measure / 1.5
body
font-size = !text_size
line-height = !measure
h1
font-size = !measure
margin-bottom = !measure
h2
font-size = !measure + 2
#wrapper
width = !measure * 50
您还可以共享代码
=rounded
-moz-border-radius: 4px
-webkit-border-radius: 4px
border-radius: 4px
border: 1px solid #000
.box
+rounded
有在这,你应该为自己去学习它这么大的权力。加,最终的结果是显而易见的CSS,因此它可以被转换。
不要忘记css2sass它转换现有的CSS SASS文件!
您可以用一些例子在 http://rendera.heroku.com/ 如果你愿意玩喜欢。这是我建帮人学习HTML5和CSS3和我有两个HAML和SASS有支持的站点。
此外,采取一个惊人的方式做HAML和SASS静态网站的工作看看StaticMatic(staticmatic.rubyforge.org)。它生成的网站,你可以上传到静态的主机和具有on Rails的类似Ruby的布局和模板系统。
要解决,你问直接的问题,通过的方式“值得吗”,答案是肯定的。如果能够通过选择通过模块使用变量,容易组的东西,共享代码,使复杂的样式表容易得多。构建样式表并不需要很长时间,在所有的,你可以使用优秀的指南针框架走得更远。例如,你可以使用960.gs或蓝图模块,这些框架混合到现有的样式表。这样,您就不必更改代码的标记。添加960.gs和它的“grid_12”和“container_12”班所有的标记可能是不可能的,但指南针和萨斯这是一件轻而易举的事。
萨斯也可以更容易地具有多个样式表的发展模式和生成用于生产一个样式表,从而提高客户端的性能(在网页加载服务器少的呼叫。)
HAML都有自己的好处,尽管它们没有萨斯那样明显。 HAML并使它非常容易筑巢的元素,并宣布DIVS ......甚至使用例如定期960.gs很容易与HAML:
#header.container_12
.grid_12
%h1 Welcome!
#middle.container_12
.grid_8
%h2 Main content
.grid_4
%h3 Sidebar
少得多的打字。如果你决定你需要添加的包装上所有的,由于某种原因,只是缩进一个新的标签下的整个事情。
希望有所帮助。 I <3克萨斯。
其他提示
我现在的网站已超过800 Haml的文件和150页萨斯的文件,并让我告诉你,它帮助我的发展极大。
最大的实惠正处于快速发展的方面:创建Haml的/萨斯文件需要少得多的类型,所以您可以钉你的表现逻辑比,如果你正在做ERB模板按键少得多
我也发现Haml的文件更容易阅读,并减少错误。
YMMV,但我已达到不使用Haml的感觉就像烦琐的点。
TL; DR - 当普遍,我不喜欢使用HAML或SASS,但我喜欢SCSS
。看来在HAML普遍的共识是压倒性地支持它,但我个人不喜欢它。
如果我的目的是要生成HTML,那么我更喜欢的模板语言来尽可能接近HTML越好。这避免了具有学习间接另一层这增加了混淆和错误的机会以及招致认知开销。
我觉得这是繁重的上是为了可读性和换行我的优选的用途的空白HAML场所的约束和常常导致一种语法,可以是难以阅读。
最近我遇到一个HAML模板一个微妙的错误,如果模板是ERB那会是立竿见影,例如:
.table
.thead
.tr
.tr
在表中的行是不的THEAD标记,它是完全有效HAML,但不正确的相对于预期的HTML结构内。虽然页面看起来正确渲染,CSS选择器失败了,这就造成了一些JavaScript代码无声的故障。
我敢肯定,这类型的错误将是显而易见的大多数HAML用户,如图隔离,但在更大的模板的情况下,它可以是很难被发现;特别是对于新HAML显影剂。
在另一方面,如果这是ERB或HTML:
<table>
<thead>
<tr>...</tr>
<tr>...</tr>
要我的眼睛,在结构上的错误是很容易被发现,由于该局及HTML的方式几乎总是缩进。
在花了近二十年的编写HTML,我必须承认,我有一定的自豪感写很好的HTML,我看不出有任何理由要学会代表它和学习都发现错误所需要的新的视觉模式的不同方式
在另一方面,我非常喜欢SCSS(相对于SASS),因为SCSS基本上是CSS的超集。它不添加一个间接全新的层,我需要翻译过来。我觉得这非常容易阅读和理解它增加了在语法,CSS提供了更为简洁的(和DRY)表示只有小的改变。
事实上,我不喜欢用它来强制执行关于应该怎么缩进或线缠上了我的代码,比如Python一个严格的语法任何语言。或仅作为一个间接层上的底层语言的顶部如CoffeeScript的语言。
我并不是说,我认为抽象和间接不好的编程语言;只是我不喜欢他们对于这里讨论具体的语言使用。