Rails中的每个视图的JavaScript文件

根据“不显眼的JavaScript”的build议,我想分开我的JavaScript逻辑
单独的文件。 但是我不知道如何组织它们。

我是不是该:

  1. 只要把所有的应用程序的JavaScript到Application.js文件,并加载与布局页面? 这是简单的方法,但我最终会臃肿的Application.js。 有些用户可能只想访问几页,但是这个文件会被预加载,这是不好的。
  2. 还是应该为每个视图创build一个单独的javaScript文件并独立加载它们? 这就产生了一系列的问题。 如何将每个js文件链接到相应的视图?
    谢谢。

每次在application.js中加载主JavaScript。 现在为不同的需求创build文件。 创build一个form.js文件,一个myfancypart.js文件等。不要在application.html.erb布局中加载它们。 在需要时dynamic加载它们:

application.html.erb:

<%= javascript_include_tag "application" %> <%= yield :javascript_includes %> 

view.html.erb的顶部:

 <% content_for :javascript_includes do %> <%= javascript_include_tag "forms.js" %> <% end %> 

content_for块中的所有内容都将以yield:javascript_includes加载。

我build议把它全部放到一个文件中,然后你可以缩小和gzip。 客户端只需下载一次,因为它将被caching在所有后续请求上。

另一件可能令你感兴趣的事情是链轮,一个JavaScript依赖pipe理器,你可以用gem来安装。 您可以从网站( http://getsprockets.org/ )或从github页面( http://wiki.github.com/sstephenson/sprockets )获取更多关于链轮的信息。 这使得编写大的JavaScript应用程序更容易pipe理。

这改变了Rails 3.1和资产pipe道!

单独的文件是最好的,如你所示。 关于如何引用它们并链接它们的问题将会消失于rails 3.1,目的是将它们全部编译成单个文件进行生产。

可以使用Jammit来包含css和javascripts文件

详细信息: http : //documentcloud.github.com/jammit/

使用:

步骤1:

在assets.yml中添加js文件(参见下面的代码)

JavaScript的:

 footer: - app/javascripts/lib/*.js - app/javascripts/jquery-plugins/*.js - app/javascripts/custom/*.js - app/javascripts/application.js 

标题:

 - app/javascripts/core/*.js - app/javascripts/head/*.js 

第2步:

在应用程序布局中添加简单代码

 <%= include_javascripts :header %> <%= include_javascripts :footer %> 

也许你想使用application_helper

 def javascript(*files) content_for(:head) { javascript_include_tag(*files) } end def stylesheet(*files) content_for(:head) { stylesheet_link_tag(*files) } end