我想了解更多信息和具体案例,在Rails应用程序中JS.ERB有多糟糕。
我有一些想法:
答案 0 :(得分:3)
最糟糕的是,javascript应该是客户端语言,而构建服务器端似乎至少很尴尬。
除此之外,如果您无法预编译资产,您将获得重大的性能影响 - 生产服务器中的每个javascript文件请求都必须通过您的rails应用程序才能正确呈现erb。 (如果.js.erb文件依赖于变量,则请求相关值)。如果您避免使用js.erb文件且只有.js文件,那么这些文件是完全静态的,可以由服务器直接提供,而不会触及您的应用程序。
自然有几个例外 - 我个人允许自己使用erbized javascript文件来避免硬编码网址或其他应用程序常量。对我来说,经验法则是 - 如果erbization不会阻止你进行预编译并使你的代码更清晰,更有弹性,那就去吧。
当然,有一些原因不能完成上述操作 - 在理想的世界中,我希望我的服务器端应用程序是另一个纯静态js应用程序所使用的纯API。使用erbized javascript是一个额外的障碍,当你的应用程序增长太多时,将你的应用程序分成两半。
答案 1 :(得分:1)
js.erb是使用ruby生成javascript,对吗?对我来说,这有一个明显的代码味道"代码生成。每当有人使用一种(更熟悉的)语言生成另一种(不太熟悉的)语言时,我会质疑生成的代码的质量。在这种情况下,一个javascript大师可能看起来是生成的代码并且正在思考" WTF?,为什么有人会__这样做?"。可能会有很多有用的东西,但不是经验丰富的JavaScript开发人员会如何做到这一点。这可能会导致性能问题,可维护性问题以及简单的错误代码。
只是我的意见。
答案 2 :(得分:0)
警告 - 高度意见的回答。版主可能会删除!
我不能同意,实际上我对此有点担心,并且一直使用react.rb将我们所有的观点都直接用于红宝石,没有JS,ERB。< / p>
我提出的具体原因是:不同语言之间不断转换所需的智力是巨大的,并且在很大程度上被开发人员视为理所当然。我们只是没注意到它需要多少能量。换句话说,我们已经变得像水中的青蛙一样,我们不断地使用所有这些语言和子语言(我们在一个站点中使用5种不同语言进行编程)使编程生活变得更加复杂,并且当你习惯它时,一旦你停下来,并坚持使用一种语言(在我们的例子中是红宝石),你只需要说一声!
虽然我没有具体的研究来证明这一点,但我认为它只是一种多任务的形式,这是一种已知的邪恶。即https://www.psychologytoday.com/blog/brain-wise/201209/the-true-cost-multi-tasking