繁体   English   中英

你如何在 Rails 3 中组织 javascript 文件?

[英]How do you organize javascript files in Rails 3?

我正在 Rails 3 中编写 web 应用程序,我使用 JQuery 作为我的 Javascript 框架。 我在应用程序中还没有大量的 javascript,但我开始在页面之间添加转换,我想知道是否有一种使用 [function].js.erb 文件来组织转换的好方法。 例如,我有一个邀请 controller 和一个新的并编辑 function。 有没有办法在文档准备好时使用 views/invitations/new.js.erb 和 views/invitations/edit.js.erb 运行 function? 现在我只是在 AJAX 调用之后使用这些来处理页面操作。

谢谢!

js.erb文件仅用于您之前的使用:ajax 或 js 调用。

我不会推荐它:这应该仍然是客户端恕我直言。 此外,它将在 3.1 中从 Rails 中移开(仍保留为宝石)。

您应该简单地将您的 js 放入您在视图中加载的文件中:基本和整洁。

我同意 apneadiving.. 就个人而言,js.erb 调用增加了很多认知开销。 我所做的是将我的 javvavscripts 加载到部分布局中

*app/views/layouts/_javascripts.html.haml

= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"
= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js'
= javascript_include_tag "http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js" 
= include_javascripts :app
= hoptoad_javascript_notifier
= yield :javascripts

然后我使用Jammit gem 中的jammit命令来缩小,并压缩我的 js 和 css 资产

配置/assets.yml

javascripts:
  app:
    - public/javascripts/rail.js
    - public/javascripts/underscore-min.js
    - public/javascripts/jquery.dump.js
    - public/javascrippts/etc*.js

对于需要自定义页面级 js 的每个页面,我在页面底部添加了一个content_for:javascripts块:

app/views/something/awesome.html.haml

%h1 cool page
Other cool stuff

- content_for :javascripts do
  :javascript
    $(document).ready(function(){
      console.log('This document is REaDY!! and, this page rocks');
      $.ajax({
         url: "#{new_item_path(@item)}",   //ruby is evaluated due to string interpolation
         success: function(data) {
           console.log('Loaded ' + data + ' from ' + #{new_item_path(@item)})
         } 
      });
    };

这让我可以在我的application.html.haml底部render 'layouts/javascripts' /javascript”。html.haml 布局,以及我所有的 javascript 都通过管道传输到页面底部,因此按照Yahoo 这里的建议加快页面加载速度 这也如果需要,让我使用 erb 从 Rails 生成页面级 js 的变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM