Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RJS邪恶吗?为什么?_Javascript_Ruby On Rails_Rjs - Fatal编程技术网

Javascript RJS邪恶吗?为什么?

Javascript RJS邪恶吗?为什么?,javascript,ruby-on-rails,rjs,Javascript,Ruby On Rails,Rjs,我听到一群rails开发者说RJS是邪恶的。我从来没有使用过它,因为我总是使用经典的javascript或jquery来实现我想要的,所以我没有注意。现在我进入一些遗留代码,到处都是RJ 所以。。。这是真的吗?使用RJ的缺点/优点是什么 考虑到我在Rails项目中用JQuery替换了原型库,我发现RJ非常有用。现在,将JavaScript传递回要执行的服务器并不完全是主流,这有时会让人感到痛苦 但是,我没有发现它与RJS的一般问题。我唯一的抱怨是,我通常不得不将RJS和普通的旧Javascrip

我听到一群rails开发者说RJS是邪恶的。我从来没有使用过它,因为我总是使用经典的javascript或jquery来实现我想要的,所以我没有注意。现在我进入一些遗留代码,到处都是RJ


所以。。。这是真的吗?使用RJ的缺点/优点是什么

考虑到我在Rails项目中用JQuery替换了原型库,我发现RJ非常有用。现在,将JavaScript传递回要执行的服务器并不完全是主流,这有时会让人感到痛苦


但是,我没有发现它与RJS的一般问题。我唯一的抱怨是,我通常不得不将RJS和普通的旧Javascript混合到我的.RJS文件中,所以这有点毫无意义。但它确实为您提供了一个干净的地方/方法来处理Javascript效果和AJAX调用,因此我认为作为“放置代码的标准地方”,它非常好。

我不知道我是否会说不好,但RJS(或任何生成JS的服务器端语言)不是我的第一选择。我更喜欢手写JS。有了jQuery,我真的很喜欢编写JS,并将我的JS保存在application.JS中,感觉很干净


要扩展一点。。。我认为RJ是一种不必要的抽象。我想知道JavaScript和jQuery。我想知道如何操作DOM以及如何进行AJAX调用。有了我的JS/jQuery知识,我可以很容易地使用它,不必怀疑这个框架是否能为我处理JS。

RJS很好,主要是因为它很容易集成到Rails项目中。为了使事情更简单并保持低文件数,您可以将其嵌入控制器中,并且它有许多来自prototype/scriptaculous库的易于使用的帮助程序。感觉更像红宝石

这并不意味着它与您的普通Rails代码分离得很干净,因为它很快就与您的其他代码混合在一起了。它还需要通过prototype和scriptaculous js文件包含更多的外部库

jQuery的一些内容非常干净。语法非常疯狂,但这意味着您可以将js完全从页面/控制器(不引人注目的js)中拉出来,这是一种更干净/划分的方式


此外,jQuery看起来像javascript。所以你不会得到javascript和Ruby代码的奇怪混合。我喜欢Ruby。我不喜欢Javascript。但我更不喜欢两者的混合。如果你知道JS,你会觉得它很熟悉


Ryan Bates有一个关于将RJS转换为jQuery的屏幕广播。可能会让你很好地了解这两种语言在语法上的区别:

在讨论RJS是否邪恶之前,让我们先谈谈RJS是什么

RJS对ActiveRecord为SQL提供的高功能Javascript库应用相同的抽象级别。然而,RJS对Javascript库的覆盖远没有ActiveRecord对SQL适配器的覆盖那么全面

Rails仅为Prototype/Script.aculo.us提供RJS支持。但是,有一些插件可以使用或正在开发中,以支持其他Javascript库。例如,JRails重写了基于原型的帮助程序以使用jQuery。mootools和Dojo也有类似的插件


人们认为RJS是邪恶的,通常是那些不喜欢它产生原型代码的人,或者那些认为他们可以用原始JavaScript实现更容易的人。 RJS不是完美的,就像ActiveRecord不是完美的一样,有时候你不得不写原始Javascript或SQL来完成你的工作。同样,与ActiveRecord一样,使用高级选项越舒适,无需编写原始代码即可完成的任务就越多

RJS的一个奇妙之处在于,它们本质上是视图,可以生成Javascript。很容易将RJ提取到可以根据需要包含的部分中,作为对控制器的响应或作为页面中包含的自定义Javascript函数的一部分。这使得代码更加枯燥,从而简化了维护


就我个人而言,我经常使用RJ。我发现它是一次接触大量DOM元素的完美方式。它带来了双重好处,允许我创建AJAX丰富的站点,而无需编写太多Javascript。我讨厌写Javascript

如果您不熟悉JS(或类似Prototype的框架),但需要AJAX功能,RJS是最好的方法。使用RJS的另一个优点是速度快。轻松快速地编写RJS代码

我以前在所有Rails项目中都使用RJ。现在我更熟悉Prototype(和jQuery),这就是我现在编写JS代码的原因。我需要这个,因为有很多RJ的控制器失去了它的生产力。将RJS代码迁移到JS是扩展控制器的第一步

没有人能对你说绝对的,什么是最好的方式-使用或不使用RJ。每个人都应该选择自己的方式

例如,我更喜欢在我的应用程序的管理部分使用RJS(无需缩放任何内容),并为前端部分编写JS。

RJS不是“邪恶的”,但我认为它有两个问题:

  • 很难(不可能?)用RJS编写不引人注目的JavaScript。如果您正在编写大量使用Javascript的应用程序,并且有很多逻辑,并且这些逻辑发生了变化,那么您将不得不更改相当多的文件,而不是仅更改一个文件。而且,这是个人偏好,看到标签上布满了压缩的Javascript,这是相当难看的

  • RJS抽象了Javascript,这可能导致对语言的无知。RJS背后的想法是让开发人员能够使用一种语言(Ruby)编写web应用程序的所有内容(除了设计人员可能会处理的HTML和CSS),但实际上这与通过拖放创建ASP.NET应用程序是可能的,但不推荐的