为什么好多 rails 项目的 html 采用 slim,例如https://github.com/peatio/peatio/tree/master/app/views/identities
slim 能很大的加快开发速度 而且生成 html 的速度不亚于 erb 并且可以让生成的 html 中去掉空格 减少传输大小同时照顾了 IE 用户
Slim 的优点:
#7 楼 @zj0713001 习惯问题吧...不过说真的个人不认为这段代码可读性比 html 高
codecampo
#navbar.collapse.navbar-collapse ul.nav.navbar-nav li class=('active' if controller_name == 'users') a href=admin_users_path = t '.users' li class=('active' if controller_name == 'categories') a href=admin_categories_path = t '.categories' li class=('active' if controller_name == 'topics') a href=admin_topics_path = t '.topics' li class=('active' if controller_name == 'comments') a href=admin_comments_path = t '.comments' li class=('active' if controller_name == 'attachments') a href=admin_attachments_path = t '.attachments'
我们的项目已经使用了 400 多个 Slim 文件,目前 Ruby、CSS、JavaScript 开发均感觉良好。跟 @allenfantasy 一样是 ERB / Haml / Slim 逐渐升上来的,切换毫无压力。
#9 楼 @saiga 这种模块化的东西重构一下放到 partial 里就容易看多了,不然即使用 erb 来写一样很难开
render 'admins/navbar'
app/views/admins/_navbar.slim
#navbar.collapse.navbar-collapse
ul.nav.navbar-nav
- %w(users categories topics comments attachments).each do |c|
li class=('active' if controller_name == c)
a href=send(:"admin_#{c}_path")
= t ".#{c}"
还可以写成这样。
#navbar.collapse.navbar-collapse
ul.nav.navbar-nav
li class=('active' if controller_name == 'users')
a href=admin_users_path = t('.users')
li class=('active' if controller_name == 'categories')
a href=admin_categories_path = t('.categories')
li class=('active' if controller_name == 'topics')
a href=admin_topics_path = t('.topics')
li class=('active' if controller_name == 'comments')
a href=admin_comments_path = t('.comments')
li class=('active' if controller_name == 'attachments')
a href=admin_attachments_path = t('.attachments')