Rails中的每个视图的JavaScript文件
根据“不显眼的JavaScript”的build议,我想分开我的JavaScript逻辑
单独的文件。 但是我不知道如何组织它们。
我是不是该:
- 只要把所有的应用程序的JavaScript到Application.js文件,并加载与布局页面? 这是简单的方法,但我最终会臃肿的Application.js。 有些用户可能只想访问几页,但是这个文件会被预加载,这是不好的。
- 还是应该为每个视图创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