切割轨道javascripts

时间:2011-02-19 21:54:51

标签: ruby-on-rails

我的问题是关于通过Rails应用程序进行思考。

我有一个丰富的ajax应用程序,它使用google maps api, jquery, jquery ui和许多jquery plugins,例如history, browser, hotkeys and scrollto。 现在它有一个PHP后端,但我想在Rails on Rails中重写它。

从代码中删除所有Rails javascripts(例如javascript_include_tag)并仅使用我的吗?

3 个答案:

答案 0 :(得分:3)

如果您愿意,可以这样做。使用javascript_include_tag的主要(唯一?)原因是为了确保当您的服务器托管的JS脚本发生更改时,您的用户的浏览器会下载新脚本而不是使用其缓存副本脚本,如果他们以前访问过您的网站,他们将拥有该脚本。

基本上,如果文件'public / javascripts / myscript.js'存在,那么

<%= javascript_include_tag 'myscript.js' %>

回到

<script type="text/javascript" src="/javascripts/myscript.js?CHECKSUM"></script>

其中CHECKSUM是文件的最后修改日期或其内容的校验和(我不知道哪个 - 足以说明每当文件发生变化时值会发生变化,欺骗浏览器下载新脚本)。

如果您的服务器上没有相关的javascript文件(比如说您从Google API中提取jQuery),那么Rails将不知道如何生成校验和,结果看起来像常规{ {1}}标记(不含<script>位)。

因此,没有理由在您未自行托管的脚本上使用?CHECKSUM。但是如果你有自己的自定义脚本文件 - 特别是如果这些文件将以适度的频率更改 - 那么你应该考虑使用它;这是确保每个人都能看到该网站真实当前版本的便捷方式。

希望这有帮助!

答案 1 :(得分:1)

我不认为这是正常的,但你绝对可以做到。请记住,任何在rails中自动创建JS代码的东西都可能会破坏。

如果你想保留自动创建JS的功能,你需要编写一个javascript驱动程序,就像rails的jquery驱动程序一样工作......这可能就像你重新发明轮子一样已经在使用jQuery了。

答案 2 :(得分:1)

只要你包含jquery就可以了。您还可以使用jquery-rails gem轻松地将Rails应用程序从默认原型迁移到jquery。然后,像往常一样包含所有现有的javascript文件。