如何让我的Rails应用程序中的application.js变得太大,我该如何构建它?

时间:2011-10-06 22:50:41

标签: jquery ruby-on-rails structure

或者:我如何在我的Rails 3.0.10应用程序的application.js文件中构建代码,或者在各种文件中分发它(逻辑)以便我知道哔哔声是什么上?

目前我的application.js正在运行700行代码。它大部分是平的,有很多jQuery位,如:

//////////// the following code is for the need_email_confirmation page and user_sign_in page
$('body').delegate('#sign_up_resend_confirmation', 'click', function(event) {
  event.preventDefault();
  $('form#new_user').submit();
});

有时我会使用上面的评论分隔符来制作不同的部分,但它似乎有点......(可以说“贫民窟”吗?)。很多像上面这样的代码,都在$(document).ready(function() {...篇内。有时我想防止太多缩进,所以我写了一个顶级函数,如:

$('body').delegate('#new_canvas_item_cancel', "click", hideEditorAndPreventServerHit);
$('body').delegate('#edit_canvas_item_cancel', "click", hideEditorAndPreventServerHit);

function hideEditorAndPreventServerHit(event) {
  $(this).closest('div.new_item_div, div.edit_canvas_item').slideUp();
  event.preventDefault();
}

最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

您没有提到您所使用的特定Rails版本,但如果您可以灵活地保持最新,请尝试利用Rails资产管道。 (需要Rails 3.1)

http://guides.rubyonrails.org/asset_pipeline.html

答案 1 :(得分:0)

看起来你想要Rails 3.1。它引入了一个资产管道,允许您将Javascript和CSS分解为自动编译为生产就绪文件的小文件。

您甚至可以使用自动编译为JS和CSS的Javascript和CSS(Coffeescript,SCSS甚至ERB模板)的抽象。

基本思想是将application.js放在app/assets/javascripts内并包含以下内容以包含该目录中的所有其他JS文件:

//= require_tree .

Rails guide中查看更多内容!