Ruby on Rails Gon Gem vs. cookies或常规AJAX请求

jvr*_*sty 7 javascript cookies ajax ruby-on-rails gon

我已经在Ruby on Rails上编程了一段时间,并且能够在我的javascript代码中轻松地从我的控制器访问数据,作为初学者,我遇到了Gon Gem.它很简单地解决了这个问题,但对于RoR初学者来说有点神秘,说实话.

深入了解gem的源代码,我现在了解它是如何工作的:您要求gon传递给JS 的变量由gem跟踪并插入到由<script />标记呈现的视图上的erb标记中

<%= Gon::Base.render_data %>
Run Code Online (Sandbox Code Playgroud)

这使得gon对象可以在JS中使用,因为它将它作为window属性注入.

我的问题是,这种做法有多好?坦率地说,将JS代码动态注入站点只是为了从浏览器中的服务器访问一些数据似乎有点可疑.这两种方式都不是更好的做法

  • 只是通过RoR服务器端的端点和JS前端的AJAX调用来获取数据?

要么

  • 在RoR控制器上的相应操作期间在cookie上设置所需的数据,并从JS中读取它?

kwe*_*rle 0

嗯。

这取决于您想要多少次调用、您的数据有多大、您想要使用多少 gon 功能(更新等)。做事的方式有很多错误。有几种方法是正确的。gon 对于某些用例非常有用 - 特别是从 HTML 迁移到大量使用 js 的应用程序。