2016-01-06 94 views
0

我想要更多的信息和具体案例在Rails应用程序中JS.ERB有多糟糕。JS.ERB为何如此糟糕?

我有什么心事:

  1. 缺乏灵活性
  2. 复杂
  3. 混合的JavaScript +红宝石(可能+ HTML)代码
+0

我认为这很棒,尤其是对于构建可以使用或不使用js的应用程序,以及最少的重复。可以访问所有的对象和部分,而不会让生活变得更容易。 –

回答

3

关于这个最糟糕的事情是,JavaScript的应该是客户端语言,建立它的服务器端似乎至少尴尬。

除此之外,你会得到,如果你无法预编译的资产主要的性能命中 - 为JavaScript文件中的生产服务器通过你的Rails应用程序去正确渲染ERB每个请求。 (如果.js.erb文件依赖于变量,请求相关值)。如果您避免使用js.erb文件并且仅包含.js文件,那么这些文件是完全静态的,并且可以直接由服务器提供服务,而不需要接触任何应用程序。

自然有一些例外 - 我个人允许自己使用erbized JavaScript文件,以避免硬编码的网址或其他应用程序的常量。对我而言,经验法则是 - 如果erbization不能阻止你进行预编译,并且会使你的代码更干净和更有弹性,那就去做吧。

当然也有一些理由不这样做上述以及 - 在理想的世界我爱我的服务器端应用程序是由另一个,纯静态JS应用程序使用纯API。使用erbized javascript是一个额外的障碍,因为当你的应用程序变得太多时,你的应用程序会分裂成一半。

+0

不只是尴尬。动态JavaScript被认为是安全弱点的根源。 –

-1

警告 - 高度关注的答案。版主可能会删除!

我完全同意我的看法,事实上我对此有点坚持,并且一直在使用react.rb将我们所有的观点变为直接的ruby,没有JS,ERB。

我的具体原因超出了你提到的是这样的:它需要不断地在不同语言之间转移精神力量是巨大的,主要采取由开发者理所当然的。我们只是没有注意到它采取了多少能量。换句话说,我们已经变得像一盆水中的青蛙,而且我们一直使用所有这些语言和子语言(我们在一个站点中使用5种不同的语言编程)编程的生活更加复杂,而当您习惯它时,一旦您停下来,坚持一种语言(在我们的例子中是红宝石),你只是说whe!

虽然我没有具体的研究来证明这一点,我认为它只是多任务的形式,其为已知的邪恶。即https://www.psychologytoday.com/blog/brain-wise/201209/the-true-cost-multi-tasking

+1

我不得不说,我同意BroiSatse在他的回答中提到的例外。我们确实在这种有限的情况下使用了erb,但实际上我们只是扩展了ruby,增加了<% ... %>语法。 –

1

js.erb是生成的JavaScript和Ruby,是吗?对我而言,这具有代码生成的明显“代码味道”。每当有人诉诸使用一种(比较熟悉的)语言来生成另一种(不太熟悉的)语言时,我会质疑生成的代码的质量。在这种情况下,JavaScript大师可能会查看生成的代码并且正在思考“WTF ?,为什么有人会这样做?”。有可能会有很多工作,但不是经验丰富的JavaScript开发人员如何做到这一点。这可能会导致性能问题,可维护性问题,以及简单的错误代码。

只是我的意见。

+0

linuxdan - 不,不会发生什么,整体代码文件是JavaScript,但它已经混合了一小部分控制javascript代的ruby。例如,你可能有一个ruby循环遍历数据库中的项目,产生一些内联的json常量。 –

+1

这就是我所说的代码生成。 – linuxdan

+2

“每当有人诉诸使用一种(更熟悉的)语言来生成另一种(不太熟悉的)语言时,我会质疑生成的代码的质量。”你的意思是像使用ORM来编写SQL?或者说一个C++编译器来编写汇编器?或者也许CoffeeScript/TypeScript来编写JavaScript? –