【发布时间】:2017-05-05 09:58:30
【问题描述】:
在 Rails 上,我将所有 JavaScript 文件放入应用程序 js 文件中。
//= require jquery
//= require jquery_ujs
//= require dropzone
//= require jquery.cookie
//= require toastr
//VENDOR JS BEGINS
//= require pace/pace.min
//= require modernizr.custom
//= require jquery-ui/jquery-ui.min
//= require boostrapv3/js/bootstrap.min
//= require jquery/jquery-easy
//= require jquery-unveil/jquery.unveil.min
//= require jquery-bez/jquery.bez.min
//= require jquery-ios-list/jquery.ioslist.min
//= require jquery-actual/jquery.actual.min
//= require jquery-scrollbar/jquery.scrollbar.min
//= require bootstrap-select2/select2.min
//= require switchery/js/switchery.min
//= require imagesloaded/imagesloaded.pkgd.min
//= require jquery-isotope/isotope.pkgd.min
//= require classie/classie
//= require codrops-stepsform/js/stepsForm
//= require bootstrap-datepicker/js/bootstrap-datepicker
然后我在application.html.erb的头部调用javascript为;
...
<head>
..
<%= javascript_include_tag 'application' %>
..
</head>
...
然后我检查网站的速度,建议我把这个 JS 调用带到 body。我知道我应该顺便说一句。但问题在于页面特定的 JS 代码。
想象一下,我有home.html.erb,用户可以在其中选择日期。所以我把datapicker代码放到这个页面中。
如果我将<%= javascript_include_tag 'application' %> 放入正文底部,这一次是因为 jquery 和 datepicker 尚未加载,所以页面特定的 JS 给出了no method error
最好的方法是什么?
【问题讨论】:
-
我猜你没有使用 turbolinks?如果不是,则意味着您正在为每个导航加载整个 html(包括资产)。如果是这种情况,我认为如果您想提高性能,您的首要任务应该是如何只加载一次所有内容(例如使用 turbolinks 或 ajax 应用程序,如 angular)。
标签: javascript jquery ruby-on-rails asset-pipeline