Javascript Application.js超过1 Mb的rails
我有一个rails应用程序,资产编译后的Javascript Application.js超过1 Mb的rails,javascript,ruby-on-rails,ruby,asset-pipeline,Javascript,Ruby On Rails,Ruby,Asset Pipeline,我有一个rails应用程序,资产编译后的application.js占用了超过1MB的空间。这减慢了我整个网站的速度 我使用Apache、Rails 4、jQuery、大量JavaScript和AJAX。如果有人能给我指出正确的方向,我将非常感激 这在您的特定情况下可能不可行,但确实帮助我防止Application.js膨胀 我相信您知道,Application.js会将所有指定的文件(默认情况下,所有文件)编译成一个.js文件,并作为布局的一部分在每个页面中加载(默认情况下也是如此)。通常情况
application.js
占用了超过1MB的空间。这减慢了我整个网站的速度
我使用Apache、Rails 4、jQuery、大量JavaScript和AJAX。如果有人能给我指出正确的方向,我将非常感激 这在您的特定情况下可能不可行,但确实帮助我防止Application.js膨胀
我相信您知道,Application.js会将所有指定的文件(默认情况下,所有文件)编译成一个.js文件,并作为布局的一部分在每个页面中加载(默认情况下也是如此)。通常情况下,这会导致在每个页面中加载完全不必要的自定义脚本,从而降低整个应用程序的速度。我个人认为这种行为不可取。我发现对我的站点有效的只是在Application.js中包含我的“核心”javascript组件(jquery、bootstrap的js库以及与layout.html.erb本身相关的任何脚本),并在页面中指定需要它们的其余部分。例如:
application.js
请注意,它不包括需求树。
。这很重要,因为这是指定包含整个assets/javascripts文件夹的行。本例中的“模板”是定义的.js文件,它属于layout.html.erb
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap-sprockets
//= require template
//= require turbolinks
layout.html.erb
下面是我的布局的最后一部分,就在结束正文标记之前。这将在每个页面上加载application.js,然后加载视图中指定的任何js
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<% if content_for?(:javascript) %>
<%= yield :javascript%>
<% end %>
…或者,更有效地假设您有许多带有自己脚本的页面
Rails.application.config.assets.precompile += %w( pages/* )
总之
我发现这项技术确实有助于减小Application.js的大小,并有助于进行良好的实践。我希望您觉得它有用,如果它与您的问题无关,请道歉。这在您的特定情况下可能不可行,但确实帮助我避免了Application.js膨胀
我相信您知道,Application.js会将所有指定的文件(默认情况下,所有文件)编译成一个.js文件,并作为布局的一部分在每个页面中加载(默认情况下也是如此)。通常情况下,这会导致在每个页面中加载完全不必要的自定义脚本,从而降低整个应用程序的速度。我个人认为这种行为不可取。我发现对我的站点有效的只是在Application.js中包含我的“核心”javascript组件(jquery、bootstrap的js库以及与layout.html.erb本身相关的任何脚本),并在页面中指定需要它们的其余部分。例如:
application.js
请注意,它不包括需求树。
。这很重要,因为这是指定包含整个assets/javascripts文件夹的行。本例中的“模板”是定义的.js文件,它属于layout.html.erb
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap-sprockets
//= require template
//= require turbolinks
layout.html.erb
下面是我的布局的最后一部分,就在结束正文标记之前。这将在每个页面上加载application.js,然后加载视图中指定的任何js
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<% if content_for?(:javascript) %>
<%= yield :javascript%>
<% end %>
…或者,更有效地假设您有许多带有自己脚本的页面
Rails.application.config.assets.precompile += %w( pages/* )
总之
我发现这项技术确实有助于减小Application.js的大小,并有助于进行良好的实践。我希望您觉得它很有用,如果与您的问题无关,请道歉。您是否想过使用CDN托管的jQuery版本?能否提供未编译的application.js
Rails.application.config.assets.precompile += %w( pages/profile.js )
您也可以尝试使用或您是否想过使用CDN托管的jQuery版本?能否提供未编译的application.js
Rails.application.config.assets.precompile += %w( pages/profile.js )
您也可以尝试使用或感谢编辑Akarienta。感谢编辑Akarienta。嗨,康纳,非常感谢您如此详尽的回复。你的建议与我的情况很有关系。我会根据你的建议优化我的application.js文件。嗨,康纳,非常感谢你如此详尽的回复。你的建议与我的情况很有关系。我将根据您的建议优化application.js文件。