以前看到过别人写文说前台页面少用如 link_to,image_tag 等这样的 helper,因为它们的实现很慢,会影响整个页面的 render。 但是如果不用 link_to 这类 tag 的话,感觉页面就写的很不 rails,风格上差异很大,而且写起来也不爽,又需要写一堆的 html。 这些个 helper 到底是用还是不用呢?或者就干脆用 haml 或者 slim?
不觉得 helper 特别慢,过去 link_to 被人诟病的原因是 rails2 的 route 性能不高,现在 rails3 不知道如何,我是尽量使用 helper 的
同问~~
@fsword 我也是一直尽量使用 helper。
首先 link_to 这类 rails 方法 肯定是没有直接写 标签来的快的。但是运行速度上影响不大,但是开发效率上大大增强。RoR 的一个很大优势就是在于 开发速度快,维护性好。helper 方法 帮助你在页面上渲染。开发上得到的好处弥补了运行速度的劣势。另外你说的有个误区,haml 是比 普通 erb 渲染更慢的,它页面的渲染 仍然是在 ruby 的基础上执行的。但是 haml 语法上比 erb 更简洁。slim 没用过。
我觉得如果你非要纠结这些速度上的问题的话,那就用 html 标签写代码试试吧。
弱弱的问一下楼主当前的项目在使用 helper method 上遇到瓶颈了嘛?
@lgn21st 木有,木有。。纯属强迫症。。
不慢,从 ruby-china 的使用来看,这些 Helper 不是问题
第一,在性能未出现问题的时候,就考虑优化,是一个坏习惯,叫做“过早优化”。 第二,不管是 erb 还是 haml,link_to 都依然是 helper 方法,没有区别。 第三,常见性能的问题,主要集中在 IO 上。
UrlHelper 不是瓶颈
用 helper 还有个好处是测试的时候可以提早发现问题
“还有个好处是测试的时候可以提早发现问题"
@Rei 此话怎讲?
#10 楼 @psvr 比如路由改了,点开一个页面,原先的 url_helper 抛错,就知道页面该改了。
某老项目到处是奇葩的字符串 url 拼接,全靠 grep 来查,结果还是时不时被产品报 bug:链接 404 了
#11 楼 @Rei 谢谢,很有道理。突然发现我们两个人都拿着枪指向观众 XD
http://blog.xdite.net/posts/2012/01/15/how-to-design-helper-3/
今天寫了這一篇 Helper AntiPatterns