为什么 JS.ERB 这么糟糕?
Why JS.ERB is so bad?
我想了解更多信息和具体案例 JS.ERB 在 Rails 应用程序中有多糟糕。
我有一些想法:
- 缺乏灵活性
- 复杂性
- 混合Javascript+Ruby(可能+HTML)代码
最糟糕的是 javascript 应该是客户端语言,而在服务器端构建它至少看起来很尴尬。
除此之外,如果您无法预编译您的资产,您的性能将受到重大影响 - 生产服务器中对 javascript 文件的每个请求都必须通过您的 rails 应用程序才能正确渲染 erb。 (如果您的 .js.erb 文件依赖于变量,请请求相关值)。如果您避免使用 js.erb 文件而只有 .js 文件,那么这些文件是完全静态的,可以直接由服务器提供,而根本不会触及您的应用程序。
自然有几个例外 - 我个人允许自己使用 erbized javascript 文件来避免硬编码 url 或其他应用程序常量。对我来说,经验法则是——如果 erbization 不会阻止你进行预编译,并且会让你的代码更干净、更有弹性,那就去做吧。
当然也有一些不执行上述操作的原因 - 在理想的世界中,我希望我的服务器端应用程序是纯 API 由另一个纯静态 js 应用程序使用的。使用 erbized javascript 是一个额外的障碍,当它增长太多时将你的应用分成两半。
警告 - 高度自以为是的答案。版主大概会删!
我完全同意,事实上我对此有点疯狂,并且一直在使用 react.rb 将我们所有的观点直接转化为 ruby,没有 JS, ERB,完全没有。
除了你提到的之外,我的具体原因是:在不同语言之间不断转换所需的精神力量是巨大的,并且在很大程度上被开发人员认为是理所当然的。我们只是没有注意到它消耗了多少能量。换句话说,我们已经变得像锅里的青蛙一样,我们不断地使用所有这些语言和子语言使我们的编程生活变得更加复杂(我们在一个站点上使用 5 种不同的语言进行编程),当你习惯它时,一旦你停下来,坚持使用一种语言(在我们的例子中是ruby)你只要说哇!
虽然我没有具体的研究来证明这一点,但我认为这只是一种多任务处理的形式,这是一种已知的邪恶。即 https://www.psychologytoday.com/blog/brain-wise/201209/the-true-cost-multi-tasking
js.erb 是 javascript 和 ruby 的生成吧?对我来说,这具有明显的代码生成 "code smell"。每当有人求助于使用一种(更熟悉的)语言来生成另一种(不太熟悉的)语言时,我都会质疑生成代码的质量。在这种情况下,javascript 大师可能会查看生成的代码并思考 "WTF?, why would someone do __ this way?"。可能会有很多事情可行,但经验丰富的 javascript 开发人员不会这样做。这可能会导致性能问题、可维护性问题以及简单的错误代码。
只是我的意见。
我想了解更多信息和具体案例 JS.ERB 在 Rails 应用程序中有多糟糕。
我有一些想法:
- 缺乏灵活性
- 复杂性
- 混合Javascript+Ruby(可能+HTML)代码
最糟糕的是 javascript 应该是客户端语言,而在服务器端构建它至少看起来很尴尬。
除此之外,如果您无法预编译您的资产,您的性能将受到重大影响 - 生产服务器中对 javascript 文件的每个请求都必须通过您的 rails 应用程序才能正确渲染 erb。 (如果您的 .js.erb 文件依赖于变量,请请求相关值)。如果您避免使用 js.erb 文件而只有 .js 文件,那么这些文件是完全静态的,可以直接由服务器提供,而根本不会触及您的应用程序。
自然有几个例外 - 我个人允许自己使用 erbized javascript 文件来避免硬编码 url 或其他应用程序常量。对我来说,经验法则是——如果 erbization 不会阻止你进行预编译,并且会让你的代码更干净、更有弹性,那就去做吧。
当然也有一些不执行上述操作的原因 - 在理想的世界中,我希望我的服务器端应用程序是纯 API 由另一个纯静态 js 应用程序使用的。使用 erbized javascript 是一个额外的障碍,当它增长太多时将你的应用分成两半。
警告 - 高度自以为是的答案。版主大概会删!
我完全同意,事实上我对此有点疯狂,并且一直在使用 react.rb 将我们所有的观点直接转化为 ruby,没有 JS, ERB,完全没有。
除了你提到的之外,我的具体原因是:在不同语言之间不断转换所需的精神力量是巨大的,并且在很大程度上被开发人员认为是理所当然的。我们只是没有注意到它消耗了多少能量。换句话说,我们已经变得像锅里的青蛙一样,我们不断地使用所有这些语言和子语言使我们的编程生活变得更加复杂(我们在一个站点上使用 5 种不同的语言进行编程),当你习惯它时,一旦你停下来,坚持使用一种语言(在我们的例子中是ruby)你只要说哇!
虽然我没有具体的研究来证明这一点,但我认为这只是一种多任务处理的形式,这是一种已知的邪恶。即 https://www.psychologytoday.com/blog/brain-wise/201209/the-true-cost-multi-tasking
js.erb 是 javascript 和 ruby 的生成吧?对我来说,这具有明显的代码生成 "code smell"。每当有人求助于使用一种(更熟悉的)语言来生成另一种(不太熟悉的)语言时,我都会质疑生成代码的质量。在这种情况下,javascript 大师可能会查看生成的代码并思考 "WTF?, why would someone do __ this way?"。可能会有很多事情可行,但经验丰富的 javascript 开发人员不会这样做。这可能会导致性能问题、可维护性问题以及简单的错误代码。
只是我的意见。