实在看不习惯 slim 的语法了,有没有现成的工具将 slim 转换回 erb 文件
同样不爽 slim。
Slim 本身带了转回 Erb 的功能
slimrb -e /path/to/template.slim > /path/to/template.erb
但这个转出来的 erb 基本也是不能读的。所以还是手工转吧。
Slim 在缩进超过 3 层之后可读性开始变差了,和 Haml,Sass 一个毛病。如果你要维持可读性的话,那么就需要把 HTML 控制在 3 层缩进以内,这对于开发者来说是个不小的负担,特别是你的样式需要多套几层的wrapper
和inner
之类的 Div 实现的时候。个人觉得有这功夫还不如去重构其他部分的代码。
我现在已经离不开 slim,上面大家遇到的所有问题,我刚开始使用的时候也是无法忍受,甚至争吵过。但后来,我发现,这货太节省我的时间了。它可能,不,肯定是对没使用过的人来说,很难维护;但是站在节约程序员时间这个角度来说,它真是太好了。想想看,你直接比其他平台的程序员,节约了至少 10% 的时间,你是不是开始偷着乐了,如果是 JS 模板,推荐 skim,它继承了 slim 的语法。这样前端和后端模板语法就都统一了。
我也不是很喜欢 Slim/Haml 这种缩进方式的。相比较于 Python 和 Coffee 来说,还是‘代码’,通过提炼重构可以控制单个方法的长度,但是页面模板就不是那么好弄了,你不可能每个模板都控制在几行以内,单个模板十几行,二十几那算是好的,这个情况下 Slim/Haml 这种读起来非常痛苦。
#5 楼 @xjz19901211 #6 楼 @outman
我在 3 个项目中都用过 Slim,项目的开发时间都超过一年。后来觉得这 Slim 真不能忍,像 @kenshin54 说的一个页面模版真的很难控制。举个 ruby-china 的例子,这里的 Top navbar 层级都到 5 层以上了,难道你会把一个就那么几行的 navbar 代码硬拆成几个文件?
我觉得对于页面逻辑这种,变化快变化多的部分,更新维护的次数远远超出你第一次写的次数。你第一次写的时候是爽了,但成本主要在后面维护部分,层级多了可读性极差。
@Saito 提到的快速编写 HTML Template,目前最好的还是 Emmet 这种 Generator 方案,第一次编写快速,后面好维护。
原来不止我一个人不喜欢 slim。还是 ERB 好,生成了什么一目了然。我也是用 SCSS 的语法,简单的文件 SASS 看起来清爽,但层级多了以后很乱。
@_kaichen 其实我们公司以及我自己的项目都使用 slim 了,其中公司的项目已经使用 2 年了吧,也算比较大的项目,要比 ruby-china 大,毕竟都是企业应用。我的感受是,这要看团队人员的接受程度,如果大家都觉得 slim 不靠谱,硬性引入,毕竟增加学习成本不说,还会引发不悦的情绪,因为我极力反对在团队项目里面使用各种不同的模板,比如你使用 erb,他使用 haml,还有一些人还使用 slim,这就比较混乱了。至于你说的层级的问题,说实话,我第一次接触 slim 就比较反对它的,觉得它不好(容易)看,还不容易维护,但是后来就慢慢习惯了,被它带来的优势吸引了,比如你不用再折腾各种 tag 了,添加输出也各种方便,在模板里面插入代码逻辑也各种方便,直到最后,我发现多层嵌套也不成问题了(这些 slim 就比 haml 做的彻底,估计这也是我当初不适应的地方,太 TM 彻底了不给你任何过度,你都怀疑是不是叛离了 HTML 的精神。如果是 python 党估计是各种欢乐),然后配合 partial template,感觉,即使多层也没有当初那么难受了。即使 使用 erb,难道多层就容易识别么?那么多的 html tag,还有各种输出控制符:<%= %>,代码控制标签等等。所以,我觉得,这个最终和团队的接受程度关系很大,毕竟习惯使然。
HAML/Slim hater +1024
编译出来的 HTML 不可控,发现问题不好调试,本身没有节约多少代码量,没有结束符造成大页面调试难度增加。
缩进不是问题,编译不是问题,问题就是有人不喜欢这种语法而已,就跟我不喜欢 spec 语法一样。
不然看看这个文件 https://github.com/ruby-china/ruby-china/blob/master/spec/javascripts/topics_spec.coffee
是不是缩进层次很深,很难看?
但是我觉得用 coffee 是个正确的选择,因为这些代码写成 javascript 会更长更难看。
我不觉得 silm 有什么节省时间的,反正我想的时间多于直接 code 的时间,一天 500 行代码的程序员就算高产了。 再说 rubymine 的代码提示难道不好用么?
Slim 感觉就是个大坑,项目做到一半,改回 erb,写了个脚本专门转 slim,有需要的 fork,https://github.com/qx/slimcleaner @johnnyhg