Rails 资产管道 - 自定义 js 文件
Rails asset pipeline - custom js files
我在 application.js 文件中有几个 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
//= require bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js
//= require bootstrap-datepicker/js/locales/bootstrap-datepicker.en.js
//= require summernote/js/summernote.min
//= require moment/moment-with-locales.min
//= require bootstrap-daterangepicker/daterangepicker
//= require bootstrap-timepicker/bootstrap-timepicker.min
//= require codrops-dialogFx/dialogFx
//= require ion-slider/ion.rangeSlider.min
//= require owl-carousel/owl.carousel.min
我在 html.erb 页面中也有一些 js 代码。但我想将所有页面特定的 js 代码放入 1 个文件中。该文件应在页面加载后调用。因为其中一些使用 ruby 代码,例如 google 地图的 init lat lng。此外,还有几个 js 文件,例如;
//= require codrops-dialogFx/dialogFx
//= require ion-slider/ion.rangeSlider.min
在页面加载后工作。所以,它们不起作用,因为我把它们放在 head 标签上;
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
所以如果我,将application.js设计为;
//= require jquery
//= require jquery_ujs
//= require dropzone
//= require jquery.cookie
//= require toastr
然后在 head 标签中调用 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
然后在 body 标签中调用所有其他 js 文件,如
<%= javascript_include_tag 'pace/pace.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'modernizr.custom', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-ui/jquery-ui.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'boostrapv3/js/bootstrap.min', 'data-turbolinks-track' => true %>
....
rails 是否也预编译这些文件?。我在供应商文件中有这些 js 文件。
是 Rails 将预编译它在 javascript_include_tag
中找到的所有文件,假设它可以在您的资产路径中找到它们。
但是,为已在 application.js
中声明的资产添加 javascript_include_tag
是多余的,因为它们实际上会在 HTML.
中加载两次
如果您需要在正常加载路径之外包含资源,您需要告诉 Rails 在您的 application.rb:
中预编译您的自定义文件
config.assets.precompile << 'path/to/asset'
我在 application.js 文件中有几个 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
//= require bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js
//= require bootstrap-datepicker/js/locales/bootstrap-datepicker.en.js
//= require summernote/js/summernote.min
//= require moment/moment-with-locales.min
//= require bootstrap-daterangepicker/daterangepicker
//= require bootstrap-timepicker/bootstrap-timepicker.min
//= require codrops-dialogFx/dialogFx
//= require ion-slider/ion.rangeSlider.min
//= require owl-carousel/owl.carousel.min
我在 html.erb 页面中也有一些 js 代码。但我想将所有页面特定的 js 代码放入 1 个文件中。该文件应在页面加载后调用。因为其中一些使用 ruby 代码,例如 google 地图的 init lat lng。此外,还有几个 js 文件,例如;
//= require codrops-dialogFx/dialogFx
//= require ion-slider/ion.rangeSlider.min
在页面加载后工作。所以,它们不起作用,因为我把它们放在 head 标签上;
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
所以如果我,将application.js设计为;
//= require jquery
//= require jquery_ujs
//= require dropzone
//= require jquery.cookie
//= require toastr
然后在 head 标签中调用 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
然后在 body 标签中调用所有其他 js 文件,如
<%= javascript_include_tag 'pace/pace.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'modernizr.custom', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-ui/jquery-ui.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'boostrapv3/js/bootstrap.min', 'data-turbolinks-track' => true %>
....
rails 是否也预编译这些文件?。我在供应商文件中有这些 js 文件。
是 Rails 将预编译它在 javascript_include_tag
中找到的所有文件,假设它可以在您的资产路径中找到它们。
但是,为已在 application.js
中声明的资产添加 javascript_include_tag
是多余的,因为它们实际上会在 HTML.
如果您需要在正常加载路径之外包含资源,您需要告诉 Rails 在您的 application.rb:
中预编译您的自定义文件config.assets.precompile << 'path/to/asset'