回答
关于这个最糟糕的事情是,JavaScript的应该是客户端语言,建立它的服务器端似乎至少尴尬。
除此之外,你会得到,如果你无法预编译的资产主要的性能命中 - 为JavaScript文件中的生产服务器通过你的Rails应用程序去正确渲染ERB每个请求。 (如果.js.erb文件依赖于变量,请求相关值)。如果您避免使用js.erb文件并且仅包含.js文件,那么这些文件是完全静态的,并且可以直接由服务器提供服务,而不需要接触任何应用程序。
自然有一些例外 - 我个人允许自己使用erbized JavaScript文件,以避免硬编码的网址或其他应用程序的常量。对我而言,经验法则是 - 如果erbization不能阻止你进行预编译,并且会使你的代码更干净和更有弹性,那就去做吧。
当然也有一些理由不这样做上述以及 - 在理想的世界我爱我的服务器端应用程序是由另一个,纯静态JS应用程序使用纯API。使用erbized javascript是一个额外的障碍,因为当你的应用程序变得太多时,你的应用程序会分裂成一半。
不只是尴尬。动态JavaScript被认为是安全弱点的根源。 –
警告 - 高度关注的答案。版主可能会删除!
我完全同意我的看法,事实上我对此有点坚持,并且一直在使用react.rb将我们所有的观点变为直接的ruby,没有JS,ERB。
我的具体原因超出了你提到的是这样的:它需要不断地在不同语言之间转移精神力量是巨大的,主要采取由开发者理所当然的。我们只是没有注意到它采取了多少能量。换句话说,我们已经变得像一盆水中的青蛙,而且我们一直使用所有这些语言和子语言(我们在一个站点中使用5种不同的语言编程)编程的生活更加复杂,而当您习惯它时,一旦您停下来,坚持一种语言(在我们的例子中是红宝石),你只是说whe!
虽然我没有具体的研究来证明这一点,我认为它只是多任务的形式,其为已知的邪恶。即https://www.psychologytoday.com/blog/brain-wise/201209/the-true-cost-multi-tasking
我不得不说,我同意BroiSatse在他的回答中提到的例外。我们确实在这种有限的情况下使用了erb,但实际上我们只是扩展了ruby,增加了<% ... %>语法。 –
js.erb是生成的JavaScript和Ruby,是吗?对我而言,这具有代码生成的明显“代码味道”。每当有人诉诸使用一种(比较熟悉的)语言来生成另一种(不太熟悉的)语言时,我会质疑生成的代码的质量。在这种情况下,JavaScript大师可能会查看生成的代码并且正在思考“WTF ?,为什么有人会这样做?”。有可能会有很多工作,但不是经验丰富的JavaScript开发人员如何做到这一点。这可能会导致性能问题,可维护性问题,以及简单的错误代码。
只是我的意见。
linuxdan - 不,不会发生什么,整体代码文件是JavaScript,但它已经混合了一小部分控制javascript代的ruby。例如,你可能有一个ruby循环遍历数据库中的项目,产生一些内联的json常量。 –
这就是我所说的代码生成。 – linuxdan
“每当有人诉诸使用一种(更熟悉的)语言来生成另一种(不太熟悉的)语言时,我会质疑生成的代码的质量。”你的意思是像使用ORM来编写SQL?或者说一个C++编译器来编写汇编器?或者也许CoffeeScript/TypeScript来编写JavaScript? –
- 1. 为什么val + = someOtherValue如此糟糕?
- 2. 为什么在SOA设计中CRUD操作如此糟糕?
- 3. 为什么这个window.innerheight的表现如此糟糕?
- 4. 为什么XCode文档搜索性能如此糟糕?
- 5. 实体框架+ MySQL - 为什么表现如此糟糕?
- 6. 为什么我的tanh激活函数表现如此糟糕?
- 7. C++连接糟糕
- 8. 如何清理糟糕的OpenSSL连接
- 9. 如何修复糟糕的Capistrano部署?
- 10. DOM中的元素堆积如此糟糕吗?
- 11. 为什么Firefox在调整图像大小方面如此糟糕?
- 12. C2dM的糟糕的一面
- 13. 表现非常糟糕
- 14. 最糟糕的SQL有
- 15. 糟糕的画布背景
- 16. “Watin + Gallio + IE”表现糟糕?
- 17. 糟糕的网站响应
- 18. 开局糟糕标签
- 19. Portaudio + Opus:糟糕的音质
- 20. 糟糕的口译员:ruby_bundler_wrapper
- 21. Safari糟糕的帧渲染
- 22. Jquery糟糕的做法
- 23. ADO.NET - 糟糕的做法?
- 24. 订购照片如此糟糕的照片不可见(或很难)
- 25. 列表实现:LinkedList真的表现如此糟糕与ArrayList和TreeList?
- 26. 为什么我的网站在Opera中看起来如此糟糕?因为多个CSS的
- 27. 什么是WPF最糟糕的问题?
- 28. 核心数据和糟糕的表现
- 29. 是case statement1 + statement2:糟糕的编码?
- 30. PHP糟糕的正则表达式
我认为这很棒,尤其是对于构建可以使用或不使用js的应用程序,以及最少的重复。可以访问所有的对象和部分,而不会让生活变得更容易。 –