RJS还是Javascript?

5

我以前在RoR项目中使用过RJS,感觉它的功能受到了很大的限制。然而,仅使用Javascript感觉不够优雅和专业。特别是当编写Javascript来操作Rails自动生成的变量名时,这种感觉尤为明显。最近博客圈似乎没有太多关于RJS的讨论。RJS在新的RoR项目中是否被使用,或者人们已经认为它不够有效?它是否仍在积极开发中并扩展其功能覆盖范围?我希望能对当前情况有一些了解。

那么,谁在使用RJS(它对你的工作效果如何),谁在使用Javascript?

5个回答

4

我喜欢使用RJS处理简单的任务,比如:

page["post_#{@post.id}"].replace :partial => @post
page["post_#{@post.id}"].highlight

是的,你可以直接使用link_to_remote函数来实现这个功能,但这样会让你的视图代码变得混乱不堪。或者在控制器中使用update_page方法来实现,但这样做很丑陋。而rjs则允许你编写更加清晰易懂、与任何javascript库无关的代码(因为有类似jrails之类的东西存在,或者你可以自己覆盖Rails的方法)。
如果你的应用程序需要一个非常复杂的javascript函数,那么最好还是自己编写javascript代码,因为到那时,你不想依赖于Rails提供的抽象层了。

4

我建议直接编写JavaScript。我认为,是的,RJS已经过时了。其中一个原因是流行的jQuery库。另一个原因是RJS的模型 - 它是javascript的ruby包装器,因此对于任何需要使用的javascript库,您都需要一个相应的ruby包装器库,这意味着有人需要做更多的工作(还有另一个你将依赖的gem)。此外,尽管发出请求并收到可执行的javascript的想法很好,但我认为有许多人不喜欢这种风格,或者至少认为它不适用于某些情况。我个人已经学习了JavaScript,并且非常喜欢它,我建议您也尝试一下。


这是我正在寻找的答案。是否有关于RJS未来的明确讨论可以供我参考?如果没有,为什么您觉得它已经过时了?我知道JS,这就是为什么我在考虑为我的下一个项目使用哪一个。我可以从技术和开发便利性方面弄清楚该使用哪个,但我担心RJS的整体未来。 - Ron Gejman

2
我假设您在提到RJS时是指RJS模板。这个概念的整体思路是生成JavaScript代码,在浏览器中用JS eval函数作为AJAX返回运行。您具体是如何“感觉非常受限制”呢?您可以在RJS文件中以多种方式混合使用Ruby和JS,它与其他ERB类型格式一样并不会更加约束。这是一种非常强大的方法,可以使AJAX调用不仅更新单个
元素(甚至可以更新两个
元素)。
我有一种感觉,您真正想问的是如何使用JavaScript/Prototype/Scriptaculous Helpers。是这样吗?

1
我同意Matt的观点。我认为RJS被认为正在逐渐被淘汰的原因是它会为Prototype库生成JS,除非你使用覆盖帮助方法的插件,而很多开发人员正在学习JQuery。如果你使用Prototype,完全忽略RJS是不明智的。 - Steve Graham

1

RJS从来没有被设计成JavaScript的完全替代品,你不应该根据博客圈里其他人在做什么来决定哪种工具适合你的工作。


不同意。如果人们对RJS不感兴趣,它就不会继续得到支持、开发、使用和普及。如果人们不再使用它,我宁愿不再投入时间来使用它。RJS社区是JS社区的一个子集,因此相比于JS,已经很难弄清楚如何在RJS中完成某些任务。如果RJS“过时了”,那么我可以想象这种情况会变得更糟。所以,是的,我想知道其他人正在做什么,他们把时间和精力放在哪里。 - Ron Gejman
我认为@NSD想表达的意思是,你不应该仅仅因为别人在使用某个特定技术,就选择使用它;然而,这并不排除由于其他人没有使用而不使用它的可能性。 - Justin Johnson
正确,但我问是为了找出人们是否不再使用它。 - Ron Gejman

1

个人而言,我不喜欢由助手生成的js,所以通常选择不使用它们。然而,在某些情况下,它们非常方便。

此外,如果你不是Prototype的粉丝,还有一个Jquery替代品Jrails

但是,我必须同意NSD的观点。为什么要让别人的做法最终引导你的道路呢?如果你不喜欢助手的工作方式或者它们不能满足你的项目需求,那就不要使用它们。或者如果它缺少某些功能,那就自己编写。也许在这个过程中,你可以激发一些兴趣。

至于“投资时间”,这是知识。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接